2 // assembly: System_test
3 // namespace: MonoTests.System.Text.RegularExpressions
7 // Juraj Skripsky (juraj@hotfeet.ch)
9 // (c) 2003 Juraj Skripsky
12 using System
.Text
.RegularExpressions
;
14 using NUnit
.Framework
;
16 namespace MonoTests
.System
.Text
.RegularExpressions
{
19 public class RegexTest
: Assertion
{
22 public void Simple () {
23 char[] c
= { (char)32, (char)8212, (char)32 }
;
24 string s
= new String(c
);
25 Assertion
.AssertEquals ("char", true, Regex
.IsMatch(s
, s
));
29 public void Unescape () {
30 string inString
= @"\a\b\t\r\v\f\n\e\02400\x231\cC\ufffff\*";
31 char [] c
= { (char)7, (char)8, (char)9, (char)13,
32 (char)11, (char)12, (char)10, (char)27,
33 (char)160, (char)48, (char)35, (char)49,
34 (char)3, (char)65535, (char)102, (char)42
36 string expectedString
= new String(c
);
37 string outString
= Regex
.Unescape(inString
);
39 Assertion
.AssertEquals("unescape", outString
, expectedString
);
45 Regex email
= new Regex ("(?<user>[^@]+)@(?<domain>.+)");
48 m
= email
.Match ("mono@go-mono.com");
50 Assert ("#m01", m
.Success
);
51 AssertEquals ("#m02", "mono", m
.Groups
["user"].Value
);
52 AssertEquals ("#m03", "go-mono.com", m
.Groups
["domain"].Value
);
54 m
= email
.Match ("mono.bugs@go-mono.com");
55 Assert ("#m04", m
.Success
);
56 AssertEquals ("#m05", "mono.bugs", m
.Groups
["user"].Value
);
57 AssertEquals ("#m06", "go-mono.com", m
.Groups
["domain"].Value
);
61 public void Matches1 ()
63 Regex words
= new Regex ("(?<word>\\w+)");
65 MatchCollection mc
= words
.Matches ("the fat cat ate the rat");
67 AssertEquals ("#m01", 6, mc
.Count
);
68 AssertEquals ("#m02", "the", mc
[0].Value
);
69 AssertEquals ("#m03", "fat", mc
[1].Value
);
70 AssertEquals ("#m04", "cat", mc
[2].Value
);
71 AssertEquals ("#m05", "ate", mc
[3].Value
);
72 AssertEquals ("#m06", "the", mc
[4].Value
);
73 AssertEquals ("#m07", "rat", mc
[5].Value
);
77 public void Matches2 ()
79 Regex words
= new Regex ("(?<word>\\w+)", RegexOptions
.RightToLeft
);
81 MatchCollection mc
= words
.Matches ("the fat cat ate the rat");
83 AssertEquals ("#m01", 6, mc
.Count
);
84 AssertEquals ("#m02", "the", mc
[5].Value
);
85 AssertEquals ("#m03", "fat", mc
[4].Value
);
86 AssertEquals ("#m04", "cat", mc
[3].Value
);
87 AssertEquals ("#m05", "ate", mc
[2].Value
);
88 AssertEquals ("#m06", "the", mc
[1].Value
);
89 AssertEquals ("#m07", "rat", mc
[0].Value
);
93 public void Matches3 ()
95 Regex digits
= new Regex ("(?<digit>\\d+)");
97 MatchCollection mc
= digits
.Matches ("0 1 2 3 4 5 6a7b8c9d10");
99 AssertEquals ("#m01", 11, mc
.Count
);
100 AssertEquals ("#m02", "0", mc
[0].Value
);
101 AssertEquals ("#m03", "1", mc
[1].Value
);
102 AssertEquals ("#m04", "2", mc
[2].Value
);
103 AssertEquals ("#m05", "3", mc
[3].Value
);
104 AssertEquals ("#m06", "4", mc
[4].Value
);
105 AssertEquals ("#m07", "5", mc
[5].Value
);
106 AssertEquals ("#m08", "6", mc
[6].Value
);
107 AssertEquals ("#m09", "7", mc
[7].Value
);
108 AssertEquals ("#m10", "8", mc
[8].Value
);
109 AssertEquals ("#m11", "9", mc
[9].Value
);
110 AssertEquals ("#m12", "10", mc
[10].Value
);
114 public void Matches4 ()
116 Regex digits
= new Regex ("(?<digit>\\d+)", RegexOptions
.RightToLeft
);
118 MatchCollection mc
= digits
.Matches ("0 1 2 3 4 5 6a7b8c9d10");
120 AssertEquals ("#m01", 11, mc
.Count
);
121 AssertEquals ("#m02", "0", mc
[10].Value
);
122 AssertEquals ("#m03", "1", mc
[9].Value
);
123 AssertEquals ("#m04", "2", mc
[8].Value
);
124 AssertEquals ("#m05", "3", mc
[7].Value
);
125 AssertEquals ("#m06", "4", mc
[6].Value
);
126 AssertEquals ("#m07", "5", mc
[5].Value
);
127 AssertEquals ("#m08", "6", mc
[4].Value
);
128 AssertEquals ("#m09", "7", mc
[3].Value
);
129 AssertEquals ("#m10", "8", mc
[2].Value
);
130 AssertEquals ("#m11", "9", mc
[1].Value
);
131 AssertEquals ("#m12", "10", mc
[0].Value
);
135 public void Matches5 ()
137 Regex lines
= new Regex ("(?<line>.+)");
139 MatchCollection mc
= lines
.Matches (story
);
141 AssertEquals ("#m01", 5, mc
.Count
);
142 AssertEquals ("#m02", "Two little dragons lived in the forest", mc
[0].Value
);
143 AssertEquals ("#m03", "They spent their days collecting honey suckle,",
145 AssertEquals ("#m04", "And eating curds and whey", mc
[2].Value
);
146 AssertEquals ("#m05", "Until an evil sorcer came along", mc
[3].Value
);
147 AssertEquals ("#m06", "And chased my dragon friends away", mc
[4].Value
);
151 public void Matches6 ()
153 Regex lines
= new Regex ("(?<line>.+)", RegexOptions
.RightToLeft
);
155 MatchCollection mc
= lines
.Matches (story
);
157 AssertEquals ("#m01", 5, mc
.Count
);
158 AssertEquals ("#m02", "Two little dragons lived in the forest", mc
[4].Value
);
159 AssertEquals ("#m03", "They spent their days collecting honey suckle,",
161 AssertEquals ("#m04", "And eating curds and whey", mc
[2].Value
);
162 AssertEquals ("#m05", "Until an evil sorcer came along", mc
[1].Value
);
163 AssertEquals ("#m06", "And chased my dragon friends away", mc
[0].Value
);
166 string story
= "Two little dragons lived in the forest\n" +
167 "They spent their days collecting honey suckle,\n" +
168 "And eating curds and whey\n" +
169 "Until an evil sorcer came along\n" +
170 "And chased my dragon friends away";
173 public void Matches7 ()
175 Regex nonwhite
= new Regex ("(?<nonwhite>\\S+)");
177 MatchCollection mc
= nonwhite
.Matches ("ab 12 cde 456 fghi .,\niou");
179 AssertEquals ("#m01", 7, mc
.Count
);
180 AssertEquals ("#m02", "ab", mc
[0].Value
);
181 AssertEquals ("#m03", "12", mc
[1].Value
);
182 AssertEquals ("#m04", "cde", mc
[2].Value
);
183 AssertEquals ("#m05", "456", mc
[3].Value
);
184 AssertEquals ("#m06", "fghi", mc
[4].Value
);
185 AssertEquals ("#m07", ".,", mc
[5].Value
);
186 AssertEquals ("#m08", "iou", mc
[6].Value
);
190 public void Matches8 ()
192 Regex nonwhite
= new Regex ("(?<nonwhite>\\S+)", RegexOptions
.RightToLeft
);
194 MatchCollection mc
= nonwhite
.Matches ("ab 12 cde 456 fghi .,\niou");
196 AssertEquals ("#m01", 7, mc
.Count
);
197 AssertEquals ("#m02", "ab", mc
[6].Value
);
198 AssertEquals ("#m03", "12", mc
[5].Value
);
199 AssertEquals ("#m04", "cde", mc
[4].Value
);
200 AssertEquals ("#m05", "456", mc
[3].Value
);
201 AssertEquals ("#m06", "fghi", mc
[2].Value
);
202 AssertEquals ("#m07", ".,", mc
[1].Value
);
203 AssertEquals ("#m08", "iou", mc
[0].Value
);
207 public void Matches9 ()
209 Regex nondigit
= new Regex ("(?<nondigit>\\D+)");
211 MatchCollection mc
= nondigit
.Matches ("ab0cd1ef2");
213 AssertEquals ("#m01", 3, mc
.Count
);
214 AssertEquals ("#m02", "ab", mc
[0].Value
);
215 AssertEquals ("#m02", "cd", mc
[1].Value
);
216 AssertEquals ("#m02", "ef", mc
[2].Value
);
221 public void Matches10 ()
223 Regex nondigit
= new Regex ("(?<nondigit>\\D+)", RegexOptions
.RightToLeft
);
225 MatchCollection mc
= nondigit
.Matches ("ab0cd1ef2");
227 AssertEquals ("#m01", 3, mc
.Count
);
228 AssertEquals ("#m02", "ab", mc
[2].Value
);
229 AssertEquals ("#m02", "cd", mc
[1].Value
);
230 AssertEquals ("#m02", "ef", mc
[0].Value
);