1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 package org.slf4j;
26
27 import java.util.Iterator;
28
29 import junit.framework.TestCase;
30
31 import org.slf4j.helpers.BasicMarkerFactory;
32
33
34
35
36
37
38
39 public class BasicMarkerTest extends TestCase {
40 static final String BLUE_STR = "BLUE";
41 static final String RED_STR = "RED";
42 static final String GREEN_STR = "GREEN";
43 static final String COMP_STR = "COMP";
44 static final String MULTI_COMP_STR = "MULTI_COMP";
45 static final String PARENT_MARKER_STR = "PARENT_MARKER";
46 static final String CHILD_MARKER_STR = "CHILD_MARKER";
47 static final String NOT_CONTAINED_MARKER_STR = "NOT_CONTAINED";
48
49 final IMarkerFactory factory;
50 final Marker blue;
51 final Marker red;
52 final Marker green;
53 final Marker comp;
54 final Marker multiComp;
55
56 short diff = Differentiator.getDiffentiator();
57
58 public BasicMarkerTest() {
59 factory = new BasicMarkerFactory();
60
61 blue = factory.getMarker(BLUE_STR);
62 red = factory.getMarker(RED_STR);
63 green = factory.getMarker(GREEN_STR);
64 comp = factory.getMarker(COMP_STR);
65 comp.add(blue);
66
67 multiComp = factory.getMarker(MULTI_COMP_STR);
68 multiComp.add(green);
69 multiComp.add(comp);
70 }
71
72 public void testPrimitive() {
73 assertEquals(BLUE_STR, blue.getName());
74 assertTrue(blue.contains(blue));
75
76 Marker blue2 = factory.getMarker(BLUE_STR);
77 assertEquals(BLUE_STR, blue2.getName());
78 assertEquals(blue, blue2);
79 assertTrue(blue.contains(blue2));
80 assertTrue(blue2.contains(blue));
81 }
82
83 public void testPrimitiveByName() {
84 assertTrue(blue.contains(BLUE_STR));
85 }
86
87 public void testComposite() {
88 assertTrue(comp.contains(comp));
89 assertTrue(comp.contains(blue));
90 }
91
92 public void testCompositeByName() {
93 assertTrue(comp.contains(COMP_STR));
94 assertTrue(comp.contains(BLUE_STR));
95 }
96
97 public void testMultiComposite() {
98 assertTrue(multiComp.contains(comp));
99 assertTrue(multiComp.contains(blue));
100 assertTrue(multiComp.contains(green));
101 assertFalse(multiComp.contains(red));
102 }
103
104 public void testMultiCompositeByName() {
105 assertTrue(multiComp.contains(COMP_STR));
106 assertTrue(multiComp.contains(BLUE_STR));
107 assertTrue(multiComp.contains(GREEN_STR));
108 assertFalse(multiComp.contains(RED_STR));
109 }
110
111 public void testMultiAdd() {
112 Marker parent = factory.getMarker(PARENT_MARKER_STR);
113 Marker child = factory.getMarker(CHILD_MARKER_STR);
114 for (int i = 0; i < 10; i++) {
115 parent.add(child);
116 }
117
118
119 Iterator iterator = parent.iterator();
120 assertTrue(iterator.hasNext());
121 assertEquals(CHILD_MARKER_STR, iterator.next().toString());
122 assertFalse(iterator.hasNext());
123 }
124
125 public void testAddRemove() {
126 final String NEW_PREFIX = "NEW_";
127 Marker parent = factory.getMarker(NEW_PREFIX + PARENT_MARKER_STR);
128 Marker child = factory.getMarker(NEW_PREFIX + CHILD_MARKER_STR);
129 assertFalse(parent.contains(child));
130 assertFalse(parent.contains(NEW_PREFIX + CHILD_MARKER_STR));
131 assertFalse(parent.remove(child));
132
133 parent.add(child);
134
135 assertTrue(parent.contains(child));
136 assertTrue(parent.contains(NEW_PREFIX + CHILD_MARKER_STR));
137
138 assertTrue(parent.remove(child));
139
140 assertFalse(parent.contains(child));
141 assertFalse(parent.contains(NEW_PREFIX + CHILD_MARKER_STR));
142 assertFalse(parent.remove(child));
143 }
144
145 public void testSelfRecursion() {
146 final String diffPrefix = "NEW_"+diff;
147 final String PARENT_NAME = diffPrefix + PARENT_MARKER_STR;
148 final String NOT_CONTAINED_NAME = diffPrefix + NOT_CONTAINED_MARKER_STR;
149 Marker parent = factory.getMarker(PARENT_NAME);
150 Marker notContained = factory.getMarker(NOT_CONTAINED_NAME);
151 parent.add(parent);
152 assertTrue(parent.contains(parent));
153 assertTrue(parent.contains(PARENT_NAME));
154 assertFalse(parent.contains(notContained));
155 assertFalse(parent.contains(NOT_CONTAINED_MARKER_STR));
156 }
157
158 public void testIndirectRecursion() {
159 final String diffPrefix = "NEW_"+diff;
160 final String PARENT_NAME=diffPrefix+PARENT_MARKER_STR;
161 final String CHILD_NAME=diffPrefix+CHILD_MARKER_STR;
162 final String NOT_CONTAINED_NAME=diffPrefix+NOT_CONTAINED_MARKER_STR;
163
164 Marker parent = factory.getMarker(PARENT_NAME);
165 Marker child = factory.getMarker(CHILD_NAME);
166 Marker notContained = factory.getMarker(NOT_CONTAINED_NAME);
167
168 parent.add(child);
169 child.add(parent);
170 assertTrue(parent.contains(parent));
171 assertTrue(parent.contains(child));
172 assertTrue(parent.contains(PARENT_NAME));
173 assertTrue(parent.contains(CHILD_NAME));
174 assertFalse(parent.contains(notContained));
175 assertFalse(parent.contains(NOT_CONTAINED_MARKER_STR));
176 }
177
178 }