--- test case: "space after single-character macro name" in: macro: '{$A }' out: return: 'FAIL' --- test case: "space before single-character macro name" in: macro: '{$ A}' out: return: 'FAIL' --- test case: "macro without closing brace" in: macro: '{$A' out: return: 'FAIL' --- test case: "macro without name" in: macro: '{$}' out: return: 'FAIL' --- test case: "lower case single-character macro name" in: macro: '{$a}' out: return: 'FAIL' --- test case: capitalized macro name" in: macro: '{$Ab}' out: return: 'FAIL' --- test case: "no closing brace, empty context" in: macro: '{$A:' out: return: 'FAIL' --- test case: "no closing brace, one opening quote in context" in: macro: '{$A: "' out: return: 'FAIL' --- test case: "one opening quote in context" in: macro: '{$A: "}' out: return: 'FAIL' --- test case: "one opening quote in before 1-digit context" in: macro: '{$A:"1}' out: return: 'FAIL' --- test case: "quoted context with extra character after" in: macro: '{$A:"1"2}' out: return: 'FAIL' --- test case: "one opening quote in before 1-digit context with space" in: macro: '{$A:"1 }' out: return: 'FAIL' --- test case: "valid single-character macro" in: macro: '{$A}' out: return: 'SUCCEED' macro_r: 3 context_l: 0 context_r: 0 --- test case: "valid multi-character macro" in: macro: '{$ABCD}' out: return: 'SUCCEED' macro_r: 6 context_l: 0 context_r: 0 --- test case: "extra character after }" in: macro: '{$ABC}D' out: return: 'SUCCEED' macro_r: 5 context_l: 0 context_r: 0 --- test case: "1-digit context" in: macro: '{$A:1}' out: return: 'SUCCEED' macro_r: 5 context_l: 4 context_r: 4 --- test case: "multi-digit context" in: macro: '{$A:1234}' out: return: 'SUCCEED' macro_r: 8 context_l: 4 context_r: 7 --- test case: "1-digit context and space" in: macro: '{$A:1 }' out: return: 'SUCCEED' macro_r: 6 context_l: 4 context_r: 5 --- test case: "space before 1-digit context" in: macro: '{$A: 1}' out: return: 'SUCCEED' macro_r: 6 context_l: 5 context_r: 5 --- test case: "space before and after 1-digit context" in: macro: '{$A: 1 }' out: return: 'SUCCEED' macro_r: 7 context_l: 5 context_r: 6 --- test case: "quoted 1-digit context with 2 spaces before" in: macro: '{$A: "1"}' out: return: 'SUCCEED' macro_r: 9 context_l: 6 context_r: 8 --- test case: "quoted 1-digit context with 2 spaces before and after" in: macro: '{$A: "1" }' out: return: 'SUCCEED' macro_r: 11 context_l: 6 context_r: 8 --- test case: "two spaces before quoted context with escaped quotes" in: macro: '{$A: "\"1\""}' out: return: 'SUCCEED' macro_r: 13 context_l: 6 context_r: 12 --- test case: "two spaces around quoted context with escaped quotes" in: macro: '{$A: "\"1\"" }' out: return: 'SUCCEED' macro_r: 15 context_l: 6 context_r: 12 --- test case: "quoted context with macro look-alike string, spaces around quotes" in: macro: '{$A: "{$B}" }' out: return: 'SUCCEED' macro_r: 12 context_l: 5 context_r: 10 --- test case: "empty context" in: macro: '{$A:}' out: return: 'SUCCEED' macro_r: 4 context_l: 4 context_r: 3 --- test case: "ignore regex prefix for nonregex match" in: macro: '{$A:regex:}' out: return: 'SUCCEED' macro_r: 10 context_l: 4 context_r: 9 --- test case: "unterminated regex prefix" in: macro: '{$A:regex}' match: true out: return: 'SUCCEED' macro_r: 9 context_l: 4 context_r: 8 --- test case: "empty regex match" in: macro: '{$A:regex:}' match: true out: return: 'SUCCEED' macro_r: 10 context_l: 10 context_r: 9 --- test case: "simple regex match" in: macro: '{$A:regex:(A|B):}' match: true out: return: 'SUCCEED' macro_r: 16 context_l: 10 context_r: 15 --- test case: "simple regex match" in: macro: '{$A:regex:(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|B):}' match: true out: return: 'SUCCEED' macro_r: 2035 context_l: 10 context_r: 2034 ...