Skip to content

Commit bfcec80

Browse files
authored
PAINTROID-751: Write Integration tests for EraserTool (Catrobat#100)
1 parent 3e9d0f3 commit bfcec80

File tree

1 file changed

+170
-0
lines changed

1 file changed

+170
-0
lines changed
Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:flutter_riverpod/flutter_riverpod.dart';
3+
import 'package:flutter_test/flutter_test.dart';
4+
import 'package:integration_test/integration_test.dart';
5+
import 'package:paintroid/app.dart';
6+
import 'package:paintroid/core/tools/tool_data.dart';
7+
8+
import '../utils/test_utils.dart';
9+
10+
void main() {
11+
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
12+
13+
const String testIDStr = String.fromEnvironment('id', defaultValue: '-1');
14+
final testID = int.tryParse(testIDStr) ?? testIDStr;
15+
16+
late Widget sut;
17+
18+
setUp(() async {
19+
sut = ProviderScope(
20+
child: App(
21+
showOnboardingPage: false,
22+
),
23+
);
24+
});
25+
26+
if (testID == -1 || testID == 0) {
27+
testWidgets('[ERASER_TOOL]: erase one point ', (WidgetTester tester) async {
28+
UIInteraction.initialize(tester);
29+
await tester.pumpWidget(sut);
30+
await UIInteraction.createNewImage();
31+
UIInteraction.setColor(Colors.black);
32+
await UIInteraction.selectTool(ToolData.BRUSH.name);
33+
34+
var color = await UIInteraction.getPixelColor(
35+
CanvasPosition.centerX,
36+
CanvasPosition.centerY,
37+
);
38+
expect(color, Colors.transparent);
39+
40+
await UIInteraction.tapAt(CanvasPosition.center);
41+
color = await UIInteraction.getPixelColor(
42+
CanvasPosition.centerX, CanvasPosition.centerY);
43+
expect(color, Colors.black);
44+
45+
await UIInteraction.selectTool(ToolData.ERASER.name);
46+
await UIInteraction.tapAt(CanvasPosition.center);
47+
48+
color = await UIInteraction.getPixelColor(
49+
CanvasPosition.centerX, CanvasPosition.centerY);
50+
expect(color, Colors.transparent);
51+
});
52+
}
53+
54+
if (testID == -1 || testID == 1) {
55+
testWidgets('[ERASER_TOOL]: eraser erases multiple points',
56+
(WidgetTester tester) async {
57+
UIInteraction.initialize(tester);
58+
await tester.pumpWidget(sut);
59+
await UIInteraction.createNewImage();
60+
UIInteraction.setColor(Colors.black);
61+
await UIInteraction.selectTool(ToolData.BRUSH.name);
62+
63+
await UIInteraction.tapAt(CanvasPosition.center);
64+
await UIInteraction.tapAt(CanvasPosition.topCenter);
65+
await UIInteraction.tapAt(CanvasPosition.bottomCenter);
66+
67+
var color = await UIInteraction.getPixelColor(
68+
CanvasPosition.centerX, CanvasPosition.centerY);
69+
expect(color, Colors.black);
70+
color = await UIInteraction.getPixelColor(
71+
CanvasPosition.centerX, CanvasPosition.top);
72+
expect(color, Colors.black);
73+
color = await UIInteraction.getPixelColor(
74+
CanvasPosition.centerX, CanvasPosition.bottom);
75+
expect(color, Colors.black);
76+
77+
await UIInteraction.selectTool(ToolData.ERASER.name);
78+
await UIInteraction.tapAt(CanvasPosition.center);
79+
80+
color = await UIInteraction.getPixelColor(
81+
CanvasPosition.centerX, CanvasPosition.centerY);
82+
expect(color, Colors.transparent);
83+
color = await UIInteraction.getPixelColor(
84+
CanvasPosition.centerX, CanvasPosition.top);
85+
expect(color, Colors.black);
86+
color = await UIInteraction.getPixelColor(
87+
CanvasPosition.centerX, CanvasPosition.bottom);
88+
expect(color, Colors.black);
89+
});
90+
}
91+
92+
if (testID == -1 || testID == 2) {
93+
testWidgets('[ERASER_TOOL]: eraser undo and redo functionality',
94+
(WidgetTester tester) async {
95+
UIInteraction.initialize(tester);
96+
await tester.pumpWidget(sut);
97+
await UIInteraction.createNewImage();
98+
UIInteraction.setColor(Colors.black);
99+
await UIInteraction.selectTool(ToolData.BRUSH.name);
100+
101+
await UIInteraction.tapAt(CanvasPosition.center);
102+
var color = await UIInteraction.getPixelColor(
103+
CanvasPosition.centerX, CanvasPosition.centerY);
104+
expect(color, Colors.black);
105+
106+
await UIInteraction.selectTool(ToolData.ERASER.name);
107+
await UIInteraction.tapAt(CanvasPosition.center);
108+
color = await UIInteraction.getPixelColor(
109+
CanvasPosition.centerX, CanvasPosition.centerY);
110+
expect(color, Colors.transparent);
111+
112+
await UIInteraction.clickUndo();
113+
color = await UIInteraction.getPixelColor(
114+
CanvasPosition.centerX, CanvasPosition.centerY);
115+
expect(color, Colors.black);
116+
117+
await UIInteraction.clickRedo();
118+
color = await UIInteraction.getPixelColor(
119+
CanvasPosition.centerX, CanvasPosition.centerY);
120+
expect(color, Colors.transparent);
121+
});
122+
}
123+
124+
if (testID == -1 || testID == 3) {
125+
testWidgets('[ERASER_TOOL]: eraser does not affect empty canvas',
126+
(WidgetTester tester) async {
127+
UIInteraction.initialize(tester);
128+
await tester.pumpWidget(sut);
129+
await UIInteraction.createNewImage();
130+
await UIInteraction.selectTool(ToolData.ERASER.name);
131+
132+
var color = await UIInteraction.getPixelColor(
133+
CanvasPosition.centerX, CanvasPosition.centerY);
134+
expect(color, Colors.transparent);
135+
136+
await UIInteraction.tapAt(CanvasPosition.center);
137+
color = await UIInteraction.getPixelColor(
138+
CanvasPosition.centerX, CanvasPosition.centerY);
139+
expect(color, Colors.transparent);
140+
});
141+
}
142+
143+
if (testID == -1 || testID == 4) {
144+
testWidgets('[ERASER_TOOL]: eraser erases with drag gesture',
145+
(WidgetTester tester) async {
146+
UIInteraction.initialize(tester);
147+
await tester.pumpWidget(sut);
148+
await UIInteraction.createNewImage();
149+
UIInteraction.setColor(Colors.black);
150+
await UIInteraction.selectTool(ToolData.BRUSH.name);
151+
152+
await UIInteraction.dragFromTo(
153+
CanvasPosition.centerLeft, CanvasPosition.centerRight);
154+
var color = await UIInteraction.getPixelColor(
155+
CanvasPosition.centerX, CanvasPosition.centerY);
156+
expect(color, Colors.black);
157+
158+
await UIInteraction.selectTool(ToolData.ERASER.name);
159+
160+
await UIInteraction.dragFromTo(
161+
CanvasPosition.center, CanvasPosition.centerRight);
162+
color = await UIInteraction.getPixelColor(
163+
CanvasPosition.centerX, CanvasPosition.centerY);
164+
expect(color, Colors.transparent);
165+
color = await UIInteraction.getPixelColor(
166+
CanvasPosition.halfwayLeft, CanvasPosition.centerY);
167+
expect(color, Colors.black);
168+
});
169+
}
170+
}

0 commit comments

Comments
 (0)