174aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia/*
2ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia * Copyright (C) 2009 The Libphonenumber Authors
374aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia *
474aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia * Licensed under the Apache License, Version 2.0 (the "License");
574aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia * you may not use this file except in compliance with the License.
674aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia * You may obtain a copy of the License at
774aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia *
874aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia * http://www.apache.org/licenses/LICENSE-2.0
974aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia *
1074aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia * Unless required by applicable law or agreed to in writing, software
1174aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia * distributed under the License is distributed on an "AS IS" BASIS,
1274aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1374aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia * See the License for the specific language governing permissions and
1474aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia * limitations under the License.
1574aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia */
1674aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia
1793f6965c2c041ac707bf1b3bcf5a3f60e452f421Shaopeng Jiapackage com.android.i18n.phonenumbers;
1874aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia
1993f6965c2c041ac707bf1b3bcf5a3f60e452f421Shaopeng Jiaimport com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
2093f6965c2c041ac707bf1b3bcf5a3f60e452f421Shaopeng Jiaimport com.android.i18n.phonenumbers.Phonenumber.PhoneNumber.CountryCodeSource;
2174aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia
2274aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jiaimport junit.framework.TestCase;
2374aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia
2474aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia/**
2574aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia * Tests for the Phonenumber.PhoneNumber object itself.
2674aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia *
2774aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia * @author Lara Rennie
2874aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia */
2974aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jiapublic class PhonenumberTest extends TestCase {
3074aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia
3152699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia  public void testEqualSimpleNumber() throws Exception {
3274aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    PhoneNumber numberA = new PhoneNumber();
3374aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    numberA.setCountryCode(1).setNationalNumber(6502530000L);
3474aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia
3574aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    PhoneNumber numberB = new PhoneNumber();
3674aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    numberB.setCountryCode(1).setNationalNumber(6502530000L);
3774aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia
3874aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    assertEquals(numberA, numberB);
3974aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    assertEquals(numberA.hashCode(), numberB.hashCode());
4074aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia  }
4174aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia
4252699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia  public void testEqualWithItalianLeadingZeroSetToDefault() throws Exception {
4374aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    PhoneNumber numberA = new PhoneNumber();
4474aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    numberA.setCountryCode(1).setNationalNumber(6502530000L).setItalianLeadingZero(false);
4574aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia
4674aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    PhoneNumber numberB = new PhoneNumber();
4774aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    numberB.setCountryCode(1).setNationalNumber(6502530000L);
4874aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia
4974aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    // These should still be equal, since the default value for this field is false.
5074aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    assertEquals(numberA, numberB);
5174aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    assertEquals(numberA.hashCode(), numberB.hashCode());
5252699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia  }
5374aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia
5452699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia  public void testEqualWithCountryCodeSourceSet() throws Exception {
5552699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia    PhoneNumber numberA = new PhoneNumber();
5674aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    numberA.setRawInput("+1 650 253 00 00").
5774aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia        setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN);
5852699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia    PhoneNumber numberB = new PhoneNumber();
5974aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    numberB.setRawInput("+1 650 253 00 00").
6074aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia        setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN);
6174aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    assertEquals(numberA, numberB);
6274aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    assertEquals(numberA.hashCode(), numberB.hashCode());
6374aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia  }
6474aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia
6552699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia  public void testNonEqualWithItalianLeadingZeroSetToTrue() throws Exception {
6674aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    PhoneNumber numberA = new PhoneNumber();
6774aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    numberA.setCountryCode(1).setNationalNumber(6502530000L).setItalianLeadingZero(true);
6874aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia
6974aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    PhoneNumber numberB = new PhoneNumber();
7074aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    numberB.setCountryCode(1).setNationalNumber(6502530000L);
7174aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia
7274aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    assertFalse(numberA.equals(numberB));
7374aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    assertFalse(numberA.hashCode() == numberB.hashCode());
7474aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia  }
7574aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia
7652699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia  public void testNonEqualWithDifferingRawInput() throws Exception {
7774aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    PhoneNumber numberA = new PhoneNumber();
7874aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    numberA.setCountryCode(1).setNationalNumber(6502530000L).setRawInput("+1 650 253 00 00").
7974aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia        setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN);
8074aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia
8174aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    PhoneNumber numberB = new PhoneNumber();
8274aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    // Although these numbers would pass an isNumberMatch test, they are not considered "equal" as
8374aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    // objects, since their raw input is different.
8474aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    numberB.setCountryCode(1).setNationalNumber(6502530000L).setRawInput("+1-650-253-00-00").
8574aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia        setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN);
8674aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia
8774aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    assertFalse(numberA.equals(numberB));
8874aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia    assertFalse(numberA.hashCode() == numberB.hashCode());
8974aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia  }
9052699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia
9152699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia  public void testNonEqualWithPreferredDomesticCarrierCodeSetToDefault() throws Exception {
9252699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia    PhoneNumber numberA = new PhoneNumber();
9352699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia    numberA.setCountryCode(1).setNationalNumber(6502530000L).setPreferredDomesticCarrierCode("");
9452699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia
9552699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia    PhoneNumber numberB = new PhoneNumber();
9652699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia    numberB.setCountryCode(1).setNationalNumber(6502530000L);
9752699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia
9852699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia    assertFalse(numberA.equals(numberB));
9952699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia    assertFalse(numberA.hashCode() == numberB.hashCode());
10052699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia  }
10152699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia
10252699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia  public void testEqualWithPreferredDomesticCarrierCodeSetToDefault() throws Exception {
10352699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia    PhoneNumber numberA = new PhoneNumber();
10452699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia    numberA.setCountryCode(1).setNationalNumber(6502530000L).setPreferredDomesticCarrierCode("");
10552699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia
10652699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia    PhoneNumber numberB = new PhoneNumber();
10752699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia    numberB.setCountryCode(1).setNationalNumber(6502530000L).setPreferredDomesticCarrierCode("");
10852699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia
10952699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia    assertEquals(numberA, numberB);
11052699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia    assertEquals(numberA.hashCode(), numberB.hashCode());
11152699e08e855fb0957944b4e73358ad9e0007c0cShaopeng Jia  }
11274aa862e30b4d1b2722e90b1a8684274441a7541Shaopeng Jia}
113