@@ -785,6 +785,156 @@ void main() {
785
785
});
786
786
});
787
787
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
+
788
938
group ('drawTouchedSpotsIndicator()' , () {
789
939
List <LineIndexDrawingInfo > getDrawingInfo (LineChartData data) {
790
940
final lineIndexDrawingInfo = < LineIndexDrawingInfo > [];
0 commit comments