Skip to content

Commit 900e115

Browse files
committed
Update TextVisualizer
1 parent 0aec3d1 commit 900e115

File tree

2 files changed

+107
-2
lines changed

2 files changed

+107
-2
lines changed

core/src/org/testar/monkey/alayer/visualizers/TextVisualizer.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@
3030

3131
package org.testar.monkey.alayer.visualizers;
3232

33+
import org.apache.logging.log4j.Level;
34+
import org.apache.logging.log4j.LogManager;
35+
import org.apache.logging.log4j.Logger;
3336
import org.testar.monkey.Assert;
3437
import org.testar.monkey.Pair;
3538
import org.testar.monkey.alayer.Canvas;
@@ -43,6 +46,9 @@
4346
public final class TextVisualizer implements Visualizer {
4447

4548
private static final long serialVersionUID = 9156304220974950751L;
49+
50+
protected static final Logger logger = LogManager.getLogger();
51+
4652
final Position pos;
4753
final String text;
4854
final Pen pen;
@@ -59,16 +65,21 @@ public String getText() {
5965
}
6066

6167
public TextVisualizer withText(String newText, Pen newPen) {
68+
Assert.notNull(newText, newPen);
6269
return new TextVisualizer(this.pos, newText, newPen);
6370
}
6471

6572
public void run(State state, Canvas cv, Pen pen) {
6673
Assert.notNull(state, cv, pen);
6774
pen = Pen.merge(pen, this.pen);
6875
try {
69-
Point p = pos.apply(state);
76+
Point p = pos.apply(state);
7077
Pair<Double, Double> m = cv.textMetrics(pen, text);
7178
cv.text(pen, p.x() - m.left() / 2, p.y() - m.right() / 2, 0, text);
72-
} catch (PositionException pe) {}
79+
} catch (PositionException pe) {
80+
logger.log(Level.ERROR, pe);
81+
} catch (NullPointerException ne) {
82+
logger.log(Level.ERROR, ne);
83+
}
7384
}
7485
}
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package org.testar.monkey.alayer.visualizers;
2+
3+
import static org.junit.Assert.assertTrue;
4+
5+
import org.junit.Test;
6+
import org.mockito.Mockito;
7+
import org.testar.monkey.Pair;
8+
import org.testar.monkey.alayer.AbsolutePosition;
9+
import org.testar.monkey.alayer.Canvas;
10+
import org.testar.monkey.alayer.Pen;
11+
import org.testar.stub.StateStub;
12+
13+
public class TextVisualizerTest {
14+
15+
private final String originalText = "original_text";
16+
private final String updatedText = "updated_text";
17+
18+
private final Pen originalPen = Pen.PEN_BLUE;
19+
private final Pen updatedPen = Pen.PEN_RED;
20+
21+
@Test
22+
public void test_correct_original_textVisualizer() {
23+
TextVisualizer textVisualizer = new TextVisualizer(new AbsolutePosition(1, 1), originalText, originalPen);
24+
assertTrue(textVisualizer.getText().equals(originalText));
25+
}
26+
27+
@Test(expected = IllegalArgumentException.class)
28+
public void test_original_null_pos() {
29+
new TextVisualizer(null, originalText, originalPen);
30+
}
31+
32+
@Test(expected = IllegalArgumentException.class)
33+
public void test_original_null_text() {
34+
new TextVisualizer(new AbsolutePosition(1, 1), null, originalPen);
35+
}
36+
37+
@Test(expected = IllegalArgumentException.class)
38+
public void test_original_null_pen() {
39+
new TextVisualizer(new AbsolutePosition(1, 1), originalText, null);
40+
}
41+
42+
@Test
43+
public void test_correct_updated_textVisualizer() {
44+
TextVisualizer textVisualizer = new TextVisualizer(new AbsolutePosition(1, 1), originalText, originalPen);
45+
textVisualizer = textVisualizer.withText(updatedText, updatedPen);
46+
assertTrue(textVisualizer.getText().equals(updatedText));
47+
}
48+
49+
@Test(expected = IllegalArgumentException.class)
50+
public void test_updated_null_text() {
51+
TextVisualizer textVisualizer = new TextVisualizer(new AbsolutePosition(1, 1), originalText, originalPen);
52+
textVisualizer.withText(null, updatedPen);
53+
}
54+
55+
@Test(expected = IllegalArgumentException.class)
56+
public void test_updated_null_pen() {
57+
TextVisualizer textVisualizer = new TextVisualizer(new AbsolutePosition(1, 1), originalText, originalPen);
58+
textVisualizer.withText(updatedText, null);
59+
}
60+
61+
@Test
62+
public void test_run_visualizer() {
63+
TextVisualizer textVisualizer = new TextVisualizer(new AbsolutePosition(1, 1), originalText, originalPen);
64+
Canvas mockCanvas = Mockito.mock(Canvas.class);
65+
Mockito.when(mockCanvas.textMetrics(Mockito.any(Pen.class), Mockito.anyString())).thenReturn(new Pair<Double, Double>(2.0, 2.0));
66+
textVisualizer.run(new StateStub(), mockCanvas, updatedPen);
67+
}
68+
69+
public void test_run_catched_null_position() {
70+
TextVisualizer textVisualizer = new TextVisualizer(new AbsolutePosition(1, 1), originalText, originalPen);
71+
Canvas mockCanvas = Mockito.mock(Canvas.class);
72+
Mockito.when(mockCanvas.textMetrics(Mockito.any(Pen.class), Mockito.anyString())).thenReturn(null);
73+
textVisualizer.run(new StateStub(), mockCanvas, updatedPen);
74+
}
75+
76+
@Test(expected = IllegalArgumentException.class)
77+
public void test_run_null_state() {
78+
TextVisualizer textVisualizer = new TextVisualizer(new AbsolutePosition(1, 1), originalText, originalPen);
79+
textVisualizer.run(null, Mockito.mock(Canvas.class), updatedPen);
80+
}
81+
82+
@Test(expected = IllegalArgumentException.class)
83+
public void test_run_null_canvas() {
84+
TextVisualizer textVisualizer = new TextVisualizer(new AbsolutePosition(1, 1), originalText, originalPen);
85+
textVisualizer.run(new StateStub(), null, updatedPen);
86+
}
87+
88+
@Test(expected = IllegalArgumentException.class)
89+
public void test_run_null_pen() {
90+
TextVisualizer textVisualizer = new TextVisualizer(new AbsolutePosition(1, 1), originalText, originalPen);
91+
textVisualizer.run(new StateStub(), Mockito.mock(Canvas.class), null);
92+
}
93+
94+
}

0 commit comments

Comments
 (0)