namespace MonoTests.System.Text.RegularExpressions {
- class RegexTrial {
- public string pattern;
- public RegexOptions options;
- public string input;
-
- public string expected;
- public string error = "";
-
- public RegexTrial (string pattern, RegexOptions options, string input, string expected)
- {
- this.pattern = pattern;
- this.options = options;
- this.input = input;
- this.expected = expected;
- }
-
- public string Expected {
- get { return expected; }
- }
-
- public string Error {
- get { return this.error; }
- }
-
- public void Execute ()
- {
- string result;
-
- for (int compiled = 0; compiled < 2; ++compiled) {
- RegexOptions real_options = (compiled == 1) ? (options | RegexOptions.Compiled) : options;
- try {
- Regex re = new Regex (pattern, real_options);
- int [] group_nums = re.GetGroupNumbers ();
- Match m = re.Match (input);
-
- if (m.Success) {
- result = "Pass.";
-
- for (int i = 0; i < m.Groups.Count; ++ i) {
- int gid = group_nums [i];
- Group group = m.Groups [gid];
-
- result += " Group[" + gid + "]=";
- foreach (Capture cap in group.Captures)
- result += "(" + cap.Index + "," + cap.Length + ")";
- }
- } else {
- result = "Fail.";
- }
- }
- catch (Exception e) {
- error = e.Message + "\n" + e.StackTrace + "\n\n";
-
- result = "Error.";
- }
-
- Assert.AreEqual (expected, result,
- "Matching input '{0}' against pattern '{1}' with options '{2}'", input, pattern, real_options);
- }
- }
- }
-
- class Checksum {
- public Checksum () {
- this.sum = 0;
- }
-
- public uint Value {
- get { return sum; }
- }
-
- public void Add (string str) {
- for (int i = 0; i < str.Length; ++ i)
- Add (str[i], 16);
- }
-
- public void Add (uint n) {
- Add (n, 32);
- }
-
- public void Add (ulong n, int bits) {
- ulong mask = 1ul << (bits - 1);
- for (int i = 0; i < bits; ++ i) {
- Add ((n & mask) != 0);
- mask >>= 1;
- }
- }
-
- public void Add (bool bit) {
- bool top = (sum & 0x80000000) != 0;
- sum <<= 1;
- sum ^= bit ? (uint)1 : (uint)0;
-
- if (top)
- sum ^= key;
- }
-
- private uint sum;
- private readonly uint key = 0x04c11db7;
- }
+class RegexTrial {
+ public string pattern;
+ public RegexOptions options;
+ public string input;
+
+ public string expected;
+ public string error = "";
+
+ public RegexTrial (string pattern, RegexOptions options, string input, string expected)
+ {
+ this.pattern = pattern;
+ this.options = options;
+ this.input = input;
+ this.expected = expected;
+ }
+
+ public string Expected {
+ get {
+ return expected;
+ }
+ }
+
+ public string Error {
+ get {
+ return this.error;
+ }
+ }
+
+ public void Execute ()
+ {
+ string result;
+
+ for (int compiled = 0; compiled < 2; ++compiled) {
+ RegexOptions real_options = (compiled == 1) ? (options | RegexOptions.Compiled) : options;
+ try {
+ Regex re = new Regex (pattern, real_options);
+ int [] group_nums = re.GetGroupNumbers ();
+ Match m = re.Match (input);
+
+ if (m.Success) {
+ result = "Pass.";
+
+ for (int i = 0; i < m.Groups.Count; ++ i) {
+ int gid = group_nums [i];
+ Group group = m.Groups [gid];
+
+ result += " Group[" + gid + "]=";
+ foreach (Capture cap in group.Captures)
+ result += "(" + cap.Index + "," + cap.Length + ")";
+ }
+ } else {
+ result = "Fail.";
+ }
+ }
+ catch (Exception e) {
+ error = e.Message + "\n" + e.StackTrace + "\n\n";
+
+ result = "Error.";
+ }
+
+ Assert.AreEqual (expected, result,
+ "Matching input '{0}' against pattern '{1}' with options '{2}'", input, pattern, real_options);
+ }
+ }
+}
+
+class Checksum {
+ public Checksum () {
+ this.sum = 0;
+ }
+
+ public uint Value {
+ get {
+ return sum;
+ }
+ }
+
+ public void Add (string str) {
+ for (int i = 0; i < str.Length; ++ i)
+ Add (str[i], 16);
+ }
+
+ public void Add (uint n) {
+ Add (n, 32);
+ }
+
+ public void Add (ulong n, int bits) {
+ ulong mask = 1ul << (bits - 1);
+ for (int i = 0; i < bits; ++ i) {
+ Add ((n & mask) != 0);
+ mask >>= 1;
+ }
+ }
+
+ public void Add (bool bit) {
+ bool top = (sum & 0x80000000) != 0;
+ sum <<= 1;
+ sum ^= bit ? (uint)1 : (uint)0;
+
+ if (top)
+ sum ^= key;
+ }
+
+ private uint sum;
+ private readonly uint key = 0x04c11db7;
+}
}