1
2
3
4
5
6
7
8
9
10
11 package psiprobe.jfreechart;
12
13 import static org.junit.jupiter.api.Assertions.assertEquals;
14 import static org.junit.jupiter.api.Assertions.assertFalse;
15 import static org.junit.jupiter.api.Assertions.assertNotEquals;
16 import static org.junit.jupiter.api.Assertions.assertTrue;
17 import static org.mockito.Mockito.mock;
18 import static org.mockito.Mockito.spy;
19 import static org.mockito.Mockito.times;
20 import static org.mockito.Mockito.verify;
21
22 import java.awt.Color;
23 import java.awt.Graphics2D;
24 import java.awt.Paint;
25 import java.awt.Shape;
26 import java.io.ByteArrayInputStream;
27 import java.io.ByteArrayOutputStream;
28 import java.io.ObjectInputStream;
29 import java.io.ObjectOutputStream;
30
31 import org.junit.jupiter.api.Test;
32
33
34
35
36 class XYLine3DRendererTest {
37
38
39
40
41 @Test
42 void testDefaultValues() {
43 XYLine3DRenderer renderer = new XYLine3DRenderer();
44 assertEquals(XYLine3DRenderer.DEFAULT_X_OFFSET, renderer.getXOffset());
45 assertEquals(XYLine3DRenderer.DEFAULT_Y_OFFSET, renderer.getYOffset());
46 assertEquals(XYLine3DRenderer.DEFAULT_WALL_PAINT, renderer.getWallPaint());
47 assertEquals(3, renderer.getPassCount());
48 }
49
50
51
52
53 @Test
54 void testSettersAndGetters() {
55 XYLine3DRenderer renderer = new XYLine3DRenderer();
56 renderer.setXOffset(20.0);
57 renderer.setYOffset(15.0);
58 Paint paint = Color.BLUE;
59 renderer.setWallPaint(paint);
60
61 assertEquals(20.0, renderer.getXOffset());
62 assertEquals(15.0, renderer.getYOffset());
63 assertEquals(paint, renderer.getWallPaint());
64 }
65
66
67
68
69 @Test
70 void testEquals() {
71 XYLine3DRenderer r1 = new XYLine3DRenderer();
72 XYLine3DRenderer r2 = new XYLine3DRenderer();
73 assertEquals(r1, r2);
74
75 r1.setXOffset(99.0);
76 assertNotEquals(r1, r2);
77 r2.setXOffset(99.0);
78 assertEquals(r1, r2);
79
80 r1.setWallPaint(Color.RED);
81 assertNotEquals(r1, r2);
82 r2.setWallPaint(Color.RED);
83 assertEquals(r1, r2);
84 }
85
86
87
88
89
90
91 @Test
92 void testSerialization() throws Exception {
93 XYLine3DRenderer renderer = new XYLine3DRenderer();
94 renderer.setXOffset(5.5);
95 renderer.setYOffset(7.7);
96 renderer.setWallPaint(Color.GREEN);
97
98 ByteArrayOutputStream baos = new ByteArrayOutputStream();
99 try (ObjectOutputStream oos = new ObjectOutputStream(baos)) {
100 oos.writeObject(renderer);
101 }
102
103 ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
104 XYLine3DRenderer deserialized = (XYLine3DRenderer) ois.readObject();
105
106 assertEquals(renderer, deserialized);
107 assertEquals(Color.GREEN, deserialized.getWallPaint());
108 }
109
110
111
112
113 @Test
114 void testDrawFirstPassShape_ShadowPass() {
115 XYLine3DRenderer renderer = new XYLine3DRenderer();
116 Graphics2D g2 = mock(Graphics2D.class);
117 Shape shape = mock(Shape.class);
118
119 renderer.setWallPaint(Color.BLACK);
120 renderer.drawFirstPassShape(g2, 0, 0, 0, shape);
121
122 verify(g2).setPaint(Color.BLACK);
123 verify(g2, times(1)).draw(shape);
124 }
125
126
127
128
129 @Test
130 void testDrawFirstPassShape_NonShadowPass() {
131 XYLine3DRenderer renderer = spy(new XYLine3DRenderer());
132 Graphics2D g2 = mock(Graphics2D.class);
133 Shape shape = mock(Shape.class);
134
135 renderer.drawFirstPassShape(g2, 2, 0, 0, shape);
136 verify(renderer, times(1)).drawFirstPassShape(g2, 2, 0, 0, shape);
137 }
138
139
140
141
142 @Test
143 void testHashCodeConsistency() {
144 XYLine3DRenderer r1 = new XYLine3DRenderer();
145 XYLine3DRenderer r2 = new XYLine3DRenderer();
146 assertEquals(r1.hashCode(), r2.hashCode());
147
148 r1.setXOffset(42.0);
149 assertNotEquals(r1.hashCode(), r2.hashCode());
150 r2.setXOffset(42.0);
151 assertEquals(r1.hashCode(), r2.hashCode());
152 }
153
154
155
156
157
158
159 @Test
160 void testClone() throws Exception {
161 XYLine3DRenderer renderer = new XYLine3DRenderer();
162 renderer.setXOffset(1.1);
163 renderer.setYOffset(2.2);
164 renderer.setWallPaint(Color.MAGENTA);
165
166 XYLine3DRenderer clone = (XYLine3DRenderer) renderer.clone();
167 assertEquals(renderer, clone);
168 assertEquals(renderer.getWallPaint(), clone.getWallPaint());
169 assertNotEquals(System.identityHashCode(renderer), System.identityHashCode(clone));
170 }
171
172
173
174
175 @Test
176 void testSetWallPaintNull() {
177 XYLine3DRenderer renderer = new XYLine3DRenderer();
178 renderer.setWallPaint(null);
179 assertEquals(null, renderer.getWallPaint());
180 }
181
182
183
184
185 @Test
186 void testSetNegativeOffsets() {
187 XYLine3DRenderer renderer = new XYLine3DRenderer();
188 renderer.setXOffset(-10.0);
189 renderer.setYOffset(-5.0);
190 assertEquals(-10.0, renderer.getXOffset());
191 assertEquals(-5.0, renderer.getYOffset());
192 }
193
194
195
196
197 @Test
198 void testEqualsWithNullAndOtherType() {
199 XYLine3DRenderer renderer = new XYLine3DRenderer();
200 assertNotEquals(renderer, null);
201 assertNotEquals(renderer, "not a renderer");
202 }
203
204
205
206
207 @Test
208 void testEqualsDifferentYOffset() {
209 XYLine3DRenderer r1 = new XYLine3DRenderer();
210 XYLine3DRenderer r2 = new XYLine3DRenderer();
211 r1.setYOffset(10.0);
212 assertNotEquals(r1, r2);
213 r2.setYOffset(10.0);
214 assertEquals(r1, r2);
215 }
216
217
218
219
220 @Test
221 void testEqualsDifferentWallPaint() {
222 XYLine3DRenderer r1 = new XYLine3DRenderer();
223 XYLine3DRenderer r2 = new XYLine3DRenderer();
224 r1.setWallPaint(Color.BLUE);
225 r2.setWallPaint(Color.RED);
226 assertNotEquals(r1, r2);
227 }
228
229
230
231
232
233
234 @Test
235 void testSerializationWithNullWallPaint() throws Exception {
236 XYLine3DRenderer renderer = new XYLine3DRenderer();
237 renderer.setWallPaint(null);
238
239 ByteArrayOutputStream baos = new ByteArrayOutputStream();
240 try (ObjectOutputStream oos = new ObjectOutputStream(baos)) {
241 oos.writeObject(renderer);
242 }
243
244 ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
245 XYLine3DRenderer deserialized = (XYLine3DRenderer) ois.readObject();
246
247 assertEquals(renderer, deserialized);
248 assertEquals(null, deserialized.getWallPaint());
249 }
250
251
252
253
254 @Test
255 void testDefaultConstructorFields() {
256 XYLine3DRenderer renderer = new XYLine3DRenderer();
257 assertEquals(XYLine3DRenderer.DEFAULT_X_OFFSET, renderer.getXOffset());
258 assertEquals(XYLine3DRenderer.DEFAULT_Y_OFFSET, renderer.getYOffset());
259 assertEquals(XYLine3DRenderer.DEFAULT_WALL_PAINT, renderer.getWallPaint());
260 }
261
262
263
264
265 @Test
266 void testIsItemPass() {
267 XYLine3DRenderer renderer = new XYLine3DRenderer();
268
269 assertFalse(renderer.isItemPass(1));
270 assertTrue(renderer.isItemPass(2));
271 assertFalse(renderer.isItemPass(0));
272 }
273
274
275
276
277
278
279 @Test
280 void testIsLinePass() throws Exception {
281 XYLine3DRenderer renderer = new XYLine3DRenderer();
282 var method = XYLine3DRenderer.class.getDeclaredMethod("isLinePass", int.class);
283 method.setAccessible(true);
284
285
286 assertTrue((Boolean) method.invoke(renderer, 0));
287 assertTrue((Boolean) method.invoke(renderer, 1));
288 assertFalse((Boolean) method.invoke(renderer, 2));
289 assertFalse((Boolean) method.invoke(renderer, -1));
290 assertFalse((Boolean) method.invoke(renderer, 3));
291 }
292
293 }