diff options
| author | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2011-01-23 08:26:17 +0000 |
|---|---|---|
| committer | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2011-01-23 08:26:17 +0000 |
| commit | 14d951b7361f79cc09207aa77dd83bf069609338 (patch) | |
| tree | a72482e712af2d019f3f50dc13eec1fe409eead6 /plugins/managesieve/tests | |
| parent | c72e34f773a84486dd9b2d08d856583fb030877f (diff) | |
- Rewritten sieve script parser, added tests
git-svn-id: https://svn.roundcube.net/trunk@4447 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'plugins/managesieve/tests')
| -rw-r--r-- | plugins/managesieve/tests/Makefile | 7 | ||||
| -rw-r--r-- | plugins/managesieve/tests/parser.phpt | 86 | ||||
| -rw-r--r-- | plugins/managesieve/tests/tokenize.phpt | 63 |
3 files changed, 156 insertions, 0 deletions
diff --git a/plugins/managesieve/tests/Makefile b/plugins/managesieve/tests/Makefile new file mode 100644 index 000000000..072be2f2c --- /dev/null +++ b/plugins/managesieve/tests/Makefile @@ -0,0 +1,7 @@ + +clean: + rm -f *.log *.php *.diff *.exp *.out + + +test: + pear run-tests *.phpt diff --git a/plugins/managesieve/tests/parser.phpt b/plugins/managesieve/tests/parser.phpt new file mode 100644 index 000000000..27952eb1f --- /dev/null +++ b/plugins/managesieve/tests/parser.phpt @@ -0,0 +1,86 @@ +--TEST-- +Main test of script parser +--SKIPIF-- +--FILE-- +<?php +include('../lib/rcube_sieve.php'); + +$txt = ' +require ["fileinto","vacation"]; +# rule:[spam] +if anyof (header :contains "X-DSPAM-Result" "Spam") +{ + fileinto "Spam"; + stop; +} +# rule:[test1] +if anyof (header :contains ["From","To"] "test@domain.tld") +{ + fileinto "roundcube-trac"; + stop; +} +# rule:[test2] +if anyof (not header :contains "Subject" "[test]", header :contains "Subject" "[test2]") +{ + fileinto "test"; + stop; +} +# rule:[test-vacation] +if anyof (header :contains "Subject" "vacation") +{ + vacation :days 1 text: +# test +test test /* test */ +test +. +; + stop; +} +# rule:[comments] +if anyof (true) /* comment + * "comment" #comment */ { + /* comment */ stop; +# comment +} +'; + +$s = new rcube_sieve_script($txt); +echo $s->as_text(); + +?> +--EXPECT-- +require ["fileinto","vacation"]; +# rule:[spam] +if anyof (header :contains "X-DSPAM-Result" "Spam") +{ + fileinto "Spam"; + stop; +} +# rule:[test1] +if anyof (header :contains ["From","To"] "test@domain.tld") +{ + fileinto "roundcube-trac"; + stop; +} +# rule:[test2] +if anyof (not header :contains "Subject" "[test]", header :contains "Subject" "[test2]") +{ + fileinto "test"; + stop; +} +# rule:[test-vacation] +if anyof (header :contains "Subject" "vacation") +{ + vacation :days 1 text: +# test +test test /* test */ +test +. +; + stop; +} +# rule:[comments] +if anyof (true) +{ + stop; +} diff --git a/plugins/managesieve/tests/tokenize.phpt b/plugins/managesieve/tests/tokenize.phpt new file mode 100644 index 000000000..6b3531e2c --- /dev/null +++ b/plugins/managesieve/tests/tokenize.phpt @@ -0,0 +1,63 @@ +--TEST-- +Script parsing: tokenizer +--SKIPIF-- +--FILE-- +<?php +include('../lib/rcube_sieve.php'); + +$txt[1] = array(1, 'text: #test +This is test ; message; +Multi line +. +; +'); +$txt[2] = array(0, '["test1","test2"]'); +$txt[3] = array(1, '["test"]'); +$txt[4] = array(1, '"te\\"st"'); +$txt[5] = array(0, 'test #comment'); +$txt[6] = array(0, 'text: +test +. +text: +test +. +'); + +foreach ($txt as $idx => $t) { + echo "[$idx]---------------\n"; + var_dump(rcube_sieve_script::tokenize($t[1], $t[0])); +} +?> +--EXPECT-- +[1]--------------- +string(34) "This is test ; message; +Multi line" +[2]--------------- +array(1) { + [0]=> + array(2) { + [0]=> + string(5) "test1" + [1]=> + string(5) "test2" + } +} +[3]--------------- +array(1) { + [0]=> + string(4) "test" +} +[4]--------------- +string(5) "te"st" +[5]--------------- +array(1) { + [0]=> + string(4) "test" +} +[6]--------------- +array(2) { + [0]=> + string(4) "test" + [1]=> + string(4) "test" +}
\ No newline at end of file |
