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