Subversion Repositories javautils

Rev

Rev 17 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. package de.viathinksoft.utils.mail.address;
  2.  
  3. import static org.junit.Assert.*;
  4.  
  5. import java.net.IDN;
  6.  
  7. import org.junit.Test;
  8.  
  9. import de.viathinksoft.utils.mail.address.EMailAddress;
  10.  
  11. public class EMailAddressTest {
  12.  
  13.         // Japanese IDN Test TLD
  14.         private static final String ExamplePunycode = "xn--zckzah";
  15.         private static final String ExampleUnicode = IDN.toUnicode(ExamplePunycode);
  16.  
  17.         @Test
  18.         public void testAddressParsing() {
  19.                 try {
  20.                         new EMailAddress(null);
  21.                         fail();
  22.                 } catch (NullPointerException e) {
  23.                 }
  24.  
  25.                 EMailAddress a;
  26.  
  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());
  48.  
  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());
  59.  
  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.  
  71.                 a = new EMailAddress("local@domain");
  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());
  81.  
  82.                 a = new EMailAddress("local@domain.tld");
  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());
  92.  
  93.                 a = new EMailAddress("local@" + ExampleUnicode + ".jp");
  94.                 assertEquals("local", a.getLocalPart());
  95.                 // assertEquals("local", a.getlocalPartASCII());
  96.                 assertEquals(ExampleUnicode + ".jp", a.getDomainPartUnicode());
  97.                 assertEquals(ExamplePunycode + ".jp", a.getDomainPartPunycode());
  98.                 assertEquals("jp", a.getTldUnicode());
  99.                 assertEquals("jp", a.getTldPunycode());
  100.                 assertEquals("local@" + ExampleUnicode + ".jp", a
  101.                                 .getMailAddressUnicode());
  102.                 assertEquals("local@" + ExamplePunycode + ".jp", a
  103.                                 .getMailAddressPunycodedDomain());
  104.                 EMailAddress.USE_UNICODE_AS_STANDARD = true;
  105.                 assertEquals("local@" + ExampleUnicode + ".jp", a.toString());
  106.                 EMailAddress.USE_UNICODE_AS_STANDARD = false;
  107.                 assertEquals("local@" + ExamplePunycode + ".jp", a.toString());
  108.  
  109.                 a = new EMailAddress("local@example." + ExampleUnicode);
  110.                 assertEquals("local", a.getLocalPart());
  111.                 // assertEquals("local", a.getlocalPartASCII());
  112.                 assertEquals("example." + ExampleUnicode, a.getDomainPartUnicode());
  113.                 assertEquals("example." + ExamplePunycode, a.getDomainPartPunycode());
  114.                 assertEquals(ExampleUnicode, a.getTldUnicode());
  115.                 assertEquals(ExamplePunycode, a.getTldPunycode());
  116.                 assertEquals("local@example." + ExampleUnicode, a
  117.                                 .getMailAddressUnicode());
  118.                 assertEquals("local@example." + ExamplePunycode, a
  119.                                 .getMailAddressPunycodedDomain());
  120.                 EMailAddress.USE_UNICODE_AS_STANDARD = true;
  121.                 assertEquals("local@example." + ExampleUnicode, a.toString());
  122.                 EMailAddress.USE_UNICODE_AS_STANDARD = false;
  123.                 assertEquals("local@example." + ExamplePunycode, a.toString());
  124.         }
  125.  
  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.         }
  133.  
  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.         }
  141.  
  142.         @Test
  143.         public void testClone() throws CloneNotSupportedException {
  144.                 EMailAddress a = new EMailAddress("local@example." + ExampleUnicode);
  145.                 EMailAddress b = (EMailAddress) a.clone();
  146.  
  147.                 assertFalse(a == b);
  148.                 assertTrue(a.equals(b));
  149.                 assertTrue(b.equals(a));
  150.  
  151.                 assertEquals(b.getDomainPartPunycode(), a.getDomainPartPunycode());
  152.                 assertEquals(b.getDomainPartUnicode(), a.getDomainPartUnicode());
  153.                 assertEquals(b.getLocalPart(), a.getLocalPart());
  154.                 assertEquals(b.getMailAddressPunycodedDomain(), a
  155.                                 .getMailAddressPunycodedDomain());
  156.                 assertEquals(b.getMailAddressUnicode(), a.getMailAddressUnicode());
  157.                 assertEquals(b.getTldPunycode(), a.getTldPunycode());
  158.                 assertEquals(b.getTldUnicode(), a.getTldUnicode());
  159.                 EMailAddress.USE_UNICODE_AS_STANDARD = true;
  160.                 assertEquals(b.toString(), a.toString());
  161.                 EMailAddress.USE_UNICODE_AS_STANDARD = false;
  162.                 assertEquals(b.toString(), a.toString());
  163.         }
  164.  
  165.         @Test
  166.         public void testEquals() {
  167.                 EMailAddress a = new EMailAddress("local@example." + ExampleUnicode);
  168.                 EMailAddress b = new EMailAddress("local@example." + ExampleUnicode);
  169.  
  170.                 assertFalse(a == b);
  171.                 assertTrue(a.equals(b));
  172.                 assertTrue(b.equals(a));
  173.         }
  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.         }
  191. }
  192.