/**
         * Gets a valid short number for the specified cost category.
         *
         * @param regionCode the region for which an example short number is needed
         * @param cost the cost category of number that is needed
         * @return a valid short number for the specified region and cost category. Returns an empty
         *     string when the metadata does not contain such information, or the cost is UNKNOWN_COST.
         */
        // @VisibleForTesting
        internal String getExampleShortNumberForCost(String regionCode, ShortNumberCost cost)
        {
            PhoneMetadata phoneMetadata = MetadataManager.getShortNumberMetadataForRegion(regionCode);

            if (phoneMetadata == null)
            {
                return("");
            }
            PhoneNumberDesc desc = null;

            switch (cost)
            {
            case ShortNumberCost.TOLL_FREE:
                desc = phoneMetadata.getTollFree();
                break;

            case ShortNumberCost.STANDARD_RATE:
                desc = phoneMetadata.getStandardRate();
                break;

            case ShortNumberCost.PREMIUM_RATE:
                desc = phoneMetadata.getPremiumRate();
                break;

            default:
                // UNKNOWN_COST numbers are computed by the process of elimination from the other cost
                // categories.
                break;
            }
            if (desc != null && desc.hasExampleNumber())
            {
                return(desc.getExampleNumber());
            }
            return("");
        }
        /**
         * Gets a valid short number for the specified region.
         *
         * @param regionCode the region for which an example short number is needed
         * @return a valid short number for the specified region. Returns an empty string when the
         *     metadata does not contain such information.
         */
        // @VisibleForTesting
        internal String getExampleShortNumber(String regionCode)
        {
            PhoneMetadata phoneMetadata = MetadataManager.getShortNumberMetadataForRegion(regionCode);

            if (phoneMetadata == null)
            {
                return("");
            }
            PhoneNumberDesc desc = phoneMetadata.getShortCode();

            if (desc.hasExampleNumber())
            {
                return(desc.getExampleNumber());
            }
            return("");
        }
        [TestMethod] public void testEmergency()
        {
            int wrongTypeCounter = 0;

            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;
                }
                PhoneNumberDesc desc =
                    MetadataManager.getShortNumberMetadataForRegion(regionCode).getEmergency();
                if (desc.hasExampleNumber())
                {
                    String exampleNumber = desc.getExampleNumber();
                    if (!exampleNumber.matches(desc.getPossibleNumberPattern()) ||
                        !shortNumberInfo.isEmergencyNumber(exampleNumber, regionCode))
                    {
                        wrongTypeCounter++;
                        LOGGER.log(Level.SEVERE, "Emergency example number test failed for " + regionCode);
                    }
                    else
                    {
                        PhoneNumber emergencyNumber = phoneNumberUtil.parse(exampleNumber, regionCode);
                        if (shortNumberInfo.getExpectedCost(emergencyNumber) !=
                            ShortNumberInfo.ShortNumberCost.TOLL_FREE)
                        {
                            wrongTypeCounter++;
                            LOGGER.log(Level.SEVERE, "Emergency example number not toll free for " + regionCode);
                        }
                    }
                }
            }
            assertEquals(0, wrongTypeCounter);
        }
 [TestMethod] public void testCanBeInternationallyDialled()
 {
     foreach (String regionCode in phoneNumberUtil.getSupportedRegions())
     {
         PhoneNumber     exampleNumber = null;
         PhoneNumberDesc desc          =
             phoneNumberUtil.getMetadataForRegion(regionCode).getNoInternationalDialling();
         try {
             if (desc.hasExampleNumber())
             {
                 exampleNumber = phoneNumberUtil.parse(desc.getExampleNumber(), regionCode);
             }
         } catch (NumberParseException e) {
             LOGGER.log(Level.SEVERE, e.toString());
         }
         if (exampleNumber != null && phoneNumberUtil.canBeInternationallyDialled(exampleNumber))
         {
             wrongTypeCases.add(exampleNumber);
             LOGGER.log(Level.SEVERE, "Number " + exampleNumber.toString()
                        + " should not be internationally diallable");
         }
     }
     assertEquals(0, wrongTypeCases.size());
 }