summaryrefslogtreecommitdiff
path: root/lib/regex/test/boundaries.myr
blob: 196d197c8227027b166cc185b6065baa10c55549 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use std
use "testmatch.use"

const main = {
	/* expected matches */
	testmatch("\\<([a-z]*)\\>", "abcdef", `std.Some [
		"abcdef",
	][:])
	testmatch(".*(\\<.*\\>).*", "!m!", `std.Some [	/* single char word in midstring */
		"m",
	][:])
	testmatch(".*(\\<.*\\>).*", "!m", `std.Some [	/* single char word at end of string */
		"m",
	][:])
	testmatch(".*(\\<.*\\>).*", "m!", `std.Some [	/* single char word at start of string */
		"m",
	][:])
	testmatch(".*(\\<.*\\>).*", "!@#!!matches!!%!", `std.Some [	/* word in midstring */
		"matches",
	][:])
	testmatch(".*(\\<.*\\>).*", "matches!!%!", `std.Some [	/* word at start of string */
		"matches",
	][:])
	testmatch(".*(\\<.*\\>).*", "!@#!!matches", `std.Some [	/* word at end of string */
		"matches",
	][:])
	testmatch(".*(\\<.*\\>).*", "!@#!!matches!!%!foo", `std.Some [	/* matches last word in string */
		"foo",
	][:])
	testmatch(".*(\\<.*\\>).*", "123", `std.Some [	/* numbers are also word bounds */
		"123",
	][:])
	
	/* nonmatches */
	testmatch("\\<([a-z]*)\\>foo", "abcdefoo", `std.None)	/* word boundary needed in midstring */
}