/** * 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()); }