@@ -34,6 +34,8 @@ mod tests {
34
34
let validator = EcmaRegexValidator :: new ( EcmaVersion :: ES2018 ) ;
35
35
assert_eq ! ( validator. validate_flags( "gimgu" ) , Err ( "Duplicated flag g" . to_string( ) ) ) ;
36
36
assert_eq ! ( validator. validate_flags( "migg" ) , Err ( "Duplicated flag g" . to_string( ) ) ) ;
37
+ assert_eq ! ( validator. validate_flags( "igi" ) , Err ( "Duplicated flag i" . to_string( ) ) ) ;
38
+
37
39
assert_eq ! ( validator. validate_flags( "ii" ) , Err ( "Duplicated flag i" . to_string( ) ) ) ;
38
40
assert_eq ! ( validator. validate_flags( "mm" ) , Err ( "Duplicated flag m" . to_string( ) ) ) ;
39
41
assert_eq ! ( validator. validate_flags( "ss" ) , Err ( "Duplicated flag s" . to_string( ) ) ) ;
@@ -45,29 +47,26 @@ mod tests {
45
47
fn invalid_flags ( ) {
46
48
let validator = EcmaRegexValidator :: new ( EcmaVersion :: ES2018 ) ;
47
49
assert_eq ! ( validator. validate_flags( "gimuf" ) , Err ( "Invalid flag f" . to_string( ) ) ) ;
50
+ assert_eq ! ( validator. validate_flags( "gI" ) , Err ( "Invalid flag I" . to_string( ) ) ) ;
48
51
assert_eq ! ( validator. validate_flags( "a" ) , Err ( "Invalid flag a" . to_string( ) ) ) ;
52
+ assert_eq ! ( validator. validate_flags( "1" ) , Err ( "Invalid flag 1" . to_string( ) ) ) ;
49
53
}
50
54
51
55
#[ test]
52
56
fn validate_pattern_test ( ) {
53
57
let mut validator = EcmaRegexValidator :: new ( EcmaVersion :: ES2018 ) ;
58
+ assert_eq ! ( validator. validate_pattern( "" , false ) , Ok ( ( ) ) ) ;
54
59
assert_eq ! ( validator. validate_pattern( "[abc]de|fg" , false ) , Ok ( ( ) ) ) ;
55
60
assert_eq ! ( validator. validate_pattern( "[abc]de|fg" , true ) , Ok ( ( ) ) ) ;
56
61
assert_eq ! ( validator. validate_pattern( "^.$" , false ) , Ok ( ( ) ) ) ;
57
62
assert_eq ! ( validator. validate_pattern( "^.$" , true ) , Ok ( ( ) ) ) ;
58
63
assert_eq ! ( validator. validate_pattern( "foo\\ [bar" , false ) , Ok ( ( ) ) ) ;
59
64
assert_eq ! ( validator. validate_pattern( "foo\\ [bar" , true ) , Ok ( ( ) ) ) ;
60
65
61
- assert_ne ! ( validator. validate_pattern( "^[z-a]$" , false ) , Ok ( ( ) ) ) ;
62
- assert_ne ! ( validator. validate_pattern( "0{2,1}" , false ) , Ok ( ( ) ) ) ;
63
66
assert_ne ! ( validator. validate_pattern( "\\ " , false ) , Ok ( ( ) ) ) ;
64
67
assert_ne ! ( validator. validate_pattern( "a**" , false ) , Ok ( ( ) ) ) ;
65
68
assert_ne ! ( validator. validate_pattern( "++a" , false ) , Ok ( ( ) ) ) ;
66
69
assert_ne ! ( validator. validate_pattern( "?a" , false ) , Ok ( ( ) ) ) ;
67
- assert_ne ! ( validator. validate_pattern( "x{1}{1,}" , false ) , Ok ( ( ) ) ) ;
68
- assert_ne ! ( validator. validate_pattern( "x{1,2}{1}" , false ) , Ok ( ( ) ) ) ;
69
- assert_ne ! ( validator. validate_pattern( "x{1,}{1}" , false ) , Ok ( ( ) ) ) ;
70
- assert_ne ! ( validator. validate_pattern( "x{0,1}{1,}" , false ) , Ok ( ( ) ) ) ;
71
70
assert_ne ! ( validator. validate_pattern( "a***" , false ) , Ok ( ( ) ) ) ;
72
71
assert_ne ! ( validator. validate_pattern( "a++" , false ) , Ok ( ( ) ) ) ;
73
72
assert_ne ! ( validator. validate_pattern( "a+++" , false ) , Ok ( ( ) ) ) ;
@@ -76,6 +75,65 @@ mod tests {
76
75
assert_ne ! ( validator. validate_pattern( "*a" , false ) , Ok ( ( ) ) ) ;
77
76
assert_ne ! ( validator. validate_pattern( "**a" , false ) , Ok ( ( ) ) ) ;
78
77
assert_ne ! ( validator. validate_pattern( "+a" , false ) , Ok ( ( ) ) ) ;
78
+ assert_ne ! ( validator. validate_pattern( "[{-z]" , false ) , Ok ( ( ) ) ) ;
79
+ assert_ne ! ( validator. validate_pattern( "[a--z]" , false ) , Ok ( ( ) ) ) ;
80
+
81
+ assert_ne ! ( validator. validate_pattern( "0{2,1}" , false ) , Ok ( ( ) ) ) ;
82
+ assert_ne ! ( validator. validate_pattern( "x{1}{1,}" , false ) , Ok ( ( ) ) ) ;
83
+ assert_ne ! ( validator. validate_pattern( "x{1,2}{1}" , false ) , Ok ( ( ) ) ) ;
84
+ assert_ne ! ( validator. validate_pattern( "x{1,}{1}" , false ) , Ok ( ( ) ) ) ;
85
+ assert_ne ! ( validator. validate_pattern( "x{0,1}{1,}" , false ) , Ok ( ( ) ) ) ;
86
+
87
+ assert_ne ! ( validator. validate_pattern( "\\ 1(\\ P{P\0 [}()/" , true ) , Ok ( ( ) ) ) ;
88
+ }
89
+
90
+ #[ test]
91
+ fn character_range_order ( ) {
92
+ let mut validator = EcmaRegexValidator :: new ( EcmaVersion :: ES2018 ) ;
93
+ assert_ne ! ( validator. validate_pattern( "^[z-a]$" , false ) , Ok ( ( ) ) ) ;
94
+ assert_ne ! ( validator. validate_pattern( "[b-ac-e]" , false ) , Ok ( ( ) ) ) ;
95
+ assert_ne ! ( validator. validate_pattern( "[c-eb-a]" , false ) , Ok ( ( ) ) ) ;
96
+ assert_ne ! ( validator. validate_pattern( "[a-dc-b]" , false ) , Ok ( ( ) ) ) ;
97
+
98
+ assert_ne ! ( validator. validate_pattern( "[\\ 10b-G]" , false ) , Ok ( ( ) ) ) ;
99
+ assert_ne ! ( validator. validate_pattern( "[\\ ad-G]" , false ) , Ok ( ( ) ) ) ;
100
+ assert_ne ! ( validator. validate_pattern( "[\\ bd-G]" , false ) , Ok ( ( ) ) ) ;
101
+ assert_ne ! ( validator. validate_pattern( "[\\ Bd-G]" , false ) , Ok ( ( ) ) ) ;
102
+ assert_ne ! ( validator. validate_pattern( "[\\ db-G]" , false ) , Ok ( ( ) ) ) ;
103
+ assert_ne ! ( validator. validate_pattern( "[\\ Db-G]" , false ) , Ok ( ( ) ) ) ;
104
+ assert_ne ! ( validator. validate_pattern( "[\\ sb-G]" , false ) , Ok ( ( ) ) ) ;
105
+ assert_ne ! ( validator. validate_pattern( "[\\ Sb-G]" , false ) , Ok ( ( ) ) ) ;
106
+ assert_ne ! ( validator. validate_pattern( "[\\ wb-G]" , false ) , Ok ( ( ) ) ) ;
107
+ assert_ne ! ( validator. validate_pattern( "[\\ Wb-G]" , false ) , Ok ( ( ) ) ) ;
108
+ assert_ne ! ( validator. validate_pattern( "[\\ 0b-G]" , false ) , Ok ( ( ) ) ) ;
109
+ assert_ne ! ( validator. validate_pattern( "[\\ td-G]" , false ) , Ok ( ( ) ) ) ;
110
+ assert_ne ! ( validator. validate_pattern( "[\\ nd-G]" , false ) , Ok ( ( ) ) ) ;
111
+ assert_ne ! ( validator. validate_pattern( "[\\ vd-G]" , false ) , Ok ( ( ) ) ) ;
112
+ assert_ne ! ( validator. validate_pattern( "[\\ fd-G]" , false ) , Ok ( ( ) ) ) ;
113
+ assert_ne ! ( validator. validate_pattern( "[\\ rd-G]" , false ) , Ok ( ( ) ) ) ;
114
+ assert_ne ! ( validator. validate_pattern( "[\\ c0001d-G]" , false ) , Ok ( ( ) ) ) ;
115
+ assert_ne ! ( validator. validate_pattern( "[\\ x0061d-G]" , false ) , Ok ( ( ) ) ) ;
116
+ assert_ne ! ( validator. validate_pattern( "[\\ u0061d-G]" , false ) , Ok ( ( ) ) ) ;
117
+
118
+ assert_ne ! ( validator. validate_pattern( "[b-G\\ 10]" , false ) , Ok ( ( ) ) ) ;
119
+ assert_ne ! ( validator. validate_pattern( "[d-G\\ a]" , false ) , Ok ( ( ) ) ) ;
120
+ assert_ne ! ( validator. validate_pattern( "[d-G\\ b]" , false ) , Ok ( ( ) ) ) ;
121
+ assert_ne ! ( validator. validate_pattern( "[d-G\\ B]" , false ) , Ok ( ( ) ) ) ;
122
+ assert_ne ! ( validator. validate_pattern( "[b-G\\ d]" , false ) , Ok ( ( ) ) ) ;
123
+ assert_ne ! ( validator. validate_pattern( "[b-G\\ D]" , false ) , Ok ( ( ) ) ) ;
124
+ assert_ne ! ( validator. validate_pattern( "[b-G\\ s]" , false ) , Ok ( ( ) ) ) ;
125
+ assert_ne ! ( validator. validate_pattern( "[b-G\\ S]" , false ) , Ok ( ( ) ) ) ;
126
+ assert_ne ! ( validator. validate_pattern( "[b-G\\ w]" , false ) , Ok ( ( ) ) ) ;
127
+ assert_ne ! ( validator. validate_pattern( "[b-G\\ W]" , false ) , Ok ( ( ) ) ) ;
128
+ assert_ne ! ( validator. validate_pattern( "[b-G\\ 0]" , false ) , Ok ( ( ) ) ) ;
129
+ assert_ne ! ( validator. validate_pattern( "[d-G\\ t]" , false ) , Ok ( ( ) ) ) ;
130
+ assert_ne ! ( validator. validate_pattern( "[d-G\\ n]" , false ) , Ok ( ( ) ) ) ;
131
+ assert_ne ! ( validator. validate_pattern( "[d-G\\ v]" , false ) , Ok ( ( ) ) ) ;
132
+ assert_ne ! ( validator. validate_pattern( "[d-G\\ f]" , false ) , Ok ( ( ) ) ) ;
133
+ assert_ne ! ( validator. validate_pattern( "[d-G\\ r]" , false ) , Ok ( ( ) ) ) ;
134
+ assert_ne ! ( validator. validate_pattern( "[d-G\\ c0001]" , false ) , Ok ( ( ) ) ) ;
135
+ assert_ne ! ( validator. validate_pattern( "[d-G\\ x0061]" , false ) , Ok ( ( ) ) ) ;
136
+ assert_ne ! ( validator. validate_pattern( "[d-G\\ u0061]" , false ) , Ok ( ( ) ) ) ;
79
137
}
80
138
81
139
#[ test]
0 commit comments