3 using System.Text.RegularExpressions;
7 namespace MonoTests.System.Text.RegularExpressions
10 public class RegexMatchTests
12 static RegexTrial [] trials = new RegexTrial [] {
13 new RegexTrial (@"(a)(b)(c)", RegexOptions.ExplicitCapture, "abc", "Pass. Group[0]=(0,3)"),//0
14 new RegexTrial (@"(a)(?<1>b)(c)", RegexOptions.ExplicitCapture, "abc", "Pass. Group[0]=(0,3) Group[1]=(1,1)"),//1
15 new RegexTrial (@"(a)(?<2>b)(c)", RegexOptions.None, "abc", "Pass. Group[0]=(0,3) Group[1]=(0,1) Group[1]=(1,1)(2,1)"),//2
16 new RegexTrial (@"(a)(?<foo>b)(c)", RegexOptions.ExplicitCapture, "abc", "Pass. Group[0]=(0,3) Group[1]=(1,1)"),//3
17 new RegexTrial (@"(F)(2)(3)(4)(5)(6)(7)(8)(9)(10)(L)\11", RegexOptions.None, "F2345678910LL", "Pass. Group[0]=(0,13)"//4
30 new RegexTrial (@"(F)(2)(3)(4)(5)(6)(7)(8)(9)(10)(L)\11", RegexOptions.ExplicitCapture, "F2345678910LL", "Fail."),//5
31 new RegexTrial (@"(F)(2)(3)(4)(5)(6)(?<S>7)(8)(9)(10)(L)\1", RegexOptions.None, "F2345678910L71", "Fail."),//6
32 new RegexTrial (@"(F)(2)(3)(4)(5)(6)(7)(8)(9)(10)(L)\11", RegexOptions.None, "F2345678910LF1", "Fail."),//7
33 new RegexTrial (@"(F)(2)(3)(4)(5)(6)(?<S>7)(8)(9)(10)(L)\11", RegexOptions.None, "F2345678910L71", "Pass."//8
47 new RegexTrial (@"(F)(2)(3)(?<S>4)(5)(6)(?'S'7)(8)(9)(10)(L)\10", RegexOptions.None, "F2345678910L71", "Pass."//9
58 + " Group[10]=(3,1)(6,1)"
60 new RegexTrial (@"(F)(2)(3)(?<S>4)(5)(6)(?'S'7)(8)(9)(10)(L)\10", RegexOptions.ExplicitCapture, "F2345678910L70", "Fail."),//10
61 new RegexTrial (@"(F)(2)(3)(?<S>4)(5)(6)(?'S'7)(8)(9)(10)(L)\1", RegexOptions.ExplicitCapture, "F2345678910L70", "Pass. Group[0]=(0,13) Group[1]=(3,1)(6,1)"),//11
62 new RegexTrial (@"(?n:(F)(2)(3)(?<S>4)(5)(6)(?'S'7)(8)(9)(10)(L)\1)", RegexOptions.None, "F2345678910L70", "Pass. Group[0]=(0,13) Group[1]=(3,1)(6,1)"),//12
63 new RegexTrial (@"(F)(2)(3)(?<S>4)(5)(6)(?'S'7)(8)(9)(10)(L)(?(10)\10)", RegexOptions.None, "F2345678910L70","Pass."//13
74 + " Group[10]=(3,1)(6,1)"
76 new RegexTrial (@"(F)(2)(3)(?<S>4)(5)(6)(?'S'7)(8)(9)(10)(L)(?(S)|\10)", RegexOptions.None, "F2345678910L70","Pass."//14
87 + " Group[10]=(3,1)(6,1)"
89 new RegexTrial (@"(F)(2)(3)(?<S>4)(5)(6)(?'S'7)(8)(9)(10)(L)(?(7)|\10)", RegexOptions.None, "F2345678910L70","Pass."//15
100 + " Group[10]=(3,1)(6,1)"
102 new RegexTrial (@"(F)(2)(3)(?<S>4)(5)(6)(?'S'7)(8)(9)(10)(L)(?(K)|\10)", RegexOptions.None, "F2345678910L70","Pass."//16
113 + " Group[10]=(3,1)(6,1)"
115 new RegexTrial (@"\P{IsHebrew}", RegexOptions.None, "Fì", "Pass. Group[0]=(0,1)"),//17
116 new RegexTrial (@"\p{IsHebrew}", RegexOptions.None, "Fì", "Pass. Group[0]=(1,1)"),//18
117 new RegexTrial (@"(?<=a+)(?:a)*bc", RegexOptions.None, "aabc", "Pass. Group[0]=(1,3)"),//19
118 new RegexTrial (@"(?<=a*)(?:a)*bc", RegexOptions.None, "aabc", "Pass. Group[0]=(0,4)"),//20
119 new RegexTrial (@"(?<=a{1,5})(?:a)*bc", RegexOptions.None, "aabc", "Pass. Group[0]=(1,3)"),//21
120 new RegexTrial (@"(?<=a{1})(?:a)*bc", RegexOptions.None, "aabc", "Pass. Group[0]=(1,3)"),//22
121 new RegexTrial (@"(?<=a{1,})(?:a)*bc", RegexOptions.None, "aabc", "Pass. Group[0]=(1,3)"),//23
122 new RegexTrial (@"(?<=a+?)(?:a)*bc", RegexOptions.None, "aabc", "Pass. Group[0]=(1,3)"),//24
123 new RegexTrial (@"(?<=a*?)(?:a)*bc", RegexOptions.None, "aabc", "Pass. Group[0]=(0,4)"),//25
124 new RegexTrial (@"(?<=a{1,5}?)(?:a)*bc", RegexOptions.None, "aabc", "Pass. Group[0]=(1,3)"),//26
125 new RegexTrial (@"(?<=a{1}?)(?:a)*bc", RegexOptions.None, "aabc", "Pass. Group[0]=(1,3)"),//27
126 new RegexTrial (@"(?<=a{1}?)(?:a)*bc", RegexOptions.None, "aabc", "Pass. Group[0]=(1,3)"),//28
127 new RegexTrial (@"(?<!a+)(?:a)*bc", RegexOptions.None, "aabc", "Pass. Group[0]=(0,4)"),//29
128 new RegexTrial (@"(?<!a*)(?:a)*bc", RegexOptions.None, "aabc", "Fail."),//30
129 new RegexTrial (@"abc*(?=c*)", RegexOptions.None, "abcc", "Pass. Group[0]=(0,4)"),//31
130 new RegexTrial (@"abc*(?=c+)", RegexOptions.None, "abcc", "Pass. Group[0]=(0,3)"),//32
131 new RegexTrial (@"abc*(?=c{1})", RegexOptions.None, "abcc", "Pass. Group[0]=(0,3)"),//33
132 new RegexTrial (@"abc*(?=c{1,5})", RegexOptions.None, "abcc", "Pass. Group[0]=(0,3)"),//34
133 new RegexTrial (@"abc*(?=c{1,})", RegexOptions.None, "abcc", "Pass. Group[0]=(0,3)"),//35
134 new RegexTrial (@"abc*(?=c*?)", RegexOptions.None, "abcc", "Pass. Group[0]=(0,4)"),//36
135 new RegexTrial (@"abc*(?=c+?)", RegexOptions.None, "abcc", "Pass. Group[0]=(0,3)"),//37
136 new RegexTrial (@"abc*(?=c{1}?)", RegexOptions.None, "abcc", "Pass. Group[0]=(0,3)"),//38
137 new RegexTrial (@"abc*(?=c{1,5}?)", RegexOptions.None, "abcc", "Pass. Group[0]=(0,3)"),//39
138 new RegexTrial (@"abc*(?=c{1,}?)", RegexOptions.None, "abcc", "Pass. Group[0]=(0,3)"),//40
139 new RegexTrial (@"abc*?(?=c*)", RegexOptions.None, "abcc", "Pass. Group[0]=(0,2)"),//41
140 new RegexTrial (@"abc*?(?=c+)", RegexOptions.None, "abcc", "Pass. Group[0]=(0,2)"),//42
141 new RegexTrial (@"abc*?(?=c{1})", RegexOptions.None, "abcc", "Pass. Group[0]=(0,2)"),//43
142 new RegexTrial (@"abc*?(?=c{1,5})", RegexOptions.None, "abcc", "Pass. Group[0]=(0,2)"),//44
143 new RegexTrial (@"abc*?(?=c{1,})", RegexOptions.None, "abcc", "Pass. Group[0]=(0,2)"),//45
144 new RegexTrial (@"abc*(?!c*)", RegexOptions.None, "abcc", "Fail."),//46
145 new RegexTrial (@"abc*(?!c+)", RegexOptions.None, "abcc", "Pass. Group[0]=(0,4)"),//47
146 new RegexTrial (@"abc*(?!c{1})", RegexOptions.None, "abcc", "Pass. Group[0]=(0,4)"),//48
147 new RegexTrial (@"abc*(?!c{1,5})", RegexOptions.None, "abcc", "Pass. Group[0]=(0,4)"),//49
148 new RegexTrial (@"abc*(?!c{1,})", RegexOptions.None, "abcc", "Pass. Group[0]=(0,4)"),//50
149 new RegexTrial (@"(a)(?<1>b)(?'1'c)", RegexOptions.ExplicitCapture, "abc", "Pass. Group[0]=(0,3) Group[1]=(1,1)(2,1)"),//51
150 new RegexTrial (@"(?>a*).", RegexOptions.ExplicitCapture, "aaaa", "Fail."),//52
152 new RegexTrial (@"(?<ab>ab)c\1", RegexOptions.None, "abcabc", "Pass. Group[0]=(0,5) Group[1]=(0,2)"),//53
153 new RegexTrial (@"\1", RegexOptions.ECMAScript, "-", "Fail."),//54
154 new RegexTrial (@"\2", RegexOptions.ECMAScript, "-", "Fail."),//55
155 new RegexTrial (@"(a)|\2", RegexOptions.ECMAScript, "-", "Fail."),//56
156 new RegexTrial (@"\4400", RegexOptions.None, "asdf 012", "Pass. Group[0]=(4,2)"),//57
157 new RegexTrial (@"\4400", RegexOptions.ECMAScript, "asdf 012", "Fail."),//58
158 new RegexTrial (@"\4400", RegexOptions.None, "asdf$0012", "Fail."),//59
159 new RegexTrial (@"\4400", RegexOptions.ECMAScript, "asdf$0012", "Pass. Group[0]=(4,3)"),//60
160 new RegexTrial (@"(?<2>ab)(?<c>c)(?<d>d)", RegexOptions.None, "abcd", "Pass. Group[0]=(0,4) Group[1]=(2,1) Group[2]=(0,2) Group[3]=(3,1)"),// 61
161 new RegexTrial (@"(?<1>ab)(c)", RegexOptions.None, "abc", "Pass. Group[0]=(0,3) Group[1]=(0,2)(2,1)"),//62
162 new RegexTrial (@"(?<44>a)", RegexOptions.None, "a", "Pass. Group[0]=(0,1) Group[44]=(0,1)"),//63
163 new RegexTrial (@"(?<44>a)(?<8>b)", RegexOptions.None, "ab", "Pass. Group[0]=(0,2) Group[8]=(1,1) Group[44]=(0,1)"),//64
164 new RegexTrial (@"(?<44>a)(?<8>b)(?<1>c)(d)", RegexOptions.None, "abcd", "Pass. Group[0]=(0,4) Group[1]=(2,1)(3,1) Group[8]=(1,1) Group[44]=(0,1)"),//65
165 new RegexTrial (@"(?<44>a)(?<44>b)", RegexOptions.None, "ab", "Pass. Group[0]=(0,2) Group[44]=(0,1)(1,1)"),//66
166 new RegexTrial (@"(?<44>a)\440", RegexOptions.None, "a ", "Pass. Group[0]=(0,2) Group[44]=(0,1)"),//67
167 new RegexTrial (@"(?<44>a)\440", RegexOptions.ECMAScript, "a ", "Fail."),//68
168 new RegexTrial (@"(?<44>a)\440", RegexOptions.None, "aa0", "Fail."),//69
169 new RegexTrial (@"(?<44>a)\440", RegexOptions.ECMAScript, "aa0", "Pass. Group[0]=(0,3) Group[44]=(0,1)"),//70
173 public void RegexJvmTrial0000 ()
175 trials [0].Execute ();
179 public void RegexJvmTrial0001 ()
181 trials [1].Execute ();
185 [Category ("NotDotNet")]
186 [Category ("NotWorking")]
187 public void RegexJvmTrial0002 ()
189 trials [2].Execute ();
193 public void RegexJvmTrial0003 ()
195 trials [3].Execute ();
199 public void RegexJvmTrial0004 ()
201 trials [4].Execute ();
205 [Category ("NotWorking")]
206 public void RegexJvmTrial0005 ()
208 trials [5].Execute ();
212 public void RegexJvmTrial0006 ()
214 trials [6].Execute ();
218 public void RegexJvmTrial0007 ()
220 trials [7].Execute ();
224 [Category ("NotWorking")]
225 [Category ("NotDotNet")]
226 public void RegexJvmTrial0008 ()
228 trials [8].Execute ();
232 [Category ("NotWorking")]
233 [Category ("NotDotNet")]
234 public void RegexJvmTrial0009 ()
236 trials [9].Execute ();
240 [Category ("NotWorking")]
241 public void RegexJvmTrial0010 ()
243 trials [10].Execute ();
247 [Category ("NotWorking")]
248 public void RegexJvmTrial0011 ()
250 trials [11].Execute ();
254 [Category ("NotWorking")]
255 public void RegexJvmTrial0012 ()
257 trials [12].Execute ();
261 [Category ("NotWorking")]
262 [Category ("NotDotNet")]
263 public void RegexJvmTrial0013 ()
265 trials [13].Execute ();
269 [Category ("NotWorking")]
270 [Category ("NotDotNet")]
271 public void RegexJvmTrial0014 ()
273 trials [14].Execute ();
277 [Category ("NotWorking")]
278 [Category ("NotDotNet")]
279 public void RegexJvmTrial0015 ()
281 trials [15].Execute ();
285 [Category ("NotWorking")]
286 [Category ("NotDotNet")]
287 public void RegexJvmTrial0016 ()
289 trials [16].Execute ();
293 public void RegexJvmTrial0017 ()
295 trials [17].Execute ();
299 [Category ("NotWorking")]
300 [Category ("NotDotNet")]
301 public void RegexJvmTrial0018 ()
303 trials [18].Execute ();
306 [Test] public void RegexJvmTrial0019 () { trials [19].Execute (); }
307 [Test] public void RegexJvmTrial0020 () { trials [20].Execute (); }
308 [Test] public void RegexJvmTrial0021 () { trials [21].Execute (); }
309 [Test] public void RegexJvmTrial0022 () { trials [22].Execute (); }
310 [Test] public void RegexJvmTrial0023 () { trials [23].Execute (); }
311 [Test] public void RegexJvmTrial0024 () { trials [24].Execute (); }
312 [Test] public void RegexJvmTrial0025 () { trials [25].Execute (); }
313 [Test] public void RegexJvmTrial0026 () { trials [26].Execute (); }
314 [Test] public void RegexJvmTrial0027 () { trials [27].Execute (); }
315 [Test] public void RegexJvmTrial0028 () { trials [28].Execute (); }
316 [Test] public void RegexJvmTrial0029 () { trials [29].Execute (); }
317 [Test] public void RegexJvmTrial0030 () { trials [30].Execute (); }
318 [Test] public void RegexJvmTrial0031 () { trials [31].Execute (); }
319 [Test] public void RegexJvmTrial0032 () { trials [32].Execute (); }
320 [Test] public void RegexJvmTrial0033 () { trials [33].Execute (); }
321 [Test] public void RegexJvmTrial0034 () { trials [34].Execute (); }
322 [Test] public void RegexJvmTrial0035 () { trials [35].Execute (); }
323 [Test] public void RegexJvmTrial0036 () { trials [36].Execute (); }
324 [Test] public void RegexJvmTrial0037 () { trials [37].Execute (); }
325 [Test] public void RegexJvmTrial0038 () { trials [38].Execute (); }
326 [Test] public void RegexJvmTrial0039 () { trials [39].Execute (); }
327 [Test] public void RegexJvmTrial0040 () { trials [40].Execute (); }
328 [Test] public void RegexJvmTrial0041 () { trials [41].Execute (); }
329 [Test] public void RegexJvmTrial0042 () { trials [42].Execute (); }
330 [Test] public void RegexJvmTrial0043 () { trials [43].Execute (); }
331 [Test] public void RegexJvmTrial0044 () { trials [44].Execute (); }
332 [Test] public void RegexJvmTrial0045 () { trials [45].Execute (); }
333 [Test] public void RegexJvmTrial0046 () { trials [46].Execute (); }
334 [Test] public void RegexJvmTrial0047 () { trials [47].Execute (); }
335 [Test] public void RegexJvmTrial0048 () { trials [48].Execute (); }
336 [Test] public void RegexJvmTrial0049 () { trials [49].Execute (); }
337 [Test] public void RegexJvmTrial0050 () { trials [50].Execute (); }
338 [Test] public void RegexJvmTrial0051 () { trials [51].Execute (); }
339 [Test] public void RegexJvmTrial0052 () { trials [52].Execute (); }
341 [Test] public void RegexTrial0053 () { trials [53].Execute (); }
342 [Test] public void RegexTrial0054 () { trials [54].Execute (); }
343 [Test] public void RegexTrial0055 () { trials [55].Execute (); }
344 [Test] public void RegexTrial0056 () { trials [56].Execute (); }
345 [Test] public void RegexTrial0057 () { trials [57].Execute (); }
346 [Test] public void RegexTrial0058 () { trials [58].Execute (); }
347 [Test] public void RegexTrial0059 () { trials [59].Execute (); }
348 [Test] public void RegexTrial0060 () { trials [60].Execute (); }
349 [Test] public void RegexTrial0061 () { trials [61].Execute (); }
350 [Test] public void RegexTrial0062 () { trials [62].Execute (); }
351 [Test] public void RegexTrial0063 () { trials [63].Execute (); }
352 [Test] public void RegexTrial0064 () { trials [64].Execute (); }
353 [Test] public void RegexTrial0065 () { trials [65].Execute (); }
354 [Test] public void RegexTrial0066 () { trials [66].Execute (); }
355 [Test] public void RegexTrial0067 () { trials [67].Execute (); }
356 [Test] public void RegexTrial0068 () { trials [68].Execute (); }
357 [Test] public void RegexTrial0069 () { trials [69].Execute (); }
358 [Test] public void RegexTrial0070 () { trials [70].Execute (); }