@@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
2
2
import 'package:flutter/services.dart' ;
3
3
import 'package:flutter_test/flutter_test.dart' ;
4
4
import 'package:formdator/formdator.dart' ;
5
- import 'package:mask_text_input_formatter/mask_text_input_formatter.dart' ;
6
5
import 'package:well_formed/src/core/well_formed.dart' ;
7
6
import 'package:well_formed/src/numeric/int_field.dart' ;
8
7
@@ -728,35 +727,139 @@ Future<void> main() async {
728
727
}
729
728
});
730
729
731
- /// non-digit characters must be filtered out by the input formatter so that
732
- /// they do not appear in the form field.
733
- testWidgets ('inputFormatters' , (WidgetTester tester) async {
734
- final formatters = [
735
- MaskTextInputFormatter (
736
- mask: '###.###.###-##' ,
737
- filter: {"#" : RegExp (r'\d' )},
738
- ),
739
- ];
740
- await tester.pumpWidget (
741
- WellFormed .app ([
742
- IntField (key: kDef, inputFormatters: formatters),
743
- IntField .min (1 , key: kMin, inputFormatters: formatters),
744
- IntField .pos (key: kPos, inputFormatters: formatters),
745
- IntField .max (10 , key: kMax, inputFormatters: formatters),
746
- IntField .neg (key: kNeg, inputFormatters: formatters),
747
- IntField .range (15 , 25 , key: kRange, inputFormatters: formatters),
748
- ]),
749
- );
750
- await tester.pumpAndSettle ();
751
- for (var i = 0 ; i < keys.length; ++ i) {
752
- final unmasked = '$i $i $i $i $i $i $i $i $i $i $i ' ; // E.g. 11111111111
753
- final masked = '$i $i $i .$i $i $i .$i $i $i -$i $i ' ; // E.g. 111.111.111-11
754
- await tester.enterText (find.byKey (keys[i]), unmasked);
755
- await tester.pumpAndSettle ();
756
- final elem = tester.widget (find.widgetWithText (TextField , masked));
757
- expect ((elem as TextField ).inputFormatters, formatters);
758
- expect (find.text (masked), findsOneWidget);
759
- }
730
+ /// The minus '-' and plus '+' signs must be accepted along with the digits
731
+ /// 0–9.
732
+ group ('inputFormatters' , () {
733
+ group ('no prefix' , () {
734
+ const masked = '12.34/5' ;
735
+ const unmasked = '12345' ;
736
+ testWidgets ('default ctor' , (WidgetTester tester) async {
737
+ await tester.pumpWidget (WellFormed .app ([IntField (key: kDef)]));
738
+ await tester.enterText (find.byKey (kDef), masked);
739
+ await tester.pumpAndSettle ();
740
+ expect (find.widgetWithText (TextFormField , unmasked), findsOneWidget);
741
+ });
742
+ testWidgets ('min ctor' , (WidgetTester tester) async {
743
+ await tester.pumpWidget (WellFormed .app ([IntField .min (1 , key: kMin)]));
744
+ await tester.enterText (find.byKey (kMin), masked);
745
+ await tester.pumpAndSettle ();
746
+ expect (find.widgetWithText (TextFormField , unmasked), findsOneWidget);
747
+ });
748
+ testWidgets ('pos ctor' , (WidgetTester tester) async {
749
+ await tester.pumpWidget (WellFormed .app ([IntField .pos (key: kMin)]));
750
+ await tester.enterText (find.byKey (kMin), masked);
751
+ await tester.pumpAndSettle ();
752
+ expect (find.widgetWithText (TextFormField , unmasked), findsOneWidget);
753
+ });
754
+ testWidgets ('max ctor' , (WidgetTester tester) async {
755
+ await tester
756
+ .pumpWidget (WellFormed .app ([IntField .max (99999 , key: kMax)]));
757
+ await tester.enterText (find.byKey (kMax), masked);
758
+ await tester.pumpAndSettle ();
759
+ expect (find.widgetWithText (TextFormField , unmasked), findsOneWidget);
760
+ });
761
+ testWidgets ('neg ctor' , (WidgetTester tester) async {
762
+ await tester.pumpWidget (WellFormed .app ([IntField .neg (key: kMax)]));
763
+ await tester.enterText (find.byKey (kMax), masked);
764
+ await tester.pumpAndSettle ();
765
+ expect (find.widgetWithText (TextFormField , unmasked), findsOneWidget);
766
+ });
767
+ testWidgets ('range ctor' , (WidgetTester tester) async {
768
+ await tester.pumpWidget (
769
+ WellFormed .app ([IntField .range (1 , 99999 , key: kRange)]),
770
+ );
771
+ await tester.enterText (find.byKey (kRange), masked);
772
+ await tester.pumpAndSettle ();
773
+ expect (find.widgetWithText (TextFormField , unmasked), findsOneWidget);
774
+ });
775
+ });
776
+ group ('plus sign prefix' , () {
777
+ const masked = '+12.34/5' ;
778
+ const unmasked = '+12345' ;
779
+ const mod = '12345' ; // modulus: no sign.
780
+
781
+ testWidgets ('default ctor' , (WidgetTester tester) async {
782
+ await tester.pumpWidget (WellFormed .app ([IntField (key: kDef)]));
783
+ await tester.enterText (find.byKey (kDef), masked);
784
+ await tester.pumpAndSettle ();
785
+ expect (find.widgetWithText (TextFormField , unmasked), findsOneWidget);
786
+ });
787
+ testWidgets ('min ctor' , (WidgetTester tester) async {
788
+ await tester.pumpWidget (WellFormed .app ([IntField .min (1 , key: kMin)]));
789
+ await tester.enterText (find.byKey (kMin), masked);
790
+ await tester.pumpAndSettle ();
791
+ expect (find.widgetWithText (TextFormField , unmasked), findsOneWidget);
792
+ });
793
+ testWidgets ('pos ctor' , (WidgetTester tester) async {
794
+ await tester.pumpWidget (WellFormed .app ([IntField .pos (key: kMin)]));
795
+ await tester.enterText (find.byKey (kMin), masked);
796
+ await tester.pumpAndSettle ();
797
+ expect (find.widgetWithText (TextFormField , unmasked), findsOneWidget);
798
+ });
799
+ testWidgets ('max ctor' , (WidgetTester tester) async {
800
+ await tester
801
+ .pumpWidget (WellFormed .app ([IntField .max (99999 , key: kMax)]));
802
+ await tester.enterText (find.byKey (kMax), masked);
803
+ await tester.pumpAndSettle ();
804
+ expect (find.widgetWithText (TextFormField , unmasked), findsOneWidget);
805
+ });
806
+ testWidgets ('neg ctor' , (WidgetTester tester) async {
807
+ await tester.pumpWidget (WellFormed .app ([IntField .neg (key: kMin)]));
808
+ await tester.enterText (find.byKey (kMin), masked);
809
+ await tester.pumpAndSettle ();
810
+ expect (find.widgetWithText (TextFormField , mod), findsOneWidget);
811
+ });
812
+ testWidgets ('range ctor' , (WidgetTester tester) async {
813
+ await tester.pumpWidget (
814
+ WellFormed .app ([IntField .range (1 , 99999 , key: kRange)]),
815
+ );
816
+ await tester.enterText (find.byKey (kRange), masked);
817
+ await tester.pumpAndSettle ();
818
+ expect (find.widgetWithText (TextFormField , unmasked), findsOneWidget);
819
+ });
820
+ });
821
+ group ('minus sign prefix' , () {
822
+ const masked = '-12.34/5' ;
823
+ const unmasked = '-12345' ;
824
+ const mod = '12345' ;
825
+
826
+ testWidgets ('default ctor' , (WidgetTester tester) async {
827
+ await tester.pumpWidget (WellFormed .app ([IntField (key: kDef)]));
828
+ await tester.enterText (find.byKey (kDef), masked);
829
+ await tester.pumpAndSettle ();
830
+ expect (find.widgetWithText (TextFormField , unmasked), findsOneWidget);
831
+ });
832
+ testWidgets ('min ctor' , (WidgetTester tester) async {
833
+ await tester
834
+ .pumpWidget (WellFormed .app ([IntField .min (- 99999 , key: kMin)]));
835
+ await tester.enterText (find.byKey (kMin), masked);
836
+ await tester.pumpAndSettle ();
837
+ expect (find.widgetWithText (TextFormField , unmasked), findsOneWidget);
838
+ });
839
+
840
+ /// Must get rid of the minus '-' sign.
841
+ testWidgets ('pos ctor' , (WidgetTester tester) async {
842
+ await tester.pumpWidget (WellFormed .app ([IntField .pos (key: kMin)]));
843
+ await tester.enterText (find.byKey (kMin), masked);
844
+ await tester.pumpAndSettle ();
845
+ expect (find.widgetWithText (TextFormField , mod), findsOneWidget);
846
+ });
847
+ testWidgets ('max ctor' , (WidgetTester tester) async {
848
+ await tester
849
+ .pumpWidget (WellFormed .app ([IntField .max (99999 , key: kMax)]));
850
+ await tester.enterText (find.byKey (kMax), masked);
851
+ await tester.pumpAndSettle ();
852
+ expect (find.widgetWithText (TextFormField , unmasked), findsOneWidget);
853
+ });
854
+ testWidgets ('range ctor' , (WidgetTester tester) async {
855
+ await tester.pumpWidget (
856
+ WellFormed .app ([IntField .range (1 , 99999 , key: kRange)]),
857
+ );
858
+ await tester.enterText (find.byKey (kRange), masked);
859
+ await tester.pumpAndSettle ();
860
+ expect (find.widgetWithText (TextFormField , unmasked), findsOneWidget);
861
+ });
862
+ });
760
863
});
761
864
testWidgets ('enabled' , (WidgetTester tester) async {
762
865
const enabled = false ;
0 commit comments