RegexTest.cs 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. //
  2. // assembly: System_test
  3. // namespace: MonoTests.System.Text.RegularExpressions
  4. // file: RegexTest.cs
  5. //
  6. // Authors:
  7. // Juraj Skripsky ([email protected])
  8. //
  9. // (c) 2003 Juraj Skripsky
  10. using System;
  11. using System.Text.RegularExpressions;
  12. using NUnit.Framework;
  13. namespace MonoTests.System.Text.RegularExpressions {
  14. [TestFixture]
  15. public class RegexTest : Assertion {
  16. [Test]
  17. public void Simple () {
  18. char[] c = { (char)32, (char)8212, (char)32 };
  19. string s = new String(c);
  20. Assertion.AssertEquals ("char", true, Regex.IsMatch(s, s));
  21. }
  22. [Test]
  23. public void Unescape () {
  24. string inString = @"\a\b\t\r\v\f\n\e\02400\x231\cC\ufffff\*";
  25. char [] c = { (char)7, (char)8, (char)9, (char)13,
  26. (char)11, (char)12, (char)10, (char)27, (char) 20,
  27. (char)48, (char)48, (char)35, (char)49,
  28. (char)3, (char)65535, (char)102, (char)42
  29. };
  30. string expectedString = new String(c);
  31. string outString = Regex.Unescape(inString);
  32. Assertion.AssertEquals("unescape", outString, expectedString);
  33. }
  34. [Test]
  35. public void Match1 ()
  36. {
  37. Regex email = new Regex ("(?<user>[^@]+)@(?<domain>.+)");
  38. Match m;
  39. m = email.Match ("[email protected]");
  40. Assert ("#m01", m.Success);
  41. AssertEquals ("#m02", "mono", m.Groups ["user"].Value);
  42. AssertEquals ("#m03", "go-mono.com", m.Groups ["domain"].Value);
  43. m = email.Match ("[email protected]");
  44. Assert ("#m04", m.Success);
  45. AssertEquals ("#m05", "mono.bugs", m.Groups ["user"].Value);
  46. AssertEquals ("#m06", "go-mono.com", m.Groups ["domain"].Value);
  47. }
  48. [Test]
  49. public void Matches1 ()
  50. {
  51. Regex words = new Regex ("(?<word>\\w+)");
  52. MatchCollection mc = words.Matches ("the fat cat ate the rat");
  53. AssertEquals ("#m01", 6, mc.Count);
  54. AssertEquals ("#m02", "the", mc [0].Value);
  55. AssertEquals ("#m03", "fat", mc [1].Value);
  56. AssertEquals ("#m04", "cat", mc [2].Value);
  57. AssertEquals ("#m05", "ate", mc [3].Value);
  58. AssertEquals ("#m06", "the", mc [4].Value);
  59. AssertEquals ("#m07", "rat", mc [5].Value);
  60. }
  61. [Test]
  62. public void Matches2 ()
  63. {
  64. Regex words = new Regex ("(?<word>\\w+)", RegexOptions.RightToLeft);
  65. MatchCollection mc = words.Matches ("the fat cat ate the rat");
  66. AssertEquals ("#m01", 6, mc.Count);
  67. AssertEquals ("#m02", "the", mc [5].Value);
  68. AssertEquals ("#m03", "fat", mc [4].Value);
  69. AssertEquals ("#m04", "cat", mc [3].Value);
  70. AssertEquals ("#m05", "ate", mc [2].Value);
  71. AssertEquals ("#m06", "the", mc [1].Value);
  72. AssertEquals ("#m07", "rat", mc [0].Value);
  73. }
  74. [Test]
  75. public void Matches3 ()
  76. {
  77. Regex digits = new Regex ("(?<digit>\\d+)");
  78. MatchCollection mc = digits.Matches ("0 1 2 3 4 5 6a7b8c9d10");
  79. AssertEquals ("#m01", 11, mc.Count);
  80. AssertEquals ("#m02", "0", mc [0].Value);
  81. AssertEquals ("#m03", "1", mc [1].Value);
  82. AssertEquals ("#m04", "2", mc [2].Value);
  83. AssertEquals ("#m05", "3", mc [3].Value);
  84. AssertEquals ("#m06", "4", mc [4].Value);
  85. AssertEquals ("#m07", "5", mc [5].Value);
  86. AssertEquals ("#m08", "6", mc [6].Value);
  87. AssertEquals ("#m09", "7", mc [7].Value);
  88. AssertEquals ("#m10", "8", mc [8].Value);
  89. AssertEquals ("#m11", "9", mc [9].Value);
  90. AssertEquals ("#m12", "10", mc [10].Value);
  91. }
  92. [Test]
  93. public void Matches4 ()
  94. {
  95. Regex digits = new Regex ("(?<digit>\\d+)", RegexOptions.RightToLeft);
  96. MatchCollection mc = digits.Matches ("0 1 2 3 4 5 6a7b8c9d10");
  97. AssertEquals ("#m01", 11, mc.Count);
  98. AssertEquals ("#m02", "0", mc [10].Value);
  99. AssertEquals ("#m03", "1", mc [9].Value);
  100. AssertEquals ("#m04", "2", mc [8].Value);
  101. AssertEquals ("#m05", "3", mc [7].Value);
  102. AssertEquals ("#m06", "4", mc [6].Value);
  103. AssertEquals ("#m07", "5", mc [5].Value);
  104. AssertEquals ("#m08", "6", mc [4].Value);
  105. AssertEquals ("#m09", "7", mc [3].Value);
  106. AssertEquals ("#m10", "8", mc [2].Value);
  107. AssertEquals ("#m11", "9", mc [1].Value);
  108. AssertEquals ("#m12", "10", mc [0].Value);
  109. }
  110. [Test]
  111. public void Matches5 ()
  112. {
  113. Regex lines = new Regex ("(?<line>.+)");
  114. MatchCollection mc = lines.Matches (story);
  115. AssertEquals ("#m01", 5, mc.Count);
  116. AssertEquals ("#m02", "Two little dragons lived in the forest", mc [0].Value);
  117. AssertEquals ("#m03", "They spent their days collecting honey suckle,",
  118. mc [1].Value);
  119. AssertEquals ("#m04", "And eating curds and whey", mc [2].Value);
  120. AssertEquals ("#m05", "Until an evil sorcer came along", mc [3].Value);
  121. AssertEquals ("#m06", "And chased my dragon friends away", mc [4].Value);
  122. }
  123. [Test]
  124. public void Matches6 ()
  125. {
  126. Regex lines = new Regex ("(?<line>.+)", RegexOptions.RightToLeft);
  127. MatchCollection mc = lines.Matches (story);
  128. AssertEquals ("#m01", 5, mc.Count);
  129. AssertEquals ("#m02", "Two little dragons lived in the forest", mc [4].Value);
  130. AssertEquals ("#m03", "They spent their days collecting honey suckle,",
  131. mc [3].Value);
  132. AssertEquals ("#m04", "And eating curds and whey", mc [2].Value);
  133. AssertEquals ("#m05", "Until an evil sorcer came along", mc [1].Value);
  134. AssertEquals ("#m06", "And chased my dragon friends away", mc [0].Value);
  135. }
  136. string story = "Two little dragons lived in the forest\n" +
  137. "They spent their days collecting honey suckle,\n" +
  138. "And eating curds and whey\n" +
  139. "Until an evil sorcer came along\n" +
  140. "And chased my dragon friends away";
  141. [Test]
  142. public void Matches7 ()
  143. {
  144. Regex nonwhite = new Regex ("(?<nonwhite>\\S+)");
  145. MatchCollection mc = nonwhite.Matches ("ab 12 cde 456 fghi .,\niou");
  146. AssertEquals ("#m01", 7, mc.Count);
  147. AssertEquals ("#m02", "ab", mc [0].Value);
  148. AssertEquals ("#m03", "12", mc [1].Value);
  149. AssertEquals ("#m04", "cde", mc [2].Value);
  150. AssertEquals ("#m05", "456", mc [3].Value);
  151. AssertEquals ("#m06", "fghi", mc [4].Value);
  152. AssertEquals ("#m07", ".,", mc [5].Value);
  153. AssertEquals ("#m08", "iou", mc [6].Value);
  154. }
  155. [Test]
  156. public void Matches8 ()
  157. {
  158. Regex nonwhite = new Regex ("(?<nonwhite>\\S+)", RegexOptions.RightToLeft);
  159. MatchCollection mc = nonwhite.Matches ("ab 12 cde 456 fghi .,\niou");
  160. AssertEquals ("#m01", 7, mc.Count);
  161. AssertEquals ("#m02", "ab", mc [6].Value);
  162. AssertEquals ("#m03", "12", mc [5].Value);
  163. AssertEquals ("#m04", "cde", mc [4].Value);
  164. AssertEquals ("#m05", "456", mc [3].Value);
  165. AssertEquals ("#m06", "fghi", mc [2].Value);
  166. AssertEquals ("#m07", ".,", mc [1].Value);
  167. AssertEquals ("#m08", "iou", mc [0].Value);
  168. }
  169. [Test]
  170. public void Matches9 ()
  171. {
  172. Regex nondigit = new Regex ("(?<nondigit>\\D+)");
  173. MatchCollection mc = nondigit.Matches ("ab0cd1ef2");
  174. AssertEquals ("#m01", 3, mc.Count);
  175. AssertEquals ("#m02", "ab", mc [0].Value);
  176. AssertEquals ("#m02", "cd", mc [1].Value);
  177. AssertEquals ("#m02", "ef", mc [2].Value);
  178. }
  179. [Test]
  180. public void Matches10 ()
  181. {
  182. Regex nondigit = new Regex ("(?<nondigit>\\D+)", RegexOptions.RightToLeft);
  183. MatchCollection mc = nondigit.Matches ("ab0cd1ef2");
  184. AssertEquals ("#m01", 3, mc.Count);
  185. AssertEquals ("#m02", "ab", mc [2].Value);
  186. AssertEquals ("#m02", "cd", mc [1].Value);
  187. AssertEquals ("#m02", "ef", mc [0].Value);
  188. }
  189. }
  190. }