[TestMethod] public void testShortNumbersValidAndCorrectCost() { List <String> invalidStringCases = new ArrayList <String>(); foreach (String regionCode in shortNumberInfo.getSupportedRegions()) { if (regionCode == RegionCode.PG) { // The only short number for Papua New Guinea is 000, which fails the test, since the // national prefix is 0. This needs to be fixed. continue; } String exampleShortNumber = shortNumberInfo.getExampleShortNumber(regionCode); if (!shortNumberInfo.isValidShortNumber(exampleShortNumber, regionCode)) { String invalidStringCase = "region_code: " + regionCode + ", national_number: " + exampleShortNumber; invalidStringCases.add(invalidStringCase); LOGGER.log(Level.SEVERE, "Failed validation for string " + invalidStringCase); } PhoneNumber phoneNumber = phoneNumberUtil.parse(exampleShortNumber, regionCode); if (!shortNumberInfo.isValidShortNumber(phoneNumber)) { invalidCases.add(phoneNumber); LOGGER.log(Level.SEVERE, "Failed validation for " + phoneNumber.toString()); } foreach (ShortNumberInfo.ShortNumberCost cost in System.Enum.GetValues(typeof(ShortNumberInfo.ShortNumberCost))) { exampleShortNumber = shortNumberInfo.getExampleShortNumberForCost(regionCode, cost); if (!exampleShortNumber.equals("")) { phoneNumber = phoneNumberUtil.parse(exampleShortNumber, regionCode); if (cost != shortNumberInfo.getExpectedCost(phoneNumber)) { wrongTypeCases.add(phoneNumber); LOGGER.log(Level.SEVERE, "Wrong cost for " + phoneNumber.toString()); } } } } assertEquals(0, invalidStringCases.size()); assertEquals(0, invalidCases.size()); assertEquals(0, wrongTypeCases.size()); }
[TestMethod] public void testGetExpectedCost() { PhoneNumber premiumRateNumber = new PhoneNumber(); premiumRateNumber.setCountryCode(33).setNationalNumber( Integer.parseInt(shortInfo.getExampleShortNumberForCost( RegionCode.FR, ShortNumberInfo.ShortNumberCost.PREMIUM_RATE))); assertEquals(ShortNumberInfo.ShortNumberCost.PREMIUM_RATE, shortInfo.getExpectedCost(premiumRateNumber)); PhoneNumber standardRateNumber = new PhoneNumber(); standardRateNumber.setCountryCode(33).setNationalNumber( Integer.parseInt(shortInfo.getExampleShortNumberForCost( RegionCode.FR, ShortNumberInfo.ShortNumberCost.STANDARD_RATE))); assertEquals(ShortNumberInfo.ShortNumberCost.STANDARD_RATE, shortInfo.getExpectedCost(standardRateNumber)); PhoneNumber tollFreeNumber = new PhoneNumber(); tollFreeNumber.setCountryCode(33).setNationalNumber( Integer.parseInt(shortInfo.getExampleShortNumberForCost( RegionCode.FR, ShortNumberInfo.ShortNumberCost.TOLL_FREE))); assertEquals(ShortNumberInfo.ShortNumberCost.TOLL_FREE, shortInfo.getExpectedCost(tollFreeNumber)); PhoneNumber unknownCostNumber = new PhoneNumber(); unknownCostNumber.setCountryCode(33).setNationalNumber(12345L); assertEquals(ShortNumberInfo.ShortNumberCost.UNKNOWN_COST, shortInfo.getExpectedCost(unknownCostNumber)); // Test that an invalid number may nevertheless have a cost other than UNKNOWN_COST. PhoneNumber invalidNumber = new PhoneNumber(); invalidNumber.setCountryCode(33).setNationalNumber(116123L); assertFalse(shortInfo.isValidShortNumber(invalidNumber)); assertEquals(ShortNumberInfo.ShortNumberCost.TOLL_FREE, shortInfo.getExpectedCost(invalidNumber)); // Test a non-existent country code. unknownCostNumber.clear(); unknownCostNumber.setCountryCode(123).setNationalNumber(911L); assertEquals(ShortNumberInfo.ShortNumberCost.UNKNOWN_COST, shortInfo.getExpectedCost(unknownCostNumber)); }