Skip to content

Commit da080f9

Browse files
dhiyaaulauliyaaimaNNeo
authored andcommitted
Add widget tests
1 parent 5f782b6 commit da080f9

File tree

2 files changed

+315
-56
lines changed

2 files changed

+315
-56
lines changed

test/chart/base/axis_chart/axis_chart_helper_test.dart

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import 'package:fl_chart/fl_chart.dart';
12
import 'package:fl_chart/src/chart/base/axis_chart/axis_chart_helper.dart';
23
import 'package:flutter_test/flutter_test.dart';
34

@@ -112,4 +113,92 @@ void main() {
112113
expect(results[3], 130);
113114
});
114115
});
116+
117+
group('calcFitInsideOffset', () {
118+
group('not overflowed', () {
119+
test('vertical axis', () {
120+
const result = Offset.zero;
121+
122+
final offset = AxisChartHelper().calcFitInsideOffset(
123+
axisSide: AxisSide.left,
124+
childSize: 10,
125+
parentAxisSize: 100,
126+
axisPosition: 20,
127+
distanceFromEdge: 0,
128+
);
129+
130+
expect(offset, result);
131+
});
132+
133+
test('horizontal axis', () {
134+
const result = Offset.zero;
135+
136+
final offset = AxisChartHelper().calcFitInsideOffset(
137+
axisSide: AxisSide.bottom,
138+
childSize: 10,
139+
parentAxisSize: 100,
140+
axisPosition: 20,
141+
distanceFromEdge: 0,
142+
);
143+
144+
expect(offset, result);
145+
});
146+
});
147+
148+
group('overflowed', () {
149+
test('vertical axis at start', () {
150+
const result = Offset(0, 5);
151+
152+
final offset = AxisChartHelper().calcFitInsideOffset(
153+
axisSide: AxisSide.left,
154+
childSize: 10,
155+
parentAxisSize: 100,
156+
axisPosition: 0,
157+
distanceFromEdge: 0,
158+
);
159+
160+
expect(offset, result);
161+
});
162+
test('vertical axis at end', () {
163+
const result = Offset(0, -5);
164+
165+
final offset = AxisChartHelper().calcFitInsideOffset(
166+
axisSide: AxisSide.left,
167+
childSize: 10,
168+
parentAxisSize: 100,
169+
axisPosition: 100,
170+
distanceFromEdge: 0,
171+
);
172+
173+
expect(offset, result);
174+
});
175+
176+
test('horizontal axis at start', () {
177+
const result = Offset(5, 0);
178+
179+
final offset = AxisChartHelper().calcFitInsideOffset(
180+
axisSide: AxisSide.bottom,
181+
childSize: 10,
182+
parentAxisSize: 100,
183+
axisPosition: 0,
184+
distanceFromEdge: 0,
185+
);
186+
187+
expect(offset, result);
188+
});
189+
test('horizontal axis at end', () {
190+
const result = Offset(-5, 0);
191+
192+
final offset = AxisChartHelper().calcFitInsideOffset(
193+
axisSide: AxisSide.bottom,
194+
childSize: 10,
195+
parentAxisSize: 100,
196+
axisPosition: 100,
197+
distanceFromEdge: 0,
198+
);
199+
200+
expect(offset, result);
201+
});
202+
});
203+
});
115204
}

test/chart/base/axis_chart/axis_chart_widgets_test.dart

Lines changed: 226 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -3,75 +3,245 @@ import 'package:flutter/material.dart';
33
import 'package:flutter_test/flutter_test.dart';
44

55
void main() {
6-
testWidgets(
7-
'SideTitleWidget left',
8-
(WidgetTester tester) async {
9-
await tester.pumpWidget(
10-
const MaterialApp(
11-
home: Scaffold(
12-
body: SideTitleWidget(
13-
axisSide: AxisSide.left,
14-
child: Text('1s'),
6+
group(
7+
'SideTitle without FitInside enabled',
8+
() {
9+
testWidgets(
10+
'SideTitleWidget left',
11+
(WidgetTester tester) async {
12+
await tester.pumpWidget(
13+
const MaterialApp(
14+
home: Scaffold(
15+
body: SideTitleWidget(
16+
axisSide: AxisSide.left,
17+
child: Text('1s'),
18+
),
19+
),
1520
),
16-
),
17-
),
21+
);
22+
expect(find.byType(Transform), findsAtLeastNWidgets(2));
23+
expect(find.byType(Container), findsOneWidget);
24+
expect(find.text('1s'), findsOneWidget);
25+
},
1826
);
19-
expect(find.byType(Container), findsOneWidget);
20-
expect(find.text('1s'), findsOneWidget);
21-
},
22-
);
2327

24-
testWidgets(
25-
'SideTitleWidget top',
26-
(WidgetTester tester) async {
27-
await tester.pumpWidget(
28-
const MaterialApp(
29-
home: Scaffold(
30-
body: SideTitleWidget(
31-
axisSide: AxisSide.top,
32-
child: Text('1s'),
28+
testWidgets(
29+
'SideTitleWidget top',
30+
(WidgetTester tester) async {
31+
await tester.pumpWidget(
32+
const MaterialApp(
33+
home: Scaffold(
34+
body: SideTitleWidget(
35+
axisSide: AxisSide.top,
36+
child: Text('1s'),
37+
),
38+
),
3339
),
34-
),
35-
),
40+
);
41+
expect(find.byType(Transform), findsAtLeastNWidgets(2));
42+
expect(find.byType(Container), findsOneWidget);
43+
expect(find.text('1s'), findsOneWidget);
44+
},
3645
);
37-
expect(find.byType(Container), findsOneWidget);
38-
expect(find.text('1s'), findsOneWidget);
39-
},
40-
);
4146

42-
testWidgets(
43-
'SideTitleWidget right',
44-
(WidgetTester tester) async {
45-
await tester.pumpWidget(
46-
const MaterialApp(
47-
home: Scaffold(
48-
body: SideTitleWidget(
49-
axisSide: AxisSide.right,
50-
child: Text('1s'),
47+
testWidgets(
48+
'SideTitleWidget right',
49+
(WidgetTester tester) async {
50+
await tester.pumpWidget(
51+
const MaterialApp(
52+
home: Scaffold(
53+
body: SideTitleWidget(
54+
axisSide: AxisSide.right,
55+
child: Text('1s'),
56+
),
57+
),
5158
),
52-
),
53-
),
59+
);
60+
expect(find.byType(Transform), findsAtLeastNWidgets(2));
61+
expect(find.byType(Container), findsOneWidget);
62+
expect(find.text('1s'), findsOneWidget);
63+
},
64+
);
65+
66+
testWidgets(
67+
'SideTitleWidget bottom',
68+
(WidgetTester tester) async {
69+
const widgetKey = Key('SideTitleWidget');
70+
const sideTitleWidget = SideTitleWidget(
71+
key: widgetKey,
72+
axisSide: AxisSide.bottom,
73+
child: Text('1s'),
74+
);
75+
76+
await tester.pumpWidget(
77+
const MaterialApp(
78+
home: Scaffold(
79+
body: sideTitleWidget,
80+
),
81+
),
82+
);
83+
84+
final element =
85+
tester.element(find.byKey(widgetKey)) as StatefulElement;
86+
final state = element.state as State<SideTitleWidget>;
87+
expect(state.widget, equals(sideTitleWidget));
88+
expect(element.renderObject!.attached, isTrue);
89+
90+
expect(find.byType(Transform), findsAtLeastNWidgets(2));
91+
expect(find.byType(Container), findsOneWidget);
92+
expect(find.text('1s'), findsOneWidget);
93+
94+
await tester.pump();
95+
},
5496
);
55-
expect(find.byType(Container), findsOneWidget);
56-
expect(find.text('1s'), findsOneWidget);
5797
},
5898
);
99+
group(
100+
'SideTitle with FitInside enabled',
101+
() {
102+
testWidgets(
103+
'SideTitleWidget left with FitInsideEnabled on Top Side',
104+
(WidgetTester tester) async {
105+
const widgetKey = Key('SideTitleWidget');
106+
const sideTitleWidget = SideTitleWidget(
107+
key: widgetKey,
108+
axisSide: AxisSide.left,
109+
fitInside: SideTitleFitInsideData(
110+
enabled: true,
111+
axisPosition: 0,
112+
parentAxisSize: 100,
113+
distanceFromEdge: 0,
114+
),
115+
child: Text('A Long Text'),
116+
);
59117

60-
testWidgets(
61-
'SideTitleWidget bottom',
62-
(WidgetTester tester) async {
63-
await tester.pumpWidget(
64-
const MaterialApp(
65-
home: Scaffold(
66-
body: SideTitleWidget(
67-
axisSide: AxisSide.bottom,
68-
child: Text('1s'),
118+
await tester.pumpWidget(
119+
const MaterialApp(
120+
home: Scaffold(
121+
body: sideTitleWidget,
122+
),
69123
),
70-
),
71-
),
124+
);
125+
126+
final element =
127+
tester.element(find.byKey(widgetKey)) as StatefulElement;
128+
final state = element.state as State<SideTitleWidget>;
129+
expect(state.widget, equals(sideTitleWidget));
130+
expect(element.renderObject!.attached, isTrue);
131+
132+
expect(find.byType(Transform), findsAtLeastNWidgets(2));
133+
expect(find.byType(Container), findsOneWidget);
134+
expect(find.text('A Long Text'), findsOneWidget);
135+
},
136+
);
137+
138+
testWidgets(
139+
'SideTitleWidget left with FitInsideEnabled on Bottom Side',
140+
(WidgetTester tester) async {
141+
const widgetKey = Key('SideTitleWidget');
142+
const sideTitleWidget = SideTitleWidget(
143+
key: widgetKey,
144+
axisSide: AxisSide.left,
145+
fitInside: SideTitleFitInsideData(
146+
enabled: true,
147+
axisPosition: 100,
148+
parentAxisSize: 100,
149+
distanceFromEdge: 0,
150+
),
151+
child: Text('A Long Text'),
152+
);
153+
154+
await tester.pumpWidget(
155+
const MaterialApp(
156+
home: Scaffold(
157+
body: sideTitleWidget,
158+
),
159+
),
160+
);
161+
162+
final element =
163+
tester.element(find.byKey(widgetKey)) as StatefulElement;
164+
final state = element.state as State<SideTitleWidget>;
165+
expect(state.widget, equals(sideTitleWidget));
166+
expect(element.renderObject!.attached, isTrue);
167+
168+
expect(find.byType(Transform), findsAtLeastNWidgets(2));
169+
expect(find.byType(Container), findsOneWidget);
170+
expect(find.text('A Long Text'), findsOneWidget);
171+
},
172+
);
173+
174+
testWidgets(
175+
'SideTitleWidget bottom with FitInsideEnabled on Left Side',
176+
(WidgetTester tester) async {
177+
const widgetKey = Key('SideTitleWidget');
178+
const sideTitleWidget = SideTitleWidget(
179+
key: widgetKey,
180+
axisSide: AxisSide.bottom,
181+
fitInside: SideTitleFitInsideData(
182+
enabled: true,
183+
axisPosition: 0,
184+
parentAxisSize: 100,
185+
distanceFromEdge: 0,
186+
),
187+
child: Text('A Long Text'),
188+
);
189+
190+
await tester.pumpWidget(
191+
const MaterialApp(
192+
home: Scaffold(
193+
body: sideTitleWidget,
194+
),
195+
),
196+
);
197+
198+
final element =
199+
tester.element(find.byKey(widgetKey)) as StatefulElement;
200+
final state = element.state as State<SideTitleWidget>;
201+
expect(state.widget, equals(sideTitleWidget));
202+
expect(element.renderObject!.attached, isTrue);
203+
204+
expect(find.byType(Transform), findsAtLeastNWidgets(2));
205+
expect(find.byType(Container), findsOneWidget);
206+
expect(find.text('A Long Text'), findsOneWidget);
207+
},
208+
);
209+
210+
testWidgets(
211+
'SideTitleWidget bottom with FitInsideEnabled on Right Side',
212+
(WidgetTester tester) async {
213+
const widgetKey = Key('SideTitleWidget');
214+
const sideTitleWidget = SideTitleWidget(
215+
key: widgetKey,
216+
axisSide: AxisSide.bottom,
217+
fitInside: SideTitleFitInsideData(
218+
enabled: true,
219+
axisPosition: 100,
220+
parentAxisSize: 100,
221+
distanceFromEdge: 0,
222+
),
223+
child: Text('A Long Text'),
224+
);
225+
226+
await tester.pumpWidget(
227+
const MaterialApp(
228+
home: Scaffold(
229+
body: sideTitleWidget,
230+
),
231+
),
232+
);
233+
234+
final element =
235+
tester.element(find.byKey(widgetKey)) as StatefulElement;
236+
final state = element.state as State<SideTitleWidget>;
237+
expect(state.widget, equals(sideTitleWidget));
238+
expect(element.renderObject!.attached, isTrue);
239+
240+
expect(find.byType(Transform), findsAtLeastNWidgets(2));
241+
expect(find.byType(Container), findsOneWidget);
242+
expect(find.text('A Long Text'), findsOneWidget);
243+
},
72244
);
73-
expect(find.byType(Container), findsOneWidget);
74-
expect(find.text('1s'), findsOneWidget);
75245
},
76246
);
77247
}

0 commit comments

Comments
 (0)