Exemplo n.º 1
0
        internal static boolean checkNumberGroupingIsValid(
            PhoneNumber number, String candidate, PhoneNumberUtil util, NumberGroupingChecker checker)
        {
            // TODO: Evaluate how this works for other locales (testing has been limited to NANPA regions)
            // and optimise if necessary.
            StringBuilder normalizedCandidate =
                PhoneNumberUtil.normalizeDigits(candidate, true /* keep non-digits */);

            String[] formattedNumberGroups = getNationalNumberGroups(util, number, null);
            if (checker.checkGroups(util, number, normalizedCandidate, formattedNumberGroups))
            {
                return(true);
            }
            // If this didn't pass, see if there are any alternate formats, and try them instead.
            PhoneMetadata alternateFormats =
                MetadataManager.getAlternateFormatsForCountry(number.getCountryCode());

            if (alternateFormats != null)
            {
                foreach (NumberFormat alternateFormat in alternateFormats.numberFormats())
                {
                    formattedNumberGroups = getNationalNumberGroups(util, number, alternateFormat);
                    if (checker.checkGroups(util, number, normalizedCandidate, formattedNumberGroups))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
        [TestMethod] public void testAlternateFormatsContainsData()
        {
            // We should have some data for Germany.
            PhoneMetadata germanyAlternateFormats = MetadataManager.getAlternateFormatsForCountry(49);

            assertNotNull(germanyAlternateFormats);
            assertTrue(germanyAlternateFormats.numberFormats().size() > 0);
        }
        [TestMethod] public void testAlternateFormatsFailsGracefully()
        {
            PhoneMetadata noAlternateFormats = MetadataManager.getAlternateFormatsForCountry(999);

            assertNull(noAlternateFormats);
        }