Subversion Repositories javautils

Rev

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
}