1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.jsieve.util;
20
21 import java.io.ByteArrayInputStream;
22 import java.io.StringWriter;
23
24 import org.apache.jsieve.ConfigurationManager;
25 import org.apache.jsieve.parser.generated.Node;
26
27 import junit.framework.TestCase;
28
29 public class SieveGenerationTest extends TestCase {
30
31 protected void setUp() throws Exception {
32 super.setUp();
33 }
34
35 protected void tearDown() throws Exception {
36 super.tearDown();
37 }
38
39 public void testShouldGenerateSoloToEmailScriptFromNode() throws Exception {
40 assertShouldRoundtripScript(
41 "if address :is :all [\"to\"] [\"coyote@desert.example.org\"] {"
42 + "fileinto [\"coyote\"];} "
43 + "if address :is :all [\"to\"] [\"bugs@example.org\"] {"
44 + "fileinto [\"bugs\"];} "
45 + "if address :is :all [\"to\"] [\"roadrunneracme.@example.org\"] {"
46 + "fileinto [\"rr\"];} "
47 + "if address :is :all [\"to\"] [\"elmer@hunters.example.org\"] {"
48 + "fileinto [\"elmer\"];}");
49 }
50
51 public void testShouldGenerateSimpleScriptFromNode() throws Exception {
52 assertShouldRoundtripScript("if address :all :is [\"from\"] [\"user@domain\"] {stop;}");
53 }
54
55 public void testShouldGenerateFileintoFromNode() throws Exception {
56 assertShouldRoundtripScript("fileinto [\"INBOX.test1\"]; fileinto [\"INBOX.test1\"];");
57 }
58
59 private void assertShouldRoundtripScript(final String script) throws Exception {
60
61 final Node node = new ConfigurationManager().build().parse(new ByteArrayInputStream(script.getBytes()));
62 final StringWriter monitor = new StringWriter();
63
64
65 OutputUtils.toSieve(node, monitor);
66
67
68 assertEquals(script, monitor.toString());
69 }
70
71 }