143 lines
2.7 KiB
TOML
143 lines
2.7 KiB
TOML
[[test]]
|
|
name = "1"
|
|
regex = "a"
|
|
haystack = "aaa"
|
|
matches = [[0, 1], [1, 2], [2, 3]]
|
|
|
|
[[test]]
|
|
name = "2"
|
|
regex = "a"
|
|
haystack = "aba"
|
|
matches = [[0, 1], [2, 3]]
|
|
|
|
[[test]]
|
|
name = "empty1"
|
|
regex = ''
|
|
haystack = ''
|
|
matches = [[0, 0]]
|
|
|
|
[[test]]
|
|
name = "empty2"
|
|
regex = ''
|
|
haystack = 'abc'
|
|
matches = [[0, 0], [1, 1], [2, 2], [3, 3]]
|
|
|
|
[[test]]
|
|
name = "empty3"
|
|
regex = '(?:)'
|
|
haystack = 'abc'
|
|
matches = [[0, 0], [1, 1], [2, 2], [3, 3]]
|
|
|
|
[[test]]
|
|
name = "empty4"
|
|
regex = '(?:)*'
|
|
haystack = 'abc'
|
|
matches = [[0, 0], [1, 1], [2, 2], [3, 3]]
|
|
|
|
[[test]]
|
|
name = "empty5"
|
|
regex = '(?:)+'
|
|
haystack = 'abc'
|
|
matches = [[0, 0], [1, 1], [2, 2], [3, 3]]
|
|
|
|
[[test]]
|
|
name = "empty6"
|
|
regex = '(?:)?'
|
|
haystack = 'abc'
|
|
matches = [[0, 0], [1, 1], [2, 2], [3, 3]]
|
|
|
|
[[test]]
|
|
name = "empty7"
|
|
regex = '(?:)(?:)'
|
|
haystack = 'abc'
|
|
matches = [[0, 0], [1, 1], [2, 2], [3, 3]]
|
|
|
|
[[test]]
|
|
name = "empty8"
|
|
regex = '(?:)+|z'
|
|
haystack = 'abc'
|
|
matches = [[0, 0], [1, 1], [2, 2], [3, 3]]
|
|
|
|
[[test]]
|
|
name = "empty9"
|
|
regex = 'z|(?:)+'
|
|
haystack = 'abc'
|
|
matches = [[0, 0], [1, 1], [2, 2], [3, 3]]
|
|
|
|
[[test]]
|
|
name = "empty10"
|
|
regex = '(?:)+|b'
|
|
haystack = 'abc'
|
|
matches = [[0, 0], [1, 1], [2, 2], [3, 3]]
|
|
|
|
[[test]]
|
|
name = "empty11"
|
|
regex = 'b|(?:)+'
|
|
haystack = 'abc'
|
|
matches = [[0, 0], [1, 2], [3, 3]]
|
|
|
|
[[test]]
|
|
name = "start1"
|
|
regex = "^a"
|
|
haystack = "a"
|
|
matches = [[0, 1]]
|
|
|
|
[[test]]
|
|
name = "start2"
|
|
regex = "^a"
|
|
haystack = "aa"
|
|
matches = [[0, 1]]
|
|
|
|
[[test]]
|
|
name = "anchored1"
|
|
regex = "a"
|
|
haystack = "a"
|
|
matches = [[0, 1]]
|
|
anchored = true
|
|
|
|
# This test is pretty subtle. It demonstrates the crucial difference between
|
|
# '^a' and 'a' compiled in 'anchored' mode. The former regex exclusively
|
|
# matches at the start of a haystack and nowhere else. The latter regex has
|
|
# no such restriction, but its automaton is constructed such that it lacks a
|
|
# `.*?` prefix. So it can actually produce matches at multiple locations.
|
|
# The anchored3 test drives this point home.
|
|
[[test]]
|
|
name = "anchored2"
|
|
regex = "a"
|
|
haystack = "aa"
|
|
matches = [[0, 1], [1, 2]]
|
|
anchored = true
|
|
|
|
# Unlikely anchored2, this test stops matching anything after it sees `b`
|
|
# since it lacks a `.*?` prefix. Since it is looking for 'a' but sees 'b', it
|
|
# determines that there are no remaining matches.
|
|
[[test]]
|
|
name = "anchored3"
|
|
regex = "a"
|
|
haystack = "aaba"
|
|
matches = [[0, 1], [1, 2]]
|
|
anchored = true
|
|
|
|
[[test]]
|
|
name = "nonempty-followedby-empty"
|
|
regex = 'abc|.*?'
|
|
haystack = "abczzz"
|
|
matches = [[0, 3], [4, 4], [5, 5], [6, 6]]
|
|
|
|
[[test]]
|
|
name = "nonempty-followedby-oneempty"
|
|
regex = 'abc|.*?'
|
|
haystack = "abcz"
|
|
matches = [[0, 3], [4, 4]]
|
|
|
|
[[test]]
|
|
name = "nonempty-followedby-onemixed"
|
|
regex = 'abc|.*?'
|
|
haystack = "abczabc"
|
|
matches = [[0, 3], [4, 7]]
|
|
|
|
[[test]]
|
|
name = "nonempty-followedby-twomixed"
|
|
regex = 'abc|.*?'
|
|
haystack = "abczzabc"
|
|
matches = [[0, 3], [4, 4], [5, 8]]
|