Merge pull request #2396 from akoeplinger/flaky-osx-socket-test
[mono.git] / mcs / class / System / Test / System.Text.RegularExpressions / RegexMatchTests.cs
1 using System;
2 using System.Text;
3 using System.Text.RegularExpressions;
4
5 using NUnit.Framework;
6
7 namespace MonoTests.System.Text.RegularExpressions
8 {
9         [TestFixture]
10         public class RegexMatchTests
11         {
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
18                         + " Group[1]=(0,1)"
19                         + " Group[2]=(1,1)"
20                         + " Group[3]=(2,1)"
21                         + " Group[4]=(3,1)"
22                         + " Group[5]=(4,1)"
23                         + " Group[6]=(5,1)"
24                         + " Group[7]=(6,1)"
25                         + " Group[8]=(7,1)"
26                         + " Group[9]=(8,1)"
27                         + " Group[10]=(9,2)"
28                         + " Group[11]=(11,1)"
29                         ),
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
34                         + "     Group[0]=(0,13)"
35                         + " Group[1]=(0,1)"
36                         + " Group[2]=(1,1)"
37                         + " Group[3]=(2,1)"
38                         + " Group[4]=(3,1)"
39                         + " Group[5]=(4,1)"
40                         + " Group[6]=(5,1)"
41                         + " Group[7]=(7,1)"
42                         + " Group[8]=(8,1)"
43                         + " Group[9]=(9,2)"
44                         + " Group[10]=(11,1)"
45                         + " Group[11]=(6,1)"
46                         ),
47                         new RegexTrial (@"(F)(2)(3)(?<S>4)(5)(6)(?'S'7)(8)(9)(10)(L)\10", RegexOptions.None, "F2345678910L71", "Pass."//9
48                         + "     Group[0]=(0,13)"
49                         + " Group[1]=(0,1)"
50                         + " Group[2]=(1,1)"
51                         + " Group[3]=(2,1)"
52                         + " Group[4]=(4,1)"
53                         + " Group[5]=(5,1)"
54                         + " Group[6]=(7,1)"
55                         + " Group[7]=(8,1)"
56                         + " Group[8]=(9,2)"
57                         + " Group[9]=(11,1)"
58                         + " Group[10]=(3,1)(6,1)"
59                         ),
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
64                         + "     Group[0]=(0,13)"
65                         + " Group[1]=(0,1)"
66                         + " Group[2]=(1,1)"
67                         + " Group[3]=(2,1)"
68                         + " Group[4]=(4,1)"
69                         + " Group[5]=(5,1)"
70                         + " Group[6]=(7,1)"
71                         + " Group[7]=(8,1)"
72                         + " Group[8]=(9,2)"
73                         + " Group[9]=(11,1)"
74                         + " Group[10]=(3,1)(6,1)"
75                         ),
76                         new RegexTrial (@"(F)(2)(3)(?<S>4)(5)(6)(?'S'7)(8)(9)(10)(L)(?(S)|\10)", RegexOptions.None, "F2345678910L70","Pass."//14
77                         + "     Group[0]=(0,12)"
78                         + " Group[1]=(0,1)"
79                         + " Group[2]=(1,1)"
80                         + " Group[3]=(2,1)"
81                         + " Group[4]=(4,1)"
82                         + " Group[5]=(5,1)"
83                         + " Group[6]=(7,1)"
84                         + " Group[7]=(8,1)"
85                         + " Group[8]=(9,2)"
86                         + " Group[9]=(11,1)"
87                         + " Group[10]=(3,1)(6,1)"
88                         ),
89                         new RegexTrial (@"(F)(2)(3)(?<S>4)(5)(6)(?'S'7)(8)(9)(10)(L)(?(7)|\10)", RegexOptions.None, "F2345678910L70","Pass."//15
90                         + "     Group[0]=(0,12)"
91                         + " Group[1]=(0,1)"
92                         + " Group[2]=(1,1)"
93                         + " Group[3]=(2,1)"
94                         + " Group[4]=(4,1)"
95                         + " Group[5]=(5,1)"
96                         + " Group[6]=(7,1)"
97                         + " Group[7]=(8,1)"
98                         + " Group[8]=(9,2)"
99                         + " Group[9]=(11,1)"
100                         + " Group[10]=(3,1)(6,1)"
101                         ),
102                         new RegexTrial (@"(F)(2)(3)(?<S>4)(5)(6)(?'S'7)(8)(9)(10)(L)(?(K)|\10)", RegexOptions.None, "F2345678910L70","Pass."//16
103                         + "     Group[0]=(0,13)"
104                         + " Group[1]=(0,1)"
105                         + " Group[2]=(1,1)"
106                         + " Group[3]=(2,1)"
107                         + " Group[4]=(4,1)"
108                         + " Group[5]=(5,1)"
109                         + " Group[6]=(7,1)"
110                         + " Group[7]=(8,1)"
111                         + " Group[8]=(9,2)"
112                         + " Group[9]=(11,1)"
113                         + " Group[10]=(3,1)(6,1)"
114                         ),
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
151
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
170                 };
171
172                 [Test]
173                 public void RegexJvmTrial0000 ()
174                 {
175                         trials [0].Execute ();
176                 }
177
178                 [Test]
179                 public void RegexJvmTrial0001 ()
180                 {
181                         trials [1].Execute ();
182                 }
183
184                 [Test]
185                 [Category ("NotDotNet")]
186                 [Category ("NotWorking")]
187                 public void RegexJvmTrial0002 ()
188                 {
189                         trials [2].Execute ();
190                 }
191
192                 [Test]
193                 public void RegexJvmTrial0003 ()
194                 {
195                         trials [3].Execute ();
196                 }
197
198                 [Test]
199                 public void RegexJvmTrial0004 ()
200                 {
201                         trials [4].Execute ();
202                 }
203
204                 [Test]
205                 [Category ("NotWorking")]
206                 public void RegexJvmTrial0005 ()
207                 {
208                         trials [5].Execute ();
209                 }
210
211                 [Test]
212                 public void RegexJvmTrial0006 ()
213                 {
214                         trials [6].Execute ();
215                 }
216
217                 [Test]
218                 public void RegexJvmTrial0007 ()
219                 {
220                         trials [7].Execute ();
221                 }
222
223                 [Test]
224                 [Category ("NotWorking")]
225                 [Category ("NotDotNet")]
226                 public void RegexJvmTrial0008 ()
227                 {
228                         trials [8].Execute ();
229                 }
230
231                 [Test]
232                 [Category ("NotWorking")]
233                 [Category ("NotDotNet")]
234                 public void RegexJvmTrial0009 ()
235                 {
236                         trials [9].Execute ();
237                 }
238
239                 [Test]
240                 [Category ("NotWorking")]
241                 public void RegexJvmTrial0010 ()
242                 {
243                         trials [10].Execute ();
244                 }
245
246                 [Test]
247                 [Category ("NotWorking")]
248                 public void RegexJvmTrial0011 ()
249                 {
250                         trials [11].Execute ();
251                 }
252
253                 [Test]
254                 [Category ("NotWorking")]
255                 public void RegexJvmTrial0012 ()
256                 {
257                         trials [12].Execute ();
258                 }
259
260                 [Test]
261                 [Category ("NotWorking")]
262                 [Category ("NotDotNet")]
263                 public void RegexJvmTrial0013 ()
264                 {
265                         trials [13].Execute ();
266                 }
267
268                 [Test]
269                 [Category ("NotWorking")]
270                 [Category ("NotDotNet")]
271                 public void RegexJvmTrial0014 ()
272                 {
273                         trials [14].Execute ();
274                 }
275
276                 [Test]
277                 [Category ("NotWorking")]
278                 [Category ("NotDotNet")]
279                 public void RegexJvmTrial0015 ()
280                 {
281                         trials [15].Execute ();
282                 }
283
284                 [Test]
285                 [Category ("NotWorking")]
286                 [Category ("NotDotNet")]
287                 public void RegexJvmTrial0016 ()
288                 {
289                         trials [16].Execute ();
290                 }
291
292                 [Test]
293                 public void RegexJvmTrial0017 ()
294                 {
295                         trials [17].Execute ();
296                 }
297
298                 [Test]
299                 [Category ("NotWorking")]
300                 [Category ("NotDotNet")]
301                 public void RegexJvmTrial0018 ()
302                 {
303                         trials [18].Execute ();
304                 }
305                 
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 (); }
340
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 (); }
359         }
360 }