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