/* * Copyright (C) 2013 The Libphonenumber Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.i18n.phonenumbers; import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber; import junit.framework.TestCase; import java.util.Locale; /** * Unit tests for PhoneNumberToCarrierMapper.java * * @author Cecilia Roes */ public class PhoneNumberToCarrierMapperTest extends TestCase { private final PhoneNumberToCarrierMapper carrierMapper = new PhoneNumberToCarrierMapper(TEST_MAPPING_DATA_DIRECTORY); private static final String TEST_MAPPING_DATA_DIRECTORY = "/com/google/i18n/phonenumbers/carrier/testing_data/"; // Set up some test numbers to re-use. private static final PhoneNumber AO_MOBILE1 = new PhoneNumber().setCountryCode(244).setNationalNumber(917654321L); private static final PhoneNumber AO_MOBILE2 = new PhoneNumber().setCountryCode(244).setNationalNumber(927654321L); private static final PhoneNumber AO_FIXED1 = new PhoneNumber().setCountryCode(244).setNationalNumber(22254321L); private static final PhoneNumber AO_FIXED2 = new PhoneNumber().setCountryCode(244).setNationalNumber(26254321L); private static final PhoneNumber AO_INVALID_NUMBER = new PhoneNumber().setCountryCode(244).setNationalNumber(101234L); private static final PhoneNumber UK_MOBILE1 = new PhoneNumber().setCountryCode(44).setNationalNumber(7387654321L); private static final PhoneNumber UK_MOBILE2 = new PhoneNumber().setCountryCode(44).setNationalNumber(7487654321L); private static final PhoneNumber UK_FIXED1 = new PhoneNumber().setCountryCode(44).setNationalNumber(1123456789L); private static final PhoneNumber UK_FIXED2 = new PhoneNumber().setCountryCode(44).setNationalNumber(2987654321L); private static final PhoneNumber UK_INVALID_NUMBER = new PhoneNumber().setCountryCode(44).setNationalNumber(7301234L); private static final PhoneNumber UK_PAGER = new PhoneNumber().setCountryCode(44).setNationalNumber(7601234567L); private static final PhoneNumber US_FIXED_OR_MOBILE = new PhoneNumber().setCountryCode(1).setNationalNumber(6502123456L); private static final PhoneNumber NUMBER_WITH_INVALID_COUNTRY_CODE = new PhoneNumber().setCountryCode(999).setNationalNumber(2423651234L); private static final PhoneNumber INTERNATIONAL_TOLL_FREE = new PhoneNumber().setCountryCode(800).setNationalNumber(12345678L); public void testGetNameForMobilePortableRegion() { assertEquals("British carrier", carrierMapper.getNameForNumber(UK_MOBILE1, Locale.ENGLISH)); assertEquals("Brittisk operat\u00F6r", carrierMapper.getNameForNumber(UK_MOBILE1, new Locale("sv", "SE"))); assertEquals("British carrier", carrierMapper.getNameForNumber(UK_MOBILE1, Locale.FRENCH)); // Returns an empty string because the UK implements mobile number portability. assertEquals("", carrierMapper.getSafeDisplayName(UK_MOBILE1, Locale.ENGLISH)); } public void testGetNameForNonMobilePortableRegion() { assertEquals("Angolan carrier", carrierMapper.getNameForNumber(AO_MOBILE1, Locale.ENGLISH)); assertEquals("Angolan carrier", carrierMapper.getSafeDisplayName(AO_MOBILE1, Locale.ENGLISH)); } public void testGetNameForFixedLineNumber() { assertEquals("", carrierMapper.getNameForNumber(AO_FIXED1, Locale.ENGLISH)); assertEquals("", carrierMapper.getNameForNumber(UK_FIXED1, Locale.ENGLISH)); // If the carrier information is present in the files and the method that assumes a valid // number is used, a carrier is returned. assertEquals("Angolan fixed line carrier", carrierMapper.getNameForValidNumber(AO_FIXED2, Locale.ENGLISH)); assertEquals("", carrierMapper.getNameForValidNumber(UK_FIXED2, Locale.ENGLISH)); } public void testGetNameForFixedOrMobileNumber() { assertEquals("US carrier", carrierMapper.getNameForNumber(US_FIXED_OR_MOBILE, Locale.ENGLISH)); } public void testGetNameForPagerNumber() { assertEquals("British pager", carrierMapper.getNameForNumber(UK_PAGER, Locale.ENGLISH)); } public void testGetNameForNumberWithNoDataFile() { assertEquals("", carrierMapper.getNameForNumber(NUMBER_WITH_INVALID_COUNTRY_CODE, Locale.ENGLISH)); assertEquals("", carrierMapper.getNameForNumber(INTERNATIONAL_TOLL_FREE, Locale.ENGLISH)); assertEquals("", carrierMapper.getNameForValidNumber(NUMBER_WITH_INVALID_COUNTRY_CODE, Locale.ENGLISH)); assertEquals("", carrierMapper.getNameForValidNumber(INTERNATIONAL_TOLL_FREE, Locale.ENGLISH)); } public void testGetNameForNumberWithMissingPrefix() { assertEquals("", carrierMapper.getNameForNumber(UK_MOBILE2, Locale.ENGLISH)); assertEquals("", carrierMapper.getNameForNumber(AO_MOBILE2, Locale.ENGLISH)); } public void testGetNameForInvalidNumber() { assertEquals("", carrierMapper.getNameForNumber(UK_INVALID_NUMBER, Locale.ENGLISH)); assertEquals("", carrierMapper.getNameForNumber(AO_INVALID_NUMBER, Locale.ENGLISH)); } }