description = '''
collect_rev_nulls_debug regression tests. rev_nulls = exact list of null
positions (descending) returned by Regex::collect_rev_nulls_debug(input).
'''
[[test]]
name = "digits"
pattern = '1(?=[012])\d'
input = "11"
rev_nulls = [0]
[[test]]
name = "digit_trailing_boundary_before_nonword"
pattern = '\d+\b'
input = " 2)"
rev_nulls = [1]
[[test]]
name = "digit_wrapped_boundary_before_nonword"
pattern = '\b\d+\b'
input = " 2)"
rev_nulls = [1]
[[test]]
name = "digit_star_digit_boundary_before_nonword"
pattern = '\d*\d+\b'
input = " 2)"
rev_nulls = [1]
[[test]]
name = "neg_word_lookbehind_digit_star_digit_boundary_before_nonword"
pattern = '(?<!\w)\d*\d+\b'
input = " 2)"
rev_nulls = [1]
[[test]]
name = "literal_lookahead_alt_star_plus"
pattern = '(?:(?=b)|-)b*b+'
input = " b"
rev_nulls = [1]
[[test]]
name = "literal_star_plus_neg_lookahead"
pattern = 'b*b+(?!b)'
input = " b)"
rev_nulls = [1]
[[test]]
name = "literal_lookahead_star_plus_neg_lookahead"
pattern = '(?=b)b*b+(?!b)'
input = " b)"
rev_nulls = [1]
[[test]]
name = "literal_alt_star_plus_neg_lookahead"
pattern = '(?:b|-)b*b+(?!b)'
input = " b)"
rev_nulls = []
[[test]]
name = "sorted_space_class_space"
pattern = ' [A-Z][a-z]+ '
input = " Hello World Foo "
rev_nulls = [12, 6, 0]
[[test]]
name = "sorted_class_no_anchors"
pattern = '[A-Z][a-z]+'
input = " Hello World Foo "
rev_nulls = [13, 7, 1]
[[test]]
name = "readme_lookahead_lookbehind"
pattern = '(?<=\s)[A-Z][a-z]+(?=\s)'
input = " Hello World Foo "
rev_nulls = [13, 7, 1]
[[test]]
name = "lookahead_simple"
pattern = 'a(?=b)'
input = "_ab_ab_"
rev_nulls = [4, 1]
[[test]]
name = "dotstar_lookahead_aaa_short"
pattern = '.*(?=aaa)'
input = "baaa"
rev_nulls = [1, 0]
[[test]]
name = "dotstar_lookahead_aaa_long"
pattern = '.*(?=aaa)'
input = "bbbbbbbbbbaaa"
rev_nulls = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
[[test]]
name = "dotstar_lookahead_chained_short"
pattern = '.*(?=.*bbb)(?=.*ccc)'
input = "aaa bbb ccc"
rev_nulls = [4, 3, 2, 1, 0]
[[test]]
name = "dotstar_lookahead_chained_long"
pattern = '.*(?=.*bbb)(?=.*ccc)'
input = "aaaaaaaaaa bbb aaaaaaaaaa ccc"
rev_nulls = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
[[test]]
name = "lookahead_word_boundary"
pattern = 'a+\b(?=.*---)'
input = "aaa ---"
rev_nulls = [2, 1, 0]
[[test]]
name = "lookbehind_lookahead_combined"
pattern = '(?<=a.*).(?=.*c)'
input = "a__c"
rev_nulls = [2, 1]
[[test]]
name = "lookahead_class_repetition"
pattern = '[a-z]+(?=[A-Z])'
input = "abcDefGhi"
rev_nulls = [5, 4, 2, 1, 0]
[[test]]
name = "lookahead_time_pattern"
pattern = '\d+(?=[aApP]\.?[mM]\.?)'
input = "10pm"
rev_nulls = [1, 0]
[[test]]
name = "dotstar_inner_literal_multiline"
pattern = '.*=.*'
input = "first\nsecond=line\nthird"
rev_nulls = [12, 11, 10, 9, 8, 7, 6]
[[test]]
name = "neg_lookahead_begin_anchor_no_duplicate_nulls"
pattern = '(&~(\A))'
input = "abc"
rev_nulls = [2, 1]
[[test]]
name = "neg_lookahead_begin_anchor_no_duplicate_nulls_run"
pattern = '(?!\A)'
input = "aaaa"
rev_nulls = [3, 2, 1]
[[test]]
name = "bug10_lb_start_compl_newline"
pattern = '(?<=^)~(0+)'
input = "\n"
rev_nulls = [1, 0]
[[test]]
name = "complement_and_rev_nulls"
pattern = '~(.*and.*)'
input = "__A and B"
rev_nulls = [8, 7, 6, 5, 4, 3, 2, 1, 0]
[[test]]
name = "nullrun_eq_chain"
pattern = '[^=]+='
input = "a=b=c="
rev_nulls = [4, 2, 0]
[[test]]
name = "nullrun_eq_trailing_unmatched"
pattern = '[^=]+='
input = "abc=def=ghi"
rev_nulls = [6, 5, 4, 2, 1, 0]
[[test]]
name = "nullrun_eq_only_delim"
pattern = '[^=]+='
input = "="
rev_nulls = []
[[test]]
name = "nullrun_eq_quote"
pattern = '[^=]+="'
input = 'key="v1",KEY="v2",x='
rev_nulls = [11, 10, 9, 8, 7, 6, 5, 4, 2, 1, 0]
[[test]]
name = "nullrun_slash_pairs"
pattern = '\S+/\S+'
input = "ab/cd ef/gh x//y"
rev_nulls = [13, 12, 7, 6, 1, 0]
[[test]]
name = "nullrun_slash_unicode"
pattern = '\S+/\S+'
input = "éx/éy café/th"
rev_nulls = [11, 10, 9, 8, 2, 0]
[[test]]
name = "nullrun_single_class_chain"
pattern = '[^=]'
input = "a=b=c="
rev_nulls = [4, 2, 0]
[[test]]
name = "nullrun_pair_class"
pattern = '[^=][^=]'
input = "abc=def=ghi"
rev_nulls = [9, 8, 5, 4, 1, 0]
[[test]]
name = "nullrun_lower_plus_prose"
pattern = '[a-z]+'
input = "no delimiters here at all"
rev_nulls = [24, 23, 22, 20, 19, 17, 16, 15, 14, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 1, 0]
[[test]]
name = "nullrun_comma_chain"
pattern = '[^,]+,'
input = "a,b,,c,"
rev_nulls = [5, 2, 0]
[[test]]
name = "nullrun_a_plus_b_runs"
pattern = 'a+b'
input = "aaab aab b ab"
rev_nulls = [11, 6, 5, 2, 1, 0]
[[test]]
name = "nullrun_lower_pair_mixed"
pattern = '[a-z][a-z]'
input = "abcDefGhi"
rev_nulls = [7, 4, 1, 0]