AddressUnitTests.java revision c6893ddf0fc1a647ca13a2b3aac2c68ca345de37
196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project/* 296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * 496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * you may not use this file except in compliance with the License. 696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * You may obtain a copy of the License at 796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * 896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * 1096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * See the License for the specific language governing permissions and 1496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * limitations under the License. 1596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 1696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 1796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectpackage com.android.email.mail; 1896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 1996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.test.AndroidTestCase; 2096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.test.suitebuilder.annotation.SmallTest; 2196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 22e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Predaimport java.net.URLEncoder; 23e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Predaimport java.io.UnsupportedEncodingException; 24e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda 2596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project/** 2696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * This is a series of unit tests for the Address class. These tests must be locally 2796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * complete - no server(s) required. 2896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 2996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project@SmallTest 3096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectpublic class AddressUnitTests extends AndroidTestCase { 3196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 32deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project private static final String MULTI_ADDRESSES_LIST = 33deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project "noname1@dom1.com, " 34deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "<noname2@dom2.com>, " 35deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "simple name <address3@dom3.org>, " 36deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "\"name,4\" <address4@dom4.org>," 37deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "\"big \\\"G\\\"\" <bigG@dom5.net>," 38deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "\u65E5\u672C\u8A9E <address6@co.jp>," 39deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "\"\u65E5\u672C\u8A9E\" <address7@co.jp>," 40deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "\uD834\uDF01\uD834\uDF46 <address8@ne.jp>," 41deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "\"\uD834\uDF01\uD834\uDF46\" <address9@ne.jp>"; 42deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project private static final int MULTI_ADDRESSES_COUNT = 9; 43e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda 44e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda private static final Address PACK_ADDR_1 = new Address("john@gmail.com", "John Doe"); 45e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda private static final Address PACK_ADDR_2 = new Address("foo@bar.com", null); 46e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda private static final Address PACK_ADDR_3 = new Address("mar.y+test@gmail.com", "Mar-y, B; B*arr"); 47e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda private static final Address[][] PACK_CASES = { 48e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda {PACK_ADDR_2}, {PACK_ADDR_1}, 49e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda {PACK_ADDR_1, PACK_ADDR_2}, {PACK_ADDR_2, PACK_ADDR_1}, 50e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda {PACK_ADDR_1, PACK_ADDR_3}, {PACK_ADDR_2, PACK_ADDR_2}, 51e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda {PACK_ADDR_1, PACK_ADDR_2, PACK_ADDR_3}, {PACK_ADDR_3, PACK_ADDR_1, PACK_ADDR_2} 52e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda }; 53deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 5496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project Address mAddress1; 5596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project Address mAddress2; 5696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project Address mAddress3; 5796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 5896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 5996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Setup code. We generate a handful of Address objects 6096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 6196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project @Override 6296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project protected void setUp() throws Exception { 6396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project super.setUp(); 6496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 6596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project mAddress1 = new Address("address1", "personal1"); 6696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project mAddress2 = new Address("address2", ""); 6796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project mAddress3 = new Address("address3", null); 6896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 6996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 7096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 71deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project * Test for setAddress(). 72deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project */ 73deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project public void testSetAddress() { 74deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project String bareAddress = "user1@dom1.com"; 75deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project String bracketAddress = "<user2@dom2.com>"; 76deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 77deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address address = new Address(bareAddress); 78deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("bare address", "user1@dom1.com", address.getAddress()); 79deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 80deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project address.setAddress(bracketAddress); 81deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("bracket address", "user2@dom2.com", address.getAddress()); 82deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project } 83deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 84deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project /** 85deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project * Test for empty setPersonal(). 86deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project */ 87deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project public void testNullPersonal() { 88deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address address = new Address("user1@dom1.org"); 89deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertNull("no name", address.getPersonal()); 90deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 91deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project address.setPersonal(null); 92deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertNull("null name", address.getPersonal()); 93deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 94deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project address.setPersonal(""); 95deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertNull("empty name", address.getPersonal()); 96deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 97deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project address.setPersonal("\"\""); 98deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertNull("quoted empty address", address.getPersonal()); 99deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project } 100deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 101deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project /** 102deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project * Test for setPersonal(). 103deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project */ 104deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project public void testSetPersonal() { 105deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address address = new Address("user1@dom1.net", "simple name"); 106deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("simple name", "simple name", address.getPersonal()); 107deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 108deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project address.setPersonal("big \\\"G\\\""); 109deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("quoted name", "big \"G\"", address.getPersonal()); 110deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 111deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project address.setPersonal("=?UTF-8?Q?big \"G\"?="); 112deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("quoted printable name", "big \"G\"", address.getPersonal()); 113deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 114deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project address.setPersonal("=?UTF-8?B?YmlnICJHIg==?="); 115deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("base64 encoded name", "big \"G\"", address.getPersonal()); 116deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project } 117deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 118deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project /** 119deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project * Test for setPersonal() with utf-16 and utf-32. 120deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project */ 121deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project public void testSetPersonalMultipleEncodings() { 122deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address address = new Address("user1@dom1.co.jp", "=?UTF-8?B?5bK45pys?="); 123deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("base64 utf-16 name", "\u5CB8\u672C", address.getPersonal()); 124deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 125deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project address.setPersonal("\"=?UTF-8?Q?=E5=B2=B8=E6=9C=AC?=\""); 126deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("quoted printable utf-16 name", "\u5CB8\u672C", address.getPersonal()); 127deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 128deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project address.setPersonal("=?ISO-2022-JP?B?GyRCNF9LXBsoQg==?="); 129deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("base64 jis encoded name", "\u5CB8\u672C", address.getPersonal()); 130deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 131deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project address.setPersonal("\"=?UTF-8?B?8J2MgfCdjYY=?=\""); 132deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("base64 utf-32 name", "\uD834\uDF01\uD834\uDF46", address.getPersonal()); 133deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 134deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project address.setPersonal("=?UTF-8?Q?=F0=9D=8C=81=F0=9D=8D=86?="); 135deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("quoted printable utf-32 name", 136deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project "\uD834\uDF01\uD834\uDF46", address.getPersonal()); 137deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project } 138deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 139deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project /** 1403469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project * TODO: more in-depth tests for parse() 14196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 14296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 14396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 1443469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project * Simple quick checks of empty-input edge conditions for parse() 1453469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project * 1463469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project * NOTE: This is not a claim that these edge cases are "correct", only to maintain consistent 1473469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project * behavior while I am changing some of the code in the function under test. 1483469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project */ 1493469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project public void testEmptyParse() { 1503469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project Address[] result; 1513469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project 1523469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project // null input => empty array 1533469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project result = Address.parse(null); 1543469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project assertTrue("parsing null address", result != null && result.length == 0); 1553469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project 1563469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project // empty string input => empty array 1573469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project result = Address.parse(""); 1583469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project assertTrue("parsing zero-length", result != null && result.length == 0); 159deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 160deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project // spaces 161deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project result = Address.parse(" "); 162deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertTrue("parsing spaces", result != null && result.length == 0); 163deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 164deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project // spaces with comma 165deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project result = Address.parse(" , "); 166deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertTrue("parsing spaces with comma", result != null && result.length == 0); 167deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project } 168deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 169deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project /** 170deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project * Test parsing for single address. 171deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project */ 172deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project public void testSingleParse() { 173deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] address1 = Address.parse("address1@dom1.com"); 174deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("bare address count", 1, address1.length); 175deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("bare address", "address1@dom1.com", address1[0].getAddress()); 176deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertNull("name of bare address", address1[0].getPersonal()); 177deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 178deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] address2 = Address.parse("<address2@dom2.com>"); 179deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("bracket address count", 1, address2.length); 180deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("bracket address", "address2@dom2.com", address2[0].getAddress()); 181deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertNull("name of bracket address", address2[0].getPersonal()); 182deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 183deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] address3 = Address.parse("first last <address3@dom3.org>"); 184deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("address with name count", 1, address3.length); 185deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("address with name", "address3@dom3.org", address3[0].getAddress()); 186deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("name of address with name", "first last", address3[0].getPersonal()); 187deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 188deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] address4 = Address.parse("\"first,last\" <address4@dom4.org>"); 189deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("address with quoted name count", 1, address4.length); 190deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("address with quoted name", "address4@dom4.org", address4[0].getAddress()); 191deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("name of address with quoted name", "first,last", address4[0].getPersonal()); 192deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project } 193deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 194deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project /** 195deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project * Test parsing for illegal address. 196deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project */ 197deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project public void testIllegalParse() { 198deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] address1 = Address.parse("address1"); 199deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("no atmark", 0, address1.length); 200deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 201deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] address2 = Address.parse("address2@"); 202deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("no domain", 0, address2.length); 203deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 204deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] address3 = Address.parse("@dom3.com"); 205deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("no local part", 0, address3.length); 206deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 207deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] address4 = Address.parse("address4@sub@dom4.org"); 208deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("more than one atmark", 0, address4.length); 209deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 210deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] address5 = Address.parse("address5@dom5"); 211deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("not dot in domain part", 0, address5.length); 212deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 213deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] address6 = Address.parse("address6@dom6.com."); 214deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("domain ends with dot", 0, address6.length); 215deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 216deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] address7 = Address.parse("address7@.dom7.org"); 217deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("domain starts with dot", 0, address7.length); 218deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project } 219deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 220deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project /** 221deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project * Test parsing for address part. 222deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project */ 223deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project public void testParsingAddress() { 224deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] addresses = Address.parse("address1@dom1.net, <address2@dom2.com>"); 225deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("address count", 2, addresses.length); 226deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 227deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("bare address", "address1@dom1.net", addresses[0].getAddress()); 228deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertNull("bare address name", addresses[0].getPersonal()); 229deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 230deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("bracket address", "address2@dom2.com", addresses[1].getAddress()); 231deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertNull("bracket address name", addresses[1].getPersonal()); 2323469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project } 2333469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project 2343469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project /** 235deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project * Test parsing for simple name part. 23696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 237deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project public void testParsingSimpleName() { 238deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] addresses = Address.parse( 239deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project "name 1 <address1@dom1.net>, " + 240deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project "\"name,2\" <address2@dom2.org>"); 241deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("address count", 2, addresses.length); 242deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 243deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("bare name address", "address1@dom1.net", addresses[0].getAddress()); 244deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("bare name", "name 1", addresses[0].getPersonal()); 245deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 246deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("double quoted name address", "address2@dom2.org", addresses[1].getAddress()); 247deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("double quoted name", "name,2", addresses[1].getPersonal()); 248deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project } 249deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 250deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project /** 251deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project * Test parsing for utf-16 name part. 252deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project */ 253deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project public void testParsingUtf16Name() { 254deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] addresses = Address.parse( 255deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project "\u3042\u3044\u3046 \u3048\u304A <address1@dom1.jp>, " + 256deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project "\"\u3042\u3044\u3046,\u3048\u304A\" <address2@dom2.jp>"); 257deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("address count", 2, addresses.length); 258deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 259deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("bare utf-16 name address", "address1@dom1.jp", addresses[0].getAddress()); 260deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("bare utf-16 name", 261deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project "\u3042\u3044\u3046 \u3048\u304A", addresses[0].getPersonal()); 262deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 263deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("double quoted utf-16 name address", 264deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project "address2@dom2.jp", addresses[1].getAddress()); 265deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("double quoted utf-16 name", 266deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project "\u3042\u3044\u3046,\u3048\u304A", addresses[1].getPersonal()); 267deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project } 268deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 269deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project /** 270deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project * Test parsing for utf-32 name part. 271deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project */ 272deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project public void testParsingUtf32Name() { 273deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] addresses = Address.parse( 274deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project "\uD834\uDF01\uD834\uDF46 \uD834\uDF22 <address1@dom1.net>, " + 275deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project "\"\uD834\uDF01\uD834\uDF46,\uD834\uDF22\" <address2@dom2.com>"); 276deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("address count", 2, addresses.length); 277deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 278deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("bare utf-32 name address", "address1@dom1.net", addresses[0].getAddress()); 279deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("bare utf-32 name", 280deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project "\uD834\uDF01\uD834\uDF46 \uD834\uDF22", addresses[0].getPersonal()); 281deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 282deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("double quoted utf-32 name address", 283deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project "address2@dom2.com", addresses[1].getAddress()); 284deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("double quoted utf-32 name", 285deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project "\uD834\uDF01\uD834\uDF46,\uD834\uDF22", addresses[1].getPersonal()); 286deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project } 287deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 288deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project /** 289deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project * Test parsing for multi addresses. 290deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project */ 291deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project public void testParseMulti() { 292deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] addresses = Address.parse(MULTI_ADDRESSES_LIST); 293deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 294deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("multi addrsses count", MULTI_ADDRESSES_COUNT, addresses.length); 295deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 296deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("no name 1 address", "noname1@dom1.com", addresses[0].getAddress()); 297deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertNull("no name 1 name", addresses[0].getPersonal()); 298deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("no name 2 address", "noname2@dom2.com", addresses[1].getAddress()); 299deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertNull("no name 2 name", addresses[1].getPersonal()); 300deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("simple name address", "address3@dom3.org", addresses[2].getAddress()); 301deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("simple name name", "simple name", addresses[2].getPersonal()); 302deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("double quoted name address", "address4@dom4.org", addresses[3].getAddress()); 303deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("double quoted name name", "name,4", addresses[3].getPersonal()); 304deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("quoted name address", "bigG@dom5.net", addresses[4].getAddress()); 305deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("quoted name name", "big \"G\"", addresses[4].getPersonal()); 306deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-16 name address", "address6@co.jp", addresses[5].getAddress()); 307deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-16 name name", "\u65E5\u672C\u8A9E", addresses[5].getPersonal()); 308deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-16 quoted name address", "address7@co.jp", addresses[6].getAddress()); 309deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-16 quoted name name", "\u65E5\u672C\u8A9E", 310deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project addresses[6].getPersonal()); 311deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-32 name address", "address8@ne.jp", addresses[7].getAddress()); 312deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-32 name name", "\uD834\uDF01\uD834\uDF46", addresses[7].getPersonal()); 313deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-32 quoted name address", "address9@ne.jp", addresses[8].getAddress()); 314deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-32 quoted name name", "\uD834\uDF01\uD834\uDF46", 315deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project addresses[8].getPersonal()); 316deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project } 317deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 318deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project /** 319deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project * Test various combinations of the toString (single) method 320deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project */ 321deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project public void testToStringSingle() { 322deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] addresses = Address.parse(MULTI_ADDRESSES_LIST); 323deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 324deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("multi addrsses count", MULTI_ADDRESSES_COUNT, addresses.length); 325deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 326deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project // test for toString() results. 327deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("no name 1", "noname1@dom1.com", addresses[0].toString()); 328deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("no name 2", "noname2@dom2.com", addresses[1].toString()); 329deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("simple name", "simple name <address3@dom3.org>", addresses[2].toString()); 330deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("double quoted name", "\"name,4\" <address4@dom4.org>", addresses[3].toString()); 331deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("quoted name", "\"big \"G\"\" <bigG@dom5.net>", addresses[4].toString()); 332deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-16 name", "\u65E5\u672C\u8A9E <address6@co.jp>", 333deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project addresses[5].toString()); 334deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-16 quoted name", "\u65E5\u672C\u8A9E <address7@co.jp>", 335deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project addresses[6].toString()); 336deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-32 name", "\uD834\uDF01\uD834\uDF46 <address8@ne.jp>", 337deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project addresses[7].toString()); 338deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-32 quoted name", "\uD834\uDF01\uD834\uDF46 <address9@ne.jp>", 339deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project addresses[8].toString()); 340deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project } 341deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 342deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project /** 343deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project * Test various combinations of the toString (multi) method 344deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project */ 345deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project public void testToStringMulti() { 346deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] addresses = Address.parse(MULTI_ADDRESSES_LIST); 347deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 348deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("multi addrsses count", MULTI_ADDRESSES_COUNT, addresses.length); 349deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 350deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project String line = Address.toString(addresses); 351deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("toString multi", 352deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project "noname1@dom1.com," 353deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "noname2@dom2.com," 354deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "simple name <address3@dom3.org>," 355deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "\"name,4\" <address4@dom4.org>," 356deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "\"big \"G\"\" <bigG@dom5.net>," 357deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "\u65E5\u672C\u8A9E <address6@co.jp>," 358deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "\u65E5\u672C\u8A9E <address7@co.jp>," 359deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "\uD834\uDF01\uD834\uDF46 <address8@ne.jp>," 360deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "\uD834\uDF01\uD834\uDF46 <address9@ne.jp>", 361deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project line); 362deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project } 363deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 364deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project /** 365deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project * Test parsing for quoted and encoded name part. 366deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project */ 367deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project public void testParsingQuotedEncodedName() { 368deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] addresses = Address.parse( 369deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project "\"big \\\"G\\\"\" <bigG@dom1.com>, =?UTF-8?B?5pel5pys6Kqe?= <address2@co.jp>"); 370deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 371deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("address count", 2, addresses.length); 372deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 373deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("quoted name address", "bigG@dom1.com", addresses[0].getAddress()); 374deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("quoted name", "big \"G\"", addresses[0].getPersonal()); 375deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 376deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("encoded name address", "address2@co.jp", addresses[1].getAddress()); 377deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("encoded name", "\u65E5\u672C\u8A9E", addresses[1].getPersonal()); 378deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project } 379deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 380deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project /** 381deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project * Test various combinations of the toHeader (single) method 382deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project */ 383deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project public void testToHeaderSingle() { 384deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address noName1 = new Address("noname1@dom1.com"); 385deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address noName2 = new Address("<noname2@dom2.com>", ""); 386deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address simpleName = new Address("address3@dom3.org", "simple name"); 387deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address dquoteName = new Address("address4@dom4.org", "name,4"); 388deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address quotedName = new Address("bigG@dom5.net", "big \"G\""); 389deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address utf16Name = new Address("<address6@co.jp>", "\"\u65E5\u672C\u8A9E\""); 390deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address utf32Name = new Address("<address8@ne.jp>", "\uD834\uDF01\uD834\uDF46"); 391deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 392deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project // test for internal states. 393deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("no name 1 address", "noname1@dom1.com", noName1.getAddress()); 394deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertNull("no name 1 name", noName1.getPersonal()); 395deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("no name 2 address", "noname2@dom2.com", noName2.getAddress()); 396deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertNull("no name 2 name", noName2.getPersonal()); 397deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("simple name address", "address3@dom3.org", simpleName.getAddress()); 398deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("simple name name", "simple name", simpleName.getPersonal()); 399deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("double quoted name address", "address4@dom4.org", dquoteName.getAddress()); 400deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("double quoted name name", "name,4", dquoteName.getPersonal()); 401deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("quoted name address", "bigG@dom5.net", quotedName.getAddress()); 402deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("quoted name name", "big \"G\"", quotedName.getPersonal()); 403deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-16 name address", "address6@co.jp", utf16Name.getAddress()); 404deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-16 name name", "\u65E5\u672C\u8A9E", utf16Name.getPersonal()); 405deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-32 name address", "address8@ne.jp", utf32Name.getAddress()); 406deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-32 name name", "\uD834\uDF01\uD834\uDF46", utf32Name.getPersonal()); 407deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 408deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project // Test for toHeader() results. 409deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("no name 1", "noname1@dom1.com", noName1.toHeader()); 410deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("no name 2", "noname2@dom2.com", noName2.toHeader()); 411deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("simple name", "simple name <address3@dom3.org>", simpleName.toHeader()); 412deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("double quoted name", "\"name,4\" <address4@dom4.org>", dquoteName.toHeader()); 413deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("quoted name", "\"big \\\"G\\\"\" <bigG@dom5.net>", quotedName.toHeader()); 414deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-16 name", "=?UTF-8?B?5pel5pys6Kqe?= <address6@co.jp>", 415deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project utf16Name.toHeader()); 416deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-32 name", "=?UTF-8?B?8J2MgfCdjYY=?= <address8@ne.jp>", 417deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project utf32Name.toHeader()); 418deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project } 419deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 420deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project /** 421deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project * Test various combinations of the toHeader (multi) method 422deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project */ 423deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project public void testToHeaderMulti() { 424deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address noName1 = new Address("noname1@dom1.com"); 425deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address noName2 = new Address("<noname2@dom2.com>", ""); 426deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address simpleName = new Address("address3@dom3.org", "simple name"); 427deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address dquoteName = new Address("address4@dom4.org", "name,4"); 428deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address quotedName = new Address("bigG@dom5.net", "big \"G\""); 429deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address utf16Name = new Address("<address6@co.jp>", "\"\u65E5\u672C\u8A9E\""); 430deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address utf32Name = new Address("<address8@ne.jp>", "\uD834\uDF01\uD834\uDF46"); 431deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 432deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project // test for internal states. 433deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("no name 1 address", "noname1@dom1.com", noName1.getAddress()); 434deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertNull("no name 1 name", noName1.getPersonal()); 435deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("no name 2 address", "noname2@dom2.com", noName2.getAddress()); 436deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertNull("no name 2 name", noName2.getPersonal()); 437deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("simple name address", "address3@dom3.org", simpleName.getAddress()); 438deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("simple name name", "simple name", simpleName.getPersonal()); 439deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("double quoted name address", "address4@dom4.org", dquoteName.getAddress()); 440deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("double quoted name name", "name,4", dquoteName.getPersonal()); 441deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("quoted name address", "bigG@dom5.net", quotedName.getAddress()); 442deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("quoted name name", "big \"G\"", quotedName.getPersonal()); 443deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-16 name address", "address6@co.jp", utf16Name.getAddress()); 444deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-16 name name", "\u65E5\u672C\u8A9E", utf16Name.getPersonal()); 445deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-32 name address", "address8@ne.jp", utf32Name.getAddress()); 446deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("utf-32 name name", "\uD834\uDF01\uD834\uDF46", utf32Name.getPersonal()); 447deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 448deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project Address[] addresses = new Address[] { 449deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project noName1, noName2, simpleName, dquoteName, quotedName, utf16Name, utf32Name, 450deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project }; 451deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project String line = Address.toHeader(addresses); 452deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project 453deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project assertEquals("toHeader() multi", 454deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project "noname1@dom1.com, " 455deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "noname2@dom2.com, " 456deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "simple name <address3@dom3.org>, " 457deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "\"name,4\" <address4@dom4.org>, " 458deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "\"big \\\"G\\\"\" <bigG@dom5.net>, " 459deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "=?UTF-8?B?5pel5pys6Kqe?= <address6@co.jp>, " 460deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project + "=?UTF-8?B?8J2MgfCdjYY=?= <address8@ne.jp>", 461deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project line); 462deabfc0cb513d1becdb557e3a8a853839992bb5cThe Android Open Source Project } 46396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 46496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 46596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Test various combinations of the toFriendly (single) method 46696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 46796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void testToFriendlySingle() { 46896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project assertEquals("personal1", mAddress1.toFriendly()); 46996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project assertEquals("address2", mAddress2.toFriendly()); 47096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project assertEquals("address3", mAddress3.toFriendly()); 47196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 47296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 47396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 47496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Test various combinations of the toFriendly (array) method 47596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 47696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void testToFriendlyArray() { 47796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project Address[] list1 = null; 47896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project Address[] list2 = new Address[0]; 47996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project Address[] list3 = new Address[] { mAddress1 }; 48096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project Address[] list4 = new Address[] { mAddress1, mAddress2, mAddress3 }; 48196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 48296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project assertEquals(null, Address.toFriendly(list1)); 48396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project assertEquals(null, Address.toFriendly(list2)); 48496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project assertEquals("personal1", Address.toFriendly(list3)); 48596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project assertEquals("personal1,address2,address3", Address.toFriendly(list4)); 48696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 48796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 48896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project /** 4893469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project * Simple quick checks of empty-input edge conditions for pack() 4903469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project * 4913469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project * NOTE: This is not a claim that these edge cases are "correct", only to maintain consistent 4923469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project * behavior while I am changing some of the code in the function under test. 4933469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project */ 4943469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project public void testEmptyPack() { 4953469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project String result; 4963469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project 4973469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project // null input => null string 4983469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project result = Address.pack(null); 4993469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project assertNull("packing null", result); 5003469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project 5013469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project // zero-length input => empty string 5023469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project result = Address.pack(new Address[] { }); 5033469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project assertEquals("packing empty array", "", result); 5043469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project } 5053469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project 5063469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project /** 5073469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project * Simple quick checks of empty-input edge conditions for unpack() 5083469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project * 5093469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project * NOTE: This is not a claim that these edge cases are "correct", only to maintain consistent 5103469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project * behavior while I am changing some of the code in the function under test. 5113469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project */ 5123469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project public void testEmptyUnpack() { 5133469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project Address[] result; 5143469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project 5153469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project // null input => empty array 5163469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project result = Address.unpack(null); 5173469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project assertTrue("unpacking null address", result != null && result.length == 0); 5183469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project 5193469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project // empty string input => empty array 5203469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project result = Address.unpack(""); 5213469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project assertTrue("unpacking zero-length", result != null && result.length == 0); 5223469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project } 5233469902379242c723b871d1dcb09b02d0998d538The Android Open Source Project 524e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda private static boolean addressEquals(Address a1, Address a2) { 525e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda if (!a1.equals(a2)) { 526e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda return false; 527e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } 528e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda final String displayName1 = a1.getPersonal(); 529e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda final String displayName2 = a2.getPersonal(); 530e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda if (displayName1 == null) { 531e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda return displayName2 == null; 532e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } else { 533e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda return displayName1.equals(displayName2); 534e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } 535e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } 536e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda 537e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda private static boolean addressArrayEquals(Address[] array1, Address[] array2) { 538e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda if (array1.length != array2.length) { 539e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda return false; 540e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } 541e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda for (int i = array1.length - 1; i >= 0; --i) { 542e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda if (!addressEquals(array1[i], array2[i])) { 543e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda return false; 544e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } 545e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } 546e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda return true; 547e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } 548e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda 549e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda public void testPackUnpack() { 550e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda for (Address[] list : PACK_CASES) { 551e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda String packed = Address.pack(list); 552e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda assertTrue(packed, addressArrayEquals(list, Address.unpack(packed))); 553e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } 554e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } 555e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda 556e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda public void testLegacyPackUnpack() { 557e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda for (Address[] list : PACK_CASES) { 558e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda String packed = legacyPack(list); 559e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda assertTrue(packed, addressArrayEquals(list, Address.legacyUnpack(packed))); 560e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } 561e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } 562e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda 563c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda public void testSinglePack() { 564c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda Address[] addrArray = new Address[1]; 565c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda for (Address address : new Address[]{PACK_ADDR_1, PACK_ADDR_2, PACK_ADDR_3}) { 566c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda String packed1 = address.pack(); 567c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda addrArray[0] = address; 568c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda String packed2 = Address.pack(addrArray); 569c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda assertEquals(packed1, packed2); 570c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda } 571c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda } 572c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda 573ed0e683d86d27aecb39347b1749b5c572594ba6cMihai Preda public void testIsValidAddress() { 574ed0e683d86d27aecb39347b1749b5c572594ba6cMihai Preda String notValid[] = {"", "foo", "john@", "x@y", "x@y.", "foo.com"}; 575ed0e683d86d27aecb39347b1749b5c572594ba6cMihai Preda String valid[] = {"x@y.z", "john@gmail.com", "a@b.c.d"}; 576ed0e683d86d27aecb39347b1749b5c572594ba6cMihai Preda for (String address : notValid) { 577ed0e683d86d27aecb39347b1749b5c572594ba6cMihai Preda assertTrue(address, !Address.isValidAddress(address)); 578ed0e683d86d27aecb39347b1749b5c572594ba6cMihai Preda } 579ed0e683d86d27aecb39347b1749b5c572594ba6cMihai Preda for (String address : valid) { 580ed0e683d86d27aecb39347b1749b5c572594ba6cMihai Preda assertTrue(address, Address.isValidAddress(address)); 581ed0e683d86d27aecb39347b1749b5c572594ba6cMihai Preda } 582ed0e683d86d27aecb39347b1749b5c572594ba6cMihai Preda 583ed0e683d86d27aecb39347b1749b5c572594ba6cMihai Preda // isAllValid() must accept empty address list as valid 584ed0e683d86d27aecb39347b1749b5c572594ba6cMihai Preda assertTrue("Empty address list is valid", Address.isAllValid("")); 585ed0e683d86d27aecb39347b1749b5c572594ba6cMihai Preda } 586e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda 587e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda /** 588e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda * Legacy pack() used for testing legacyUnpack(). 589e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda * The packed list is a comma separated list of: 590e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda * URLENCODE(address)[;URLENCODE(personal)] 591e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda * @See pack() 592e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda */ 593e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda private static String legacyPack(Address[] addresses) { 594e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda if (addresses == null) { 595e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda return null; 596e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } else if (addresses.length == 0) { 597e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda return ""; 598e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } 599e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda StringBuffer sb = new StringBuffer(); 600e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda for (int i = 0, count = addresses.length; i < count; i++) { 601e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda Address address = addresses[i]; 602e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda try { 603e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda sb.append(URLEncoder.encode(address.getAddress(), "UTF-8")); 604e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda if (address.getPersonal() != null) { 605e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda sb.append(';'); 606e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda sb.append(URLEncoder.encode(address.getPersonal(), "UTF-8")); 607e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } 608e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda if (i < count - 1) { 609e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda sb.append(','); 610e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } 611e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } 612e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda catch (UnsupportedEncodingException uee) { 613e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda return null; 614e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } 615e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } 616e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda return sb.toString(); 617e8d58c01ec3f5f783bbca6841d95ca44570c6fd9Mihai Preda } 61896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project} 619