RegExp.rs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. use js_sys::*;
  2. use wasm_bindgen::JsCast;
  3. use wasm_bindgen_test::*;
  4. #[wasm_bindgen_test]
  5. fn regexp_inheritance() {
  6. let re = RegExp::new(".", "");
  7. assert!(re.is_instance_of::<RegExp>());
  8. assert!(re.is_instance_of::<Object>());
  9. let _: &Object = re.as_ref();
  10. }
  11. #[wasm_bindgen_test]
  12. fn exec() {
  13. let re = RegExp::new("quick\\s(brown).+?(jumps)", "ig");
  14. let result = re.exec("The Quick Brown Fox Jumps Over The Lazy Dog");
  15. let mut v = vec![];
  16. result.unwrap().for_each(&mut |x, _, _| v.push(x));
  17. assert_eq!(v[0], "Quick Brown Fox Jumps");
  18. assert_eq!(v[1], "Brown");
  19. assert_eq!(v[2], "Jumps");
  20. let result = re.exec("foo");
  21. assert!(result.is_none());
  22. }
  23. #[wasm_bindgen_test]
  24. fn flags() {
  25. let re = RegExp::new("foo", "ig");
  26. assert_eq!(re.flags(), "gi");
  27. }
  28. #[wasm_bindgen_test]
  29. fn global() {
  30. let re = RegExp::new("foo", "g");
  31. assert!(re.global());
  32. let re = RegExp::new("bar", "i");
  33. assert!(!re.global());
  34. }
  35. #[wasm_bindgen_test]
  36. fn ignore_case() {
  37. let re = RegExp::new("foo", "");
  38. assert!(!re.ignore_case());
  39. let re = RegExp::new("foo", "i");
  40. assert!(re.ignore_case());
  41. }
  42. #[wasm_bindgen_test]
  43. fn input() {
  44. let re = RegExp::new("hi", "g");
  45. re.test("hi there!");
  46. assert_eq!(RegExp::input(), "hi there!");
  47. }
  48. #[wasm_bindgen_test]
  49. fn last_index() {
  50. let re = RegExp::new("hi", "g");
  51. assert_eq!(re.last_index(), 0);
  52. re.set_last_index(42);
  53. assert_eq!(re.last_index(), 42);
  54. }
  55. #[wasm_bindgen_test]
  56. fn last_match() {
  57. let re = RegExp::new("hi", "g");
  58. re.test("hi there!");
  59. assert_eq!(RegExp::last_match(), "hi");
  60. }
  61. #[wasm_bindgen_test]
  62. fn last_paren() {
  63. let re = RegExp::new("(hi)", "g");
  64. re.test("hi there!");
  65. assert_eq!(RegExp::last_paren(), "hi");
  66. }
  67. #[wasm_bindgen_test]
  68. fn left_context() {
  69. let re = RegExp::new("world", "g");
  70. re.test("hello world!");
  71. assert_eq!(RegExp::left_context(), "hello ");
  72. }
  73. #[wasm_bindgen_test]
  74. fn multiline() {
  75. let re = RegExp::new("foo", "m");
  76. assert!(re.multiline());
  77. }
  78. #[wasm_bindgen_test]
  79. fn n1_to_n9() {
  80. let re = RegExp::new(
  81. r"(\w+)\s(\w+)\s(\w+)\s(\w+)\s(\w+)\s(\w+)\s(\w+)\s(\w+)\s(\w+)",
  82. "",
  83. );
  84. re.test("The Quick Brown Fox Jumps Over The Lazy Dog");
  85. assert_eq!(RegExp::n1(), "The");
  86. assert_eq!(RegExp::n2(), "Quick");
  87. assert_eq!(RegExp::n3(), "Brown");
  88. assert_eq!(RegExp::n4(), "Fox");
  89. assert_eq!(RegExp::n5(), "Jumps");
  90. assert_eq!(RegExp::n6(), "Over");
  91. assert_eq!(RegExp::n7(), "The");
  92. assert_eq!(RegExp::n8(), "Lazy");
  93. assert_eq!(RegExp::n9(), "Dog");
  94. }
  95. #[wasm_bindgen_test]
  96. fn new() {
  97. let re = RegExp::new("foo", "");
  98. let re = RegExp::new_regexp(&re, "g");
  99. assert_eq!(re.to_string(), "/foo/g");
  100. }
  101. #[wasm_bindgen_test]
  102. fn right_context() {
  103. let re = RegExp::new("hello", "g");
  104. re.test("hello world!");
  105. assert_eq!(RegExp::right_context(), " world!");
  106. }
  107. #[wasm_bindgen_test]
  108. fn source() {
  109. let re = RegExp::new("fooBar", "ig");
  110. assert_eq!(re.source(), "fooBar");
  111. let re = RegExp::new("", "ig");
  112. assert_eq!(re.source(), "(?:)");
  113. }
  114. #[wasm_bindgen_test]
  115. fn sticky() {
  116. let re = RegExp::new("foo", "y");
  117. assert!(re.sticky());
  118. }
  119. #[wasm_bindgen_test]
  120. fn test() {
  121. let re = RegExp::new("foo", "");
  122. assert!(re.test("football"));
  123. assert!(!re.test("bar"));
  124. }
  125. #[wasm_bindgen_test]
  126. fn to_string() {
  127. let re = RegExp::new("a+b+c", "g");
  128. assert_eq!(re.to_string(), "/a+b+c/g");
  129. }
  130. #[wasm_bindgen_test]
  131. fn unicode() {
  132. let re = RegExp::new("\u{61}", "u");
  133. assert!(re.unicode());
  134. }