Rev 17 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
17 | daniel-mar | 1 | package de.viathinksoft.utils.mail.address; |
3 | daniel-mar | 2 | |
3 | import static org.junit.Assert.*; |
||
4 | |||
5 | import java.net.IDN; |
||
6 | |||
7 | import org.junit.Test; |
||
8 | |||
17 | daniel-mar | 9 | import de.viathinksoft.utils.mail.address.EMailAddress; |
10 | |||
3 | daniel-mar | 11 | public class EMailAddressTest { |
24 | daniel-mar | 12 | |
13 | // Japanese IDN Test TLD |
||
14 | private static final String ExamplePunycode = "xn--zckzah"; |
||
3 | daniel-mar | 15 | private static final String ExampleUnicode = IDN.toUnicode(ExamplePunycode); |
24 | daniel-mar | 16 | |
3 | daniel-mar | 17 | @Test |
9 | daniel-mar | 18 | public void testAddressParsing() { |
3 | daniel-mar | 19 | try { |
20 | new EMailAddress(null); |
||
21 | fail(); |
||
9 | daniel-mar | 22 | } catch (NullPointerException e) { |
3 | daniel-mar | 23 | } |
24 | daniel-mar | 24 | |
3 | daniel-mar | 25 | EMailAddress a; |
24 | daniel-mar | 26 | |
9 | daniel-mar | 27 | a = new EMailAddress(""); |
28 | assertEquals("", a.getLocalPart()); |
||
29 | // assertEquals("", a.getLocalPartASCII()); |
||
30 | assertEquals("", a.getDomainPartUnicode()); |
||
31 | assertEquals("", a.getDomainPartPunycode()); |
||
32 | assertEquals("", a.getTldUnicode()); |
||
33 | assertEquals("", a.getTldPunycode()); |
||
34 | assertEquals("", a.toString()); |
||
35 | assertEquals("", a.getMailAddressUnicode()); |
||
36 | assertEquals("", a.getMailAddressPunycodedDomain()); |
||
37 | |||
38 | a = new EMailAddress("bla"); |
||
39 | assertEquals("bla", a.getLocalPart()); |
||
40 | // assertEquals("", a.getLocalPartASCII()); |
||
41 | assertEquals("", a.getDomainPartUnicode()); |
||
42 | assertEquals("", a.getDomainPartPunycode()); |
||
43 | assertEquals("", a.getTldUnicode()); |
||
44 | assertEquals("", a.getTldPunycode()); |
||
45 | assertEquals("bla", a.toString()); |
||
46 | assertEquals("bla", a.getMailAddressUnicode()); |
||
47 | assertEquals("bla", a.getMailAddressPunycodedDomain()); |
||
24 | daniel-mar | 48 | |
9 | daniel-mar | 49 | a = new EMailAddress(ExampleUnicode); |
50 | assertEquals(ExampleUnicode, a.getLocalPart()); |
||
51 | // assertEquals("", a.getLocalPartASCII()); |
||
52 | assertEquals("", a.getDomainPartUnicode()); |
||
53 | assertEquals("", a.getDomainPartPunycode()); |
||
54 | assertEquals("", a.getTldUnicode()); |
||
55 | assertEquals("", a.getTldPunycode()); |
||
56 | assertEquals(ExampleUnicode, a.toString()); |
||
57 | assertEquals(ExampleUnicode, a.getMailAddressUnicode()); |
||
58 | assertEquals(ExampleUnicode, a.getMailAddressPunycodedDomain()); |
||
3 | daniel-mar | 59 | |
9 | daniel-mar | 60 | a = new EMailAddress("@"); |
61 | assertEquals("", a.getLocalPart()); |
||
62 | // assertEquals("", a.getLocalPartASCII()); |
||
63 | assertEquals("", a.getDomainPartUnicode()); |
||
64 | assertEquals("", a.getDomainPartPunycode()); |
||
65 | assertEquals("", a.getTldUnicode()); |
||
66 | assertEquals("", a.getTldPunycode()); |
||
67 | assertEquals("", a.toString()); |
||
68 | assertEquals("", a.getMailAddressUnicode()); |
||
69 | assertEquals("", a.getMailAddressPunycodedDomain()); |
||
70 | |||
3 | daniel-mar | 71 | a = new EMailAddress("local@domain"); |
9 | daniel-mar | 72 | assertEquals("local", a.getLocalPart()); |
73 | // assertEquals("local", a.getLocalPartASCII()); |
||
74 | assertEquals("domain", a.getDomainPartUnicode()); |
||
75 | assertEquals("domain", a.getDomainPartPunycode()); |
||
76 | assertEquals("", a.getTldUnicode()); |
||
77 | assertEquals("", a.getTldPunycode()); |
||
78 | assertEquals("local@domain", a.toString()); |
||
79 | assertEquals("local@domain", a.getMailAddressUnicode()); |
||
80 | assertEquals("local@domain", a.getMailAddressPunycodedDomain()); |
||
3 | daniel-mar | 81 | |
82 | a = new EMailAddress("local@domain.tld"); |
||
9 | daniel-mar | 83 | assertEquals("local", a.getLocalPart()); |
84 | // assertEquals("local", a.getlocalPartASCII()); |
||
85 | assertEquals("domain.tld", a.getDomainPartUnicode()); |
||
86 | assertEquals("domain.tld", a.getDomainPartPunycode()); |
||
87 | assertEquals("tld", a.getTldUnicode()); |
||
88 | assertEquals("tld", a.getTldPunycode()); |
||
89 | assertEquals("local@domain.tld", a.toString()); |
||
90 | assertEquals("local@domain.tld", a.getMailAddressUnicode()); |
||
91 | assertEquals("local@domain.tld", a.getMailAddressPunycodedDomain()); |
||
24 | daniel-mar | 92 | |
93 | a = new EMailAddress("local@" + ExampleUnicode + ".jp"); |
||
9 | daniel-mar | 94 | assertEquals("local", a.getLocalPart()); |
95 | // assertEquals("local", a.getlocalPartASCII()); |
||
24 | daniel-mar | 96 | assertEquals(ExampleUnicode + ".jp", a.getDomainPartUnicode()); |
97 | assertEquals(ExamplePunycode + ".jp", a.getDomainPartPunycode()); |
||
9 | daniel-mar | 98 | assertEquals("jp", a.getTldUnicode()); |
99 | assertEquals("jp", a.getTldPunycode()); |
||
24 | daniel-mar | 100 | assertEquals("local@" + ExampleUnicode + ".jp", a |
101 | .getMailAddressUnicode()); |
||
102 | assertEquals("local@" + ExamplePunycode + ".jp", a |
||
103 | .getMailAddressPunycodedDomain()); |
||
3 | daniel-mar | 104 | EMailAddress.USE_UNICODE_AS_STANDARD = true; |
24 | daniel-mar | 105 | assertEquals("local@" + ExampleUnicode + ".jp", a.toString()); |
3 | daniel-mar | 106 | EMailAddress.USE_UNICODE_AS_STANDARD = false; |
24 | daniel-mar | 107 | assertEquals("local@" + ExamplePunycode + ".jp", a.toString()); |
3 | daniel-mar | 108 | |
24 | daniel-mar | 109 | a = new EMailAddress("local@example." + ExampleUnicode); |
9 | daniel-mar | 110 | assertEquals("local", a.getLocalPart()); |
111 | // assertEquals("local", a.getlocalPartASCII()); |
||
24 | daniel-mar | 112 | assertEquals("example." + ExampleUnicode, a.getDomainPartUnicode()); |
113 | assertEquals("example." + ExamplePunycode, a.getDomainPartPunycode()); |
||
9 | daniel-mar | 114 | assertEquals(ExampleUnicode, a.getTldUnicode()); |
115 | assertEquals(ExamplePunycode, a.getTldPunycode()); |
||
24 | daniel-mar | 116 | assertEquals("local@example." + ExampleUnicode, a |
117 | .getMailAddressUnicode()); |
||
118 | assertEquals("local@example." + ExamplePunycode, a |
||
119 | .getMailAddressPunycodedDomain()); |
||
3 | daniel-mar | 120 | EMailAddress.USE_UNICODE_AS_STANDARD = true; |
24 | daniel-mar | 121 | assertEquals("local@example." + ExampleUnicode, a.toString()); |
3 | daniel-mar | 122 | EMailAddress.USE_UNICODE_AS_STANDARD = false; |
24 | daniel-mar | 123 | assertEquals("local@example." + ExamplePunycode, a.toString()); |
3 | daniel-mar | 124 | } |
24 | daniel-mar | 125 | |
3 | daniel-mar | 126 | @Test |
127 | public void testIsUnicode() { |
||
128 | assertFalse(EMailAddress.isUnicode(null)); |
||
129 | assertFalse(EMailAddress.isUnicode("")); |
||
130 | assertFalse(EMailAddress.isUnicode(ExamplePunycode)); |
||
131 | assertTrue(EMailAddress.isUnicode(ExampleUnicode)); |
||
132 | } |
||
24 | daniel-mar | 133 | |
3 | daniel-mar | 134 | @Test |
135 | public void testIsPunycode() { |
||
136 | assertFalse(EMailAddress.isPunycode(null)); |
||
137 | assertFalse(EMailAddress.isPunycode("")); |
||
138 | assertTrue(EMailAddress.isPunycode(ExamplePunycode)); |
||
139 | assertFalse(EMailAddress.isPunycode(ExampleUnicode)); |
||
140 | } |
||
24 | daniel-mar | 141 | |
3 | daniel-mar | 142 | @Test |
9 | daniel-mar | 143 | public void testClone() throws CloneNotSupportedException { |
24 | daniel-mar | 144 | EMailAddress a = new EMailAddress("local@example." + ExampleUnicode); |
3 | daniel-mar | 145 | EMailAddress b = (EMailAddress) a.clone(); |
24 | daniel-mar | 146 | |
3 | daniel-mar | 147 | assertFalse(a == b); |
148 | assertTrue(a.equals(b)); |
||
149 | assertTrue(b.equals(a)); |
||
24 | daniel-mar | 150 | |
9 | daniel-mar | 151 | assertEquals(b.getDomainPartPunycode(), a.getDomainPartPunycode()); |
152 | assertEquals(b.getDomainPartUnicode(), a.getDomainPartUnicode()); |
||
153 | assertEquals(b.getLocalPart(), a.getLocalPart()); |
||
24 | daniel-mar | 154 | assertEquals(b.getMailAddressPunycodedDomain(), a |
155 | .getMailAddressPunycodedDomain()); |
||
9 | daniel-mar | 156 | assertEquals(b.getMailAddressUnicode(), a.getMailAddressUnicode()); |
157 | assertEquals(b.getTldPunycode(), a.getTldPunycode()); |
||
158 | assertEquals(b.getTldUnicode(), a.getTldUnicode()); |
||
3 | daniel-mar | 159 | EMailAddress.USE_UNICODE_AS_STANDARD = true; |
9 | daniel-mar | 160 | assertEquals(b.toString(), a.toString()); |
3 | daniel-mar | 161 | EMailAddress.USE_UNICODE_AS_STANDARD = false; |
9 | daniel-mar | 162 | assertEquals(b.toString(), a.toString()); |
3 | daniel-mar | 163 | } |
24 | daniel-mar | 164 | |
3 | daniel-mar | 165 | @Test |
9 | daniel-mar | 166 | public void testEquals() { |
24 | daniel-mar | 167 | EMailAddress a = new EMailAddress("local@example." + ExampleUnicode); |
168 | EMailAddress b = new EMailAddress("local@example." + ExampleUnicode); |
||
169 | |||
3 | daniel-mar | 170 | assertFalse(a == b); |
171 | assertTrue(a.equals(b)); |
||
172 | assertTrue(b.equals(a)); |
||
173 | } |
||
24 | daniel-mar | 174 | |
175 | @Test |
||
176 | public void preprocessTrimTest() { |
||
177 | // Check that trim() works |
||
178 | assertEquals( |
||
179 | "test@test.de", |
||
180 | EMailAddress |
||
181 | .preprocess(" \t \n\t\n\r test@test.de \t \n\r\n \r ")); |
||
182 | } |
||
183 | |||
184 | @Test |
||
185 | public void preprocessIDNTest() { |
||
186 | // Check that IDN addresses are decoded |
||
187 | assertEquals("test@" + ExamplePunycode + "." + ExamplePunycode, |
||
188 | EMailAddress.preprocess(" \t \n\t\n\r test@" + ExampleUnicode |
||
189 | + "." + ExampleUnicode + " \t \n\r\n \r ")); |
||
190 | } |
||
3 | daniel-mar | 191 | } |