[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());
        }
Example #2
0
        [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));
        }