diff options
Diffstat (limited to 'pigeonhole/tests/extensions/encoded-character.svtest')
-rw-r--r-- | pigeonhole/tests/extensions/encoded-character.svtest | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/pigeonhole/tests/extensions/encoded-character.svtest b/pigeonhole/tests/extensions/encoded-character.svtest new file mode 100644 index 0000000..150d812 --- /dev/null +++ b/pigeonhole/tests/extensions/encoded-character.svtest @@ -0,0 +1,180 @@ +require "vnd.dovecot.testsuite"; + +require "encoded-character"; +require "variables"; + +test "HEX equality one" { + if not string "${hex:42}" "B" { + test_fail "failed to match the string 'B'"; + } + + if string "${hex:42}" "b" { + test_fail "matched nonsense"; + } + + if string "${hex:42}" "" { + test_fail "substitution failed"; + } +} + +test "HEX equality one middle" { + if not string " ${hex:42} " " B " { + test_fail "failed to match the string ' B '"; + } + + if string " ${hex:42} " " b " { + test_fail "matched nonsense"; + } + + if string " ${hex:42} " " " { + test_fail "substitution failed"; + } +} + +test "HEX equality one begin" { + if not string "${hex:42} " "B " { + test_fail "failed to match the string 'B '"; + } + + if string "${hex:42} " " b" { + test_fail "matched nonsense"; + } + + if string "${hex:42} " " " { + test_fail "substitution failed"; + } +} + +test "HEX equality one end" { + if not string " ${hex:42}" " B" { + test_fail "failed to match the string ' B'"; + } + + if string " ${hex:42}" " b " { + test_fail "matched nonsense"; + } + + if string " ${hex:42}" " " { + test_fail "substitution failed"; + } +} + +test "HEX equality two triple" { + if not string "${hex:42 61 64}${hex: 61 73 73}" "Badass" { + test_fail "failed to match the string 'Badass'"; + } + + if string "${hex:42 61 64}${hex: 61 73 73}" "Sadass" { + test_fail "matched nonsense"; + } + + if string "${hex:42 61 64}${hex: 61 73 73}" "" { + test_fail "substitution failed"; + } +} + +test "HEX equality braindead" { + if not string "${hex:42 72 61 69 6E 64 65 61 64}" "Braindead" { + test_fail "failed to match the string 'Braindead'"; + } + + if string "${hex:42 72 61 69 6E 64 65 61 64}" "Brian Nut" { + test_fail "matched nonsense"; + } +} + +test "Syntax errors" { + if anyof( not string "$" "${hex:24}", not string "$ " "${hex:24} ", not string " $" " ${hex:24}" ) { + test_fail "loose $ handled inappropriately"; + } + + if anyof( not string "${" "${hex:24}{", not string "a${" "a${hex:24}{", not string "${a" "${hex:24}{a" ) { + test_fail "loose ${ handled inappropriately"; + } + + if anyof( not string "${}" "${hex:24}{}", not string "b${}" "b${hex:24}{}", not string "${}b" "${hex:24}{}b" ) { + test_fail "entirely missing content handled inappropriately"; + } + + if not string "${:}" "${hex:24}{:}" { + test_fail "missing content handled inappropriately"; + } + + if not string "${hex:}" "${hex:24}{hex:}" { + test_fail "missing hex content handled inappropriately"; + } + + if not string "${unicode:}" "${hex:24}{unicode:}" { + test_fail "missing unicode content handled inappropriately"; + } + + if not string "${hex:sss}" "${hex:24}{hex:sss}" { + test_fail "erroneous hex content handled inappropriately"; + } + + if not string "${unicode:ttt}" "${hex:24}{unicode:ttt}" { + test_fail "erroneous unicode content handled inappropriately"; + } + + if not string "${hex:aa aa" "${hex:24}{hex:aa aa" { + test_fail "unterminated hex content handled inappropriately"; + } + + if not string "${unicode: aaaa aaaa" "${hex:24}{unicode: aaaa aaaa" { + test_fail "unterminated unicode content handled inappropriately"; + } +} + +/* + * RFC Examples + */ + +test "RFC Examples" { + if not string "$${hex:40}" "$@" { + test_fail "failed RFC example 1"; + } + + if not string "${hex: 40 }" "@" { + test_fail "failed RFC example 2"; + } + + if not string "${HEX: 40}" "@" { + test_fail "failed RFC example 3"; + } + + if not string "${hex:40" "${hex:40" { + test_fail "failed RFC example 4"; + } + + if not string "${hex:400}" "${hex:400}" { + test_fail "failed RFC example 5"; + } + + if not string "${hex:4${hex:30}}" "${hex: 24}{hex:40}" { + test_fail "failed RFC example 6"; + } + + if not string "${unicode:40}" "@" { + test_fail "failed RFC example 7"; + } + + if not string "${ unicode:40}" "${ unicode:40}" { + test_fail "failed RFC example 8"; + } + + if not string "${UNICODE:40}" "@" { + test_fail "failed RFC example 9"; + } + + if not string "${UnICoDE:0000040}" "@" { + test_fail "failed RFC example 10"; + } + + if not string "${Unicode:40}" "@" { + test_fail "failed RFC example 11"; + } + + if not string "${Unicode:Cool}" "${Unicode:Cool}" { + test_fail "failed RFC example 12"; + } +} |