Skip to content

Commit 7e6fa91

Browse files
committed
Add some unit-tests in line_chart_painter_test.dart
1 parent 6a4a679 commit 7e6fa91

File tree

1 file changed

+150
-0
lines changed

1 file changed

+150
-0
lines changed

test/chart/line_chart/line_chart_painter_test.dart

+150
Original file line numberDiff line numberDiff line change
@@ -785,6 +785,156 @@ void main() {
785785
});
786786
});
787787

788+
group('drawErrorIndicatorData()', () {
789+
test('test - not showing error indicators', () {
790+
const viewSize = Size(400, 400);
791+
792+
final barData = LineChartBarData(
793+
spots: [
794+
const FlSpot(
795+
1,
796+
1,
797+
xError: FlErrorRange(lowerBy: 1, upperBy: 1),
798+
),
799+
],
800+
errorIndicatorData: const FlErrorIndicatorData(
801+
show: false,
802+
),
803+
);
804+
805+
final data = LineChartData(
806+
lineBarsData: [
807+
barData,
808+
],
809+
);
810+
811+
final lineChartPainter = LineChartPainter();
812+
final holder =
813+
PaintHolder<LineChartData>(data, data, TextScaler.noScaling);
814+
final mockCanvasWrapper = MockCanvasWrapper();
815+
when(mockCanvasWrapper.size).thenAnswer((realInvocation) => viewSize);
816+
when(mockCanvasWrapper.canvas).thenReturn(MockCanvas());
817+
818+
lineChartPainter.drawErrorIndicatorData(
819+
mockCanvasWrapper,
820+
barData,
821+
holder,
822+
);
823+
824+
verifyNever(
825+
mockCanvasWrapper.drawErrorIndicator(any, any, any, any, any),
826+
);
827+
});
828+
829+
test('test 2 - showing error indicators with single call', () {
830+
const viewSize = Size(400, 400);
831+
832+
final barData = LineChartBarData(
833+
spots: [
834+
const FlSpot(
835+
1,
836+
1,
837+
xError: FlErrorRange(lowerBy: 1, upperBy: 1),
838+
),
839+
],
840+
);
841+
842+
final data = LineChartData(
843+
lineBarsData: [
844+
barData,
845+
],
846+
);
847+
848+
final lineChartPainter = LineChartPainter();
849+
final holder =
850+
PaintHolder<LineChartData>(data, data, TextScaler.noScaling);
851+
final mockCanvasWrapper = MockCanvasWrapper();
852+
when(mockCanvasWrapper.size).thenAnswer((realInvocation) => viewSize);
853+
when(mockCanvasWrapper.canvas).thenReturn(MockCanvas());
854+
855+
lineChartPainter.drawErrorIndicatorData(
856+
mockCanvasWrapper,
857+
barData,
858+
holder,
859+
);
860+
861+
verify(
862+
mockCanvasWrapper.drawErrorIndicator(any, any, any, any, any),
863+
).called(1);
864+
});
865+
866+
test('test 3 - different values for different spots', () {
867+
const viewSize = Size(400, 400);
868+
869+
final colors = [
870+
Colors.red,
871+
Colors.green,
872+
Colors.blue,
873+
Colors.yellow,
874+
Colors.purple,
875+
];
876+
final spots = [
877+
const FlSpot(1, 1, xError: FlErrorRange.symmetric(1)),
878+
const FlSpot(2, 2, xError: FlErrorRange.symmetric(2)),
879+
const FlSpot(3, 3, xError: FlErrorRange.symmetric(3)),
880+
const FlSpot(4, 2, xError: FlErrorRange.symmetric(2)),
881+
const FlSpot(5, 1, xError: FlErrorRange.symmetric(1)),
882+
];
883+
final barData = LineChartBarData(
884+
spots: spots,
885+
errorIndicatorData: FlErrorIndicatorData(
886+
painter: (input) => FlSimpleErrorPainter(
887+
lineColor: colors[input.spotIndex],
888+
lineWidth: input.spotIndex.toDouble(),
889+
capLength: 10,
890+
crossAlignment: input.spotIndex / spots.length,
891+
showErrorTexts: true,
892+
errorTextDirection: TextDirection.rtl,
893+
errorTextStyle: TextStyle(
894+
color: colors[input.spotIndex],
895+
fontSize: input.spot.y,
896+
),
897+
),
898+
),
899+
);
900+
901+
final data = LineChartData(
902+
lineBarsData: [
903+
barData,
904+
],
905+
);
906+
907+
final lineChartPainter = LineChartPainter();
908+
final holder =
909+
PaintHolder<LineChartData>(data, data, TextScaler.noScaling);
910+
final mockCanvasWrapper = MockCanvasWrapper();
911+
when(mockCanvasWrapper.size).thenAnswer((realInvocation) => viewSize);
912+
when(mockCanvasWrapper.canvas).thenReturn(MockCanvas());
913+
914+
lineChartPainter.drawErrorIndicatorData(
915+
mockCanvasWrapper,
916+
barData,
917+
holder,
918+
);
919+
920+
final result = verify(
921+
mockCanvasWrapper.drawErrorIndicator(captureAny, any, any, any, any),
922+
)..called(5);
923+
for (var i = 0; i < result.captured.length; i++) {
924+
final captured = result.captured[i] as FlSimpleErrorPainter;
925+
expect(captured.lineColor, colors[i]);
926+
expect(captured.lineWidth, i.toDouble());
927+
expect(captured.capLength, 10);
928+
expect(captured.crossAlignment, i / spots.length);
929+
expect(captured.showErrorTexts, true);
930+
expect(captured.errorTextDirection, TextDirection.rtl);
931+
expect(captured.errorTextStyle.color, colors[i]);
932+
expect(captured.errorTextStyle.fontSize, spots[i].y);
933+
}
934+
verifyNever(mockCanvasWrapper.drawText(any, any, any));
935+
});
936+
});
937+
788938
group('drawTouchedSpotsIndicator()', () {
789939
List<LineIndexDrawingInfo> getDrawingInfo(LineChartData data) {
790940
final lineIndexDrawingInfo = <LineIndexDrawingInfo>[];

0 commit comments

Comments
 (0)