# See: https://github.com/rust-lang/regex/issues/48
[[tests]]
name = "invalid-regex-no-crash-100"
regex = '(*)'
input = ""
matches = []
compiles = false

# See: https://github.com/rust-lang/regex/issues/48
[[tests]]
name = "invalid-regex-no-crash-200"
regex = '(?:?)'
input = ""
matches = []
compiles = false

# See: https://github.com/rust-lang/regex/issues/48
[[tests]]
name = "invalid-regex-no-crash-300"
regex = '(?)'
input = ""
matches = []
compiles = false

# See: https://github.com/rust-lang/regex/issues/48
[[tests]]
name = "invalid-regex-no-crash-400"
regex = '*'
input = ""
matches = []
compiles = false

# See: https://github.com/rust-lang/regex/issues/75
[[tests]]
name = "unsorted-binary-search-100"
regex = '(?i-u)[a_]+'
input = "A_"
matches = [[0, 2]]

# See: https://github.com/rust-lang/regex/issues/75
[[tests]]
name = "unsorted-binary-search-200"
regex = '(?i-u)[A_]+'
input = "a_"
matches = [[0, 2]]

# See: https://github.com/rust-lang/regex/issues/76
[[tests]]
name = "unicode-case-lower-nocase-flag"
regex = '(?i)\p{Ll}+'
input = "ΛΘΓΔα"
matches = [[0, 10]]

# See: https://github.com/rust-lang/regex/issues/99
[[tests]]
name = "negated-char-class-100"
regex = '(?i)[^x]'
input = "x"
matches = []

# See: https://github.com/rust-lang/regex/issues/99
[[tests]]
name = "negated-char-class-200"
regex = '(?i)[^x]'
input = "X"
matches = []

# See: https://github.com/rust-lang/regex/issues/101
[[tests]]
name = "ascii-word-underscore"
regex = '[[:word:]]'
input = "_"
matches = [[0, 1]]

# See: https://github.com/rust-lang/regex/issues/129
[[tests]]
name = "captures-repeat"
regex = '([a-f]){2}(?P<foo>[x-z])'
input = "abx"
captures = [
  [[0, 3], [0, 2], [2, 3]],
]

# See: https://github.com/rust-lang/regex/issues/153
[[tests]]
name = "alt-in-alt-100"
regex = 'ab?|$'
input = "az"
matches = [[0, 1], [2, 2]]

# See: https://github.com/rust-lang/regex/issues/153
[[tests]]
name = "alt-in-alt-200"
regex = '^(.*?)(\n|\r\n?|$)'
input = "ab\rcd"
matches = [[0, 3]]

# See: https://github.com/rust-lang/regex/issues/169
[[tests]]
name = "leftmost-first-prefix"
regex = 'z*azb'
input = "azb"
matches = [[0, 3]]

# See: https://github.com/rust-lang/regex/issues/191
[[tests]]
name = "many-alternates"
regex = '1|2|3|4|5|6|7|8|9|10|int'
input = "int"
matches = [[0, 3]]

# See: https://github.com/rust-lang/regex/issues/204
[[tests]]
name = "word-boundary-alone-100"
regex = '\b'
input = "Should this (work?)"
matches = [[0, 0], [6, 6], [7, 7], [11, 11], [13, 13], [17, 17]]

# See: https://github.com/rust-lang/regex/issues/204
[[tests]]
name = "word-boundary-alone-200"
regex = '\b'
input = "a b c"
matches = [[0, 0], [1, 1], [2, 2], [3, 3], [4, 4], [5, 5]]

# See: https://github.com/rust-lang/regex/issues/264
[[tests]]
name = "word-boundary-ascii-no-capture"
regex = '\B'
input = "\U00028F3E"
matches = [[0, 0], [1, 1], [2, 2], [3, 3], [4, 4]]
unicode = false
utf8 = false

# See: https://github.com/rust-lang/regex/issues/264
[[tests]]
name = "word-boundary-ascii-capture"
regex = '(\B)'
input = "\U00028F3E"
matches = [[0, 0], [1, 1], [2, 2], [3, 3], [4, 4]]
unicode = false
utf8 = false

# See: https://github.com/rust-lang/regex/issues/268
[[tests]]
name = "partial-anchor"
regex = '^a|b'
input = "ba"
matches = [[0, 1]]

# See: https://github.com/rust-lang/regex/issues/271
[[tests]]
name = "endl-or-word-boundary"
regex = '(?m:$)|(?-u:\b)'
input = "\U0006084E"
matches = [[4, 4]]

# See: https://github.com/rust-lang/regex/issues/271
[[tests]]
name = "zero-or-end"
regex = '(?i-u:\x00)|$'
input = "\U000E682F"
matches = [[4, 4]]

# See: https://github.com/rust-lang/regex/issues/271
[[tests]]
name = "y-or-endl"
regex = '(?i-u:y)|(?m:$)'
input = "\U000B4331"
matches = [[4, 4]]

# See: https://github.com/rust-lang/regex/issues/271
[[tests]]
name = "word-boundary-start-x"
regex = '(?u:\b)^(?-u:X)'
input = "X"
matches = [[0, 1]]

# See: https://github.com/rust-lang/regex/issues/271
[[tests]]
name = "word-boundary-ascii-start-x"
regex = '(?-u:\b)^(?-u:X)'
input = "X"
matches = [[0, 1]]

# See: https://github.com/rust-lang/regex/issues/271
[[tests]]
name = "end-not-word-boundary"
regex = '$\B'
input = "\U0005C124\U000B576C"
matches = [[8, 8]]
unicode = false
utf8 = false

# See: https://github.com/rust-lang/regex/issues/280
[[tests]]
name = "partial-anchor-alternate-begin"
regex = '^a|z'
input = "yyyyya"
matches = []

# See: https://github.com/rust-lang/regex/issues/280
[[tests]]
name = "partial-anchor-alternate-end"
regex = 'a$|z'
input = "ayyyyy"
matches = []

# See: https://github.com/rust-lang/regex/issues/289
[[tests]]
name = "lits-unambiguous-100"
regex = '(ABC|CDA|BC)X'
input = "CDAX"
matches = [[0, 4]]

# See: https://github.com/rust-lang/regex/issues/291
[[tests]]
name = "lits-unambiguous-200"
regex = '((IMG|CAM|MG|MB2)_|(DSCN|CIMG))(?P<n>[0-9]+)$'
input = "CIMG2341"
captures = [
  [[0, 8], [0, 4], [], [0, 4], [4, 8]],
]

# See: https://github.com/rust-lang/regex/issues/303
[[tests]]
name = "negated-full-byte-range"
regex = '[^\x00-\xFF]'
input = ""
matches = []
compiles = false
unicode = false
utf8 = false

# See: https://github.com/rust-lang/regex/issues/321
[[tests]]
name = "strange-anchor-non-complete-prefix"
regex = 'a^{2}'
input = ""
matches = []

# See: https://github.com/rust-lang/regex/issues/321
[[tests]]
name = "strange-anchor-non-complete-suffix"
regex = '${2}a'
input = ""
matches = []

# See: https://github.com/rust-lang/regex/issues/334
# See: https://github.com/rust-lang/regex/issues/557
[[tests]]
name = "captures-after-dfa-premature-end-100"
regex = 'a(b*(X|$))?'
input = "abcbX"
captures = [
  [[0, 1], [], []],
]

# See: https://github.com/rust-lang/regex/issues/334
# See: https://github.com/rust-lang/regex/issues/557
[[tests]]
name = "captures-after-dfa-premature-end-200"
regex = 'a(bc*(X|$))?'
input = "abcbX"
captures = [
  [[0, 1], [], []],
]

# See: https://github.com/rust-lang/regex/issues/334
# See: https://github.com/rust-lang/regex/issues/557
[[tests]]
name = "captures-after-dfa-premature-end-300"
regex = '(aa$)?'
input = "aaz"
captures = [
  [[0, 0]],
  [[1, 1]],
  [[2, 2]],
  [[3, 3]],
]

# See: https://github.com/rust-lang/regex/issues/437
[[tests]]
name = "literal-panic"
regex = 'typename type\-parameter\-[0-9]+\-[0-9]+::.+'
input = "test"
matches = []

# See: https://github.com/rust-lang/regex/issues/527
[[tests]]
name = "empty-flag-expr"
regex = '(((?x)))'
input = ""
matches = [[0, 0]]

# See: https://github.com/rust-lang/regex/issues/533
[[tests]]
name = "blank-matches-nothing-between-space-and-tab"
regex = '[[:blank:]]'
input = '\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F'
match = false
unescape = true

# See: https://github.com/rust-lang/regex/issues/533
[[tests]]
name = "blank-matches-nothing-between-space-and-tab-inverted"
regex = '^[[:^blank:]]+$'
input = '\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F'
match = true
unescape = true

# See: https://github.com/rust-lang/regex/issues/555
[[tests]]
name = "invalid-repetition"
regex = '(?m){1,1}'
input = ""
matches = []
compiles = false

# See: https://github.com/rust-lang/regex/issues/640
[[tests]]
name = "flags-are-unset"
regex = '((?i)foo)|Bar'
input = "foo Foo bar Bar"
matches = [[0, 3], [4, 7], [12, 15]]

# Note that 'Ј' is not 'j', but cyrillic Je
# https://en.wikipedia.org/wiki/Je_(Cyrillic)
#
# See: https://github.com/rust-lang/regex/issues/659
[[tests]]
name = "empty-group-with-unicode"
regex = '()Ј01'
input = 'zЈ01'
matches = [[1, 5]]

# See: https://github.com/rust-lang/regex/issues/579
[[tests]]
name = "word-boundary-weird"
regex = '\b..\b'
input = "I have 12, he has 2!"
matches = [[0, 2], [7, 9], [9, 11], [11, 13], [17, 19]]

# See: https://github.com/rust-lang/regex/issues/579
[[tests]]
name = "word-boundary-weird-ascii"
regex = '\b..\b'
input = "I have 12, he has 2!"
matches = [[0, 2], [7, 9], [9, 11], [11, 13], [17, 19]]
unicode = false
utf8 = false

# See: https://github.com/rust-lang/regex/issues/579
[[tests]]
name = "word-boundary-weird-minimal-ascii"
regex = '\b..\b'
input = "az,,b"
matches = [[0, 2], [2, 4]]
unicode = false
utf8 = false

# See: https://github.com/BurntSushi/ripgrep/issues/1203
[[tests]]
name = "reverse-suffix-100"
regex = '[0-4][0-4][0-4]000'
input = "153.230000"
matches = [[4, 10]]

# See: https://github.com/BurntSushi/ripgrep/issues/1203
[[tests]]
name = "reverse-suffix-200"
regex = '[0-9][0-9][0-9]000'
input = "153.230000\n"
matches = [[4, 10]]

# See: https://github.com/BurntSushi/ripgrep/issues/1247
[[tests]]
name = "stops"
regex = '\bs(?:[ab])'
input = 's\xE4'
matches = []
unescape = true

# See: https://github.com/BurntSushi/ripgrep/issues/1247
[[tests]]
name = "stops-ascii"
regex = '(?-u:\b)s(?:[ab])'
input = 's\xE4'
matches = []
unescape = true

# There is no issue for this bug.
[[tests]]
name = "anchored-prefix-100"
regex = '^a[[:^space:]]'
input = "a "
matches = []

# There is no issue for this bug.
[[tests]]
name = "anchored-prefix-200"
regex = '^a[[:^space:]]'
input = "foo boo a"
matches = []

# There is no issue for this bug.
[[tests]]
name = "anchored-prefix-300"
regex = '^-[a-z]'
input = "r-f"
matches = []

# Tests that a possible Aho-Corasick optimization works correctly. It only
# kicks in when we have a lot of literals. By "works correctly," we mean that
# leftmost-first match semantics are properly respected. That is, samwise
# should match, not sam.
#
# There is no issue for this bug.
[[tests]]
name = "aho-corasick-100"
regex = 'samwise|sam|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z'
input = "samwise"
matches = [[0, 7]]
