private static void GenerateCountryCodeToRegionCodeMap(string inputFileName, string outputDirectory, string filePrefix) { Directory.CreateDirectory(outputDirectory); var file = File.OpenRead(inputFileName); var meta = BuildMetadataFromXml.BuildPhoneMetadataCollection(file, false); for (var i = 0; i < meta.MetadataCount; ++i) { var data = meta.GetMetadata(i); var regionCode = data.Id; if (string.IsNullOrEmpty(regionCode) || regionCode.Equals("001")) { regionCode = data.CountryCode.ToString(CultureInfo.InvariantCulture); } var outMetadataCollection = new PhoneMetadataCollection(); outMetadataCollection.MetadataList.Add(data); var outputFileName = Path.Combine(outputDirectory, filePrefix + "_" + regionCode); var outputForRegion = File.OpenWrite(outputFileName); outMetadataCollection.WriteTo(outputForRegion); } }
public void TestGetNationalPrefix() { String xmlInput = "<territory nationalPrefix='00'/>"; var territoryElement = parseXmlString(xmlInput); Assert.Equal("00", BuildMetadataFromXml.GetNationalPrefix(territoryElement)); }
// Tests setLeadingDigitsPatterns() in the case of international and national formatting rules // being present but not both defined for this numberFormat - we don't want to add them twice. [TestMethod] public void testSetLeadingDigitsPatternsNotAddedTwiceWhenInternationalFormatsPresent() { String xmlInput = " <availableFormats>" + " <numberFormat pattern=\"(1)(\\d{3})\">" + " <leadingDigits>1</leadingDigits>" + " <format>$1</format>" + " </numberFormat>" + " <numberFormat pattern=\"(2)(\\d{3})\">" + " <leadingDigits>2</leadingDigits>" + " <format>$1</format>" + " <intlFormat>9-$1</intlFormat>" + " </numberFormat>" + " </availableFormats>"; XmlElement element = parseXmlString(xmlInput); PhoneMetadata.Builder metadata = PhoneMetadata.newBuilder(); BuildMetadataFromXml.loadAvailableFormats( metadata, element, "0", "", false /* NP not optional */); Assert.AreEqual(1, metadata.getNumberFormat(0).leadingDigitsPatternSize()); Assert.AreEqual(1, metadata.getNumberFormat(1).leadingDigitsPatternSize()); // When we merge the national format rules into the international format rules, we shouldn't add // the leading digit patterns multiple times. Assert.AreEqual(1, metadata.getIntlNumberFormat(0).leadingDigitsPatternSize()); Assert.AreEqual(1, metadata.getIntlNumberFormat(1).leadingDigitsPatternSize()); }
public void TestValidateREThrowsException() { String invalidPattern = "["; // Should throw an exception when an invalid pattern is provided independently of the last // parameter (remove white spaces). try { BuildMetadataFromXml.ValidateRE(invalidPattern, false); Assert.Fail(); } catch (ArgumentException) { // Test passed. } try { BuildMetadataFromXml.ValidateRE(invalidPattern, true); Assert.Fail(); } catch (ArgumentException) { // Test passed. } }
// Tests getNationalPrefix(). [TestMethod] public void testGetNationalPrefix() { String xmlInput = "<territory nationalPrefix='00'/>"; XmlElement territoryElement = parseXmlString(xmlInput); Assert.AreEqual("00", BuildMetadataFromXml.getNationalPrefix(territoryElement)); }
public void TestLoadGeneralDescSetsAllDescriptions() { String xmlInput = "<territory countryCode=\"33\">" + " <fixedLine><nationalNumberPattern>\\d{1}</nationalNumberPattern></fixedLine>" + " <mobile><nationalNumberPattern>\\d{2}</nationalNumberPattern></mobile>" + " <pager><nationalNumberPattern>\\d{3}</nationalNumberPattern></pager>" + " <tollFree><nationalNumberPattern>\\d{4}</nationalNumberPattern></tollFree>" + " <premiumRate><nationalNumberPattern>\\d{5}</nationalNumberPattern></premiumRate>" + " <sharedCost><nationalNumberPattern>\\d{6}</nationalNumberPattern></sharedCost>" + " <personalNumber><nationalNumberPattern>\\d{7}</nationalNumberPattern></personalNumber>" + " <voip><nationalNumberPattern>\\d{8}</nationalNumberPattern></voip>" + " <uan><nationalNumberPattern>\\d{9}</nationalNumberPattern></uan>" + " <shortCode><nationalNumberPattern>\\d{10}</nationalNumberPattern></shortCode>" + "</territory>"; XElement territoryElement = parseXmlString(xmlInput); PhoneMetadata.Builder metadata = new PhoneMetadata.Builder(); BuildMetadataFromXml.LoadGeneralDesc(metadata, territoryElement, false); Assert.Equal("\\d{1}", metadata.FixedLine.NationalNumberPattern); Assert.Equal("\\d{2}", metadata.Mobile.NationalNumberPattern); Assert.Equal("\\d{3}", metadata.Pager.NationalNumberPattern); Assert.Equal("\\d{4}", metadata.TollFree.NationalNumberPattern); Assert.Equal("\\d{5}", metadata.PremiumRate.NationalNumberPattern); Assert.Equal("\\d{6}", metadata.SharedCost.NationalNumberPattern); Assert.Equal("\\d{7}", metadata.PersonalNumber.NationalNumberPattern); Assert.Equal("\\d{8}", metadata.Voip.NationalNumberPattern); Assert.Equal("\\d{9}", metadata.Uan.NationalNumberPattern); }
// Tests loadTerritoryTagMetadata(). [TestMethod] public void testLoadTerritoryTagMetadata() { String xmlInput = "<territory countryCode='33' leadingDigits='2' internationalPrefix='00'" + " preferredInternationalPrefix='0011' nationalPrefixForParsing='0'" + " nationalPrefixTransformRule='9$1'" + // nationalPrefix manually injected. " preferredExtnPrefix=' x' mainCountryForCode='true'" + " leadingZeroPossible='true' mobileNumberPortableRegion='true'>" + "</territory>"; XmlElement territoryElement = parseXmlString(xmlInput); PhoneMetadata.Builder phoneMetadata = BuildMetadataFromXml.loadTerritoryTagMetadata("33", territoryElement, "0"); Assert.AreEqual(33, phoneMetadata.getCountryCode()); Assert.AreEqual("2", phoneMetadata.getLeadingDigits()); Assert.AreEqual("00", phoneMetadata.getInternationalPrefix()); Assert.AreEqual("0011", phoneMetadata.getPreferredInternationalPrefix()); Assert.AreEqual("0", phoneMetadata.getNationalPrefixForParsing()); Assert.AreEqual("9$1", phoneMetadata.getNationalPrefixTransformRule()); Assert.AreEqual("0", phoneMetadata.getNationalPrefix()); Assert.AreEqual(" x", phoneMetadata.getPreferredExtnPrefix()); Assert.IsTrue(phoneMetadata.getMainCountryForCode()); Assert.IsTrue(phoneMetadata.isLeadingZeroPossible()); Assert.IsTrue(phoneMetadata.isMobileNumberPortableRegion()); }
[TestMethod] public void testNationalPrefixRulesSetCorrectly() { String xmlInput = "<territory countryCode=\"33\" nationalPrefix=\"0\"" + " nationalPrefixFormattingRule=\"$NP$FG\">" + " <availableFormats>" + " <numberFormat pattern=\"(1)(\\d{3})\" nationalPrefixOptionalWhenFormatting=\"true\">" + " <leadingDigits>1</leadingDigits>" + " <format>$1</format>" + " </numberFormat>" + " <numberFormat pattern=\"(\\d{3})\" nationalPrefixOptionalWhenFormatting=\"false\">" + " <leadingDigits>2</leadingDigits>" + " <format>$1</format>" + " </numberFormat>" + " </availableFormats>" + " <fixedLine><nationalNumberPattern>\\d{1}</nationalNumberPattern></fixedLine>" + "</territory>"; XmlElement territoryElement = parseXmlString(xmlInput); PhoneMetadata metadata = BuildMetadataFromXml.loadCountryMetadata("FR", territoryElement, false /* liteBuild */, false /* isShortNumberMetadata */, true /* isAlternateFormatsMetadata */); Assert.IsTrue(metadata.getNumberFormat(0).isNationalPrefixOptionalWhenFormatting()); // This is inherited from the territory, with $NP replaced by the actual national prefix, and // $FG replaced with $1. Assert.AreEqual("0$1", metadata.getNumberFormat(0).getNationalPrefixFormattingRule()); // Here it is explicitly set to false. Assert.IsFalse(metadata.getNumberFormat(1).isNationalPrefixOptionalWhenFormatting()); }
[TestMethod] public void testAlternateFormatsOmitsDescPatterns() { String xmlInput = "<territory countryCode=\"33\">" + " <availableFormats>" + " <numberFormat pattern=\"(1)(\\d{3})\">" + " <leadingDigits>1</leadingDigits>" + " <format>$1</format>" + " </numberFormat>" + " </availableFormats>" + " <fixedLine><nationalNumberPattern>\\d{1}</nationalNumberPattern></fixedLine>" + " <shortCode><nationalNumberPattern>\\d{2}</nationalNumberPattern></shortCode>" + "</territory>"; XmlElement territoryElement = parseXmlString(xmlInput); PhoneMetadata metadata = BuildMetadataFromXml.loadCountryMetadata("FR", territoryElement, false /* liteBuild */, false /* isShortNumberMetadata */, true /* isAlternateFormatsMetadata */); Assert.AreEqual("(1)(\\d{3})", metadata.getNumberFormat(0).getPattern()); Assert.AreEqual("1", metadata.getNumberFormat(0).getLeadingDigitsPattern(0)); Assert.AreEqual("$1", metadata.getNumberFormat(0).getFormat()); Assert.IsFalse(metadata.HasFixedLine()); Assert.IsNull(metadata.getFixedLine()); Assert.IsFalse(metadata.HasShortCode()); Assert.IsNull(metadata.getShortCode()); }
[TestMethod] public void testSetRelevantDescPatternsSetsAllDescriptionsForRegularLengthNumbers() { String xmlInput = "<territory countryCode=\"33\">" + " <fixedLine><nationalNumberPattern>\\d{1}</nationalNumberPattern></fixedLine>" + " <mobile><nationalNumberPattern>\\d{2}</nationalNumberPattern></mobile>" + " <pager><nationalNumberPattern>\\d{3}</nationalNumberPattern></pager>" + " <tollFree><nationalNumberPattern>\\d{4}</nationalNumberPattern></tollFree>" + " <premiumRate><nationalNumberPattern>\\d{5}</nationalNumberPattern></premiumRate>" + " <sharedCost><nationalNumberPattern>\\d{6}</nationalNumberPattern></sharedCost>" + " <personalNumber><nationalNumberPattern>\\d{7}</nationalNumberPattern></personalNumber>" + " <voip><nationalNumberPattern>\\d{8}</nationalNumberPattern></voip>" + " <uan><nationalNumberPattern>\\d{9}</nationalNumberPattern></uan>" + "</territory>"; XmlElement territoryElement = parseXmlString(xmlInput); PhoneMetadata.Builder metadata = PhoneMetadata.newBuilder(); BuildMetadataFromXml.setRelevantDescPatterns(metadata, territoryElement, false /* liteBuild */, false /* isShortNumberMetadata */); Assert.AreEqual("\\d{1}", metadata.getFixedLine().getNationalNumberPattern()); Assert.AreEqual("\\d{2}", metadata.getMobile().getNationalNumberPattern()); Assert.AreEqual("\\d{3}", metadata.getPager().getNationalNumberPattern()); Assert.AreEqual("\\d{4}", metadata.getTollFree().getNationalNumberPattern()); Assert.AreEqual("\\d{5}", metadata.getPremiumRate().getNationalNumberPattern()); Assert.AreEqual("\\d{6}", metadata.getSharedCost().getNationalNumberPattern()); Assert.AreEqual("\\d{7}", metadata.getPersonalNumber().getNationalNumberPattern()); Assert.AreEqual("\\d{8}", metadata.getVoip().getNationalNumberPattern()); Assert.AreEqual("\\d{9}", metadata.getUan().getNationalNumberPattern()); }
public void TestValidateRE() { String validPattern = "[a-zA-Z]d{1,9}"; // The provided pattern should be left unchanged. Assert.Equal(validPattern, BuildMetadataFromXml.ValidateRE(validPattern, false)); }
public void TestGetNationalPrefixFormattingRuleFromElement() { String xmlInput = "<territory nationalPrefixFormattingRule='$NP$FG'/>"; XElement element = parseXmlString(xmlInput); Assert.Equal("0${1}", BuildMetadataFromXml.GetNationalPrefixFormattingRuleFromElement(element, "0")); }
public void TestLoadTerritoryTagMetadataWithRequiredAttributesOnly() { String xmlInput = "<territory countryCode='33' internationalPrefix='00'/>"; XElement territoryElement = parseXmlString(xmlInput); // Should not throw any exception. BuildMetadataFromXml.LoadTerritoryTagMetadata("33", territoryElement, ""); }
public void TestValidateRERemovesWhiteSpaces() { String input = " hello world "; // Should remove all the white spaces contained in the provided string. Assert.Equal("helloworld", BuildMetadataFromXml.ValidateRE(input, true)); // Make sure it only happens when the last parameter is set to true. Assert.Equal(" hello world ", BuildMetadataFromXml.ValidateRE(input, false)); }
public void TestProcessPhoneNumberDescElementWithInvalidInput() { var territoryElement = ParseXmlString("<territory/>"); var phoneNumberDesc = BuildMetadataFromXml.ProcessPhoneNumberDescElement( null, territoryElement, "invalidType"); Assert.False(phoneNumberDesc.HasNationalNumberPattern); }
// Tests getDomesticCarrierCodeFormattingRuleFromElement(). [TestMethod] public void testGetDomesticCarrierCodeFormattingRuleFromElement() { String xmlInput = "<territory carrierCodeFormattingRule='$NP$CC $FG'/>"; XmlElement element = parseXmlString(xmlInput); Assert.AreEqual("0$CC $1", BuildMetadataFromXml.getDomesticCarrierCodeFormattingRuleFromXmlElement(element, "0")); }
public void TestLoadInternationalFormatDoesNotSetIntlFormatWhenNA() { var xmlInput = "<numberFormat><intlFormat>NA</intlFormat></numberFormat>"; var numberFormatElement = parseXmlString(xmlInput); var metadata = new PhoneMetadata.Builder(); var nationalFormat = "$1 $2"; BuildMetadataFromXml.LoadInternationalFormat(metadata, numberFormatElement, nationalFormat); Assert.AreEqual(0, metadata.IntlNumberFormatCount); }
public void TestLoadTerritoryTagMetadataSetsBooleanFieldsToFalseByDefault() { String xmlInput = "<territory countryCode='33'/>"; XElement territoryElement = parseXmlString(xmlInput); PhoneMetadata.Builder phoneMetadata = BuildMetadataFromXml.LoadTerritoryTagMetadata("33", territoryElement, ""); Assert.False(phoneMetadata.MainCountryForCode); Assert.False(phoneMetadata.LeadingZeroPossible); }
public void TestProcessPhoneNumberDescElementWithInvalidInput() { XElement territoryElement = parseXmlString("<territory/>"); var phoneNumberDesc = BuildMetadataFromXml.ProcessPhoneNumberDescElement( null, territoryElement, "invalidType", false); Assert.Equal("NA", phoneNumberDesc.PossibleNumberPattern); Assert.Equal("NA", phoneNumberDesc.NationalNumberPattern); }
public void TestGetDomesticCarrierCodeFormattingRuleFromElement() { String xmlInput = "<territory carrierCodeFormattingRule='$NP$CC $FG'/>"; XElement element = parseXmlString(xmlInput); // C#: the output regex differs from Java one Assert.Equal("0$CC ${1}", BuildMetadataFromXml.GetDomesticCarrierCodeFormattingRuleFromElement(element, "0")); }
[TestMethod] public void testLoadTerritoryTagMetadataSetsBooleanFieldsToFalseByDefault() { String xmlInput = "<territory countryCode='33'/>"; XmlElement territoryElement = parseXmlString(xmlInput); PhoneMetadata.Builder phoneMetadata = BuildMetadataFromXml.loadTerritoryTagMetadata("33", territoryElement, ""); Assert.IsFalse(phoneMetadata.getMainCountryForCode()); Assert.IsFalse(phoneMetadata.isLeadingZeroPossible()); Assert.IsFalse(phoneMetadata.isMobileNumberPortableRegion()); }
public void TestProcessPhoneNumberDescElementMergesWithGeneralDesc() { PhoneNumberDesc generalDesc = new PhoneNumberDesc.Builder() .SetPossibleNumberPattern("\\d{6}").Build(); XElement territoryElement = parseXmlString("<territory><fixedLine/></territory>"); var phoneNumberDesc = BuildMetadataFromXml.ProcessPhoneNumberDescElement( generalDesc, territoryElement, "fixedLine", false); Assert.Equal("\\d{6}", phoneNumberDesc.PossibleNumberPattern); }
public void TestLoadInternationalFormatUsesNationalFormatByDefault() { var xmlInput = "<numberFormat></numberFormat>"; var numberFormatElement = ParseXmlString(xmlInput); var metadata = new PhoneMetadata.Builder(); var nationalFormat = "$1 $2 $3"; Assert.False(BuildMetadataFromXml.LoadInternationalFormat(metadata, numberFormatElement, nationalFormat)); Assert.Equal(nationalFormat, metadata.IntlNumberFormatList[0].Format); }
public void TestLoadTerritoryTagMetadataSetsNationalPrefixForParsingByDefault() { String xmlInput = "<territory countryCode='33'/>"; XElement territoryElement = parseXmlString(xmlInput); PhoneMetadata.Builder phoneMetadata = BuildMetadataFromXml.LoadTerritoryTagMetadata("33", territoryElement, "00"); // When unspecified, nationalPrefixForParsing defaults to nationalPrefix. Assert.Equal("00", phoneMetadata.NationalPrefix); Assert.Equal(phoneMetadata.NationalPrefix, phoneMetadata.NationalPrefixForParsing); }
[TestMethod] public void testProcessPhoneNumberDescElementMergesWithGeneralDesc() { PhoneNumberDesc.Builder generalDesc = PhoneNumberDesc.newBuilder(); generalDesc.setPossibleNumberPattern("\\d{6}"); XmlElement territoryElement = parseXmlString("<territory><fixedLine/></territory>"); PhoneNumberDesc.Builder phoneNumberDesc; phoneNumberDesc = BuildMetadataFromXml.processPhoneNumberDescElement( generalDesc, territoryElement, "fixedLine", false); Assert.AreEqual("\\d{6}", phoneNumberDesc.getPossibleNumberPattern()); }
public void TestLoadInternationalFormatWithBothNationalAndIntlFormatsDefined() { var intlFormat = "$1 $2"; var xmlInput = "<numberFormat><intlFormat>" + intlFormat + "</intlFormat></numberFormat>"; var numberFormatElement = ParseXmlString(xmlInput); var metadata = new PhoneMetadata.Builder(); var nationalFormat = "$1"; Assert.True(BuildMetadataFromXml.LoadInternationalFormat(metadata, numberFormatElement, nationalFormat)); Assert.Equal(intlFormat, metadata.IntlNumberFormatList[0].Format); }
public void TestProcessPhoneNumberDescElementHandlesLiteBuild() { String xmlInput = "<territory><fixedLine>" + " <exampleNumber>01 01 01 01</exampleNumber>" + "</fixedLine></territory>"; XElement territoryElement = parseXmlString(xmlInput); var phoneNumberDesc = BuildMetadataFromXml.ProcessPhoneNumberDescElement( null, territoryElement, "fixedLine", true); Assert.Equal("", phoneNumberDesc.ExampleNumber); }
[TestMethod] public void testLoadNationalFormat() { String nationalFormat = "$1 $2"; String xmlInput = String.Format("<numberFormat><format>{0}</format></numberFormat>", nationalFormat); XmlElement numberFormatElement = parseXmlString(xmlInput); PhoneMetadata.Builder metadata = PhoneMetadata.newBuilder(); NumberFormat.Builder numberFormat = NumberFormat.newBuilder(); BuildMetadataFromXml.loadNationalFormat(metadata, numberFormatElement, numberFormat); Assert.AreEqual(nationalFormat, numberFormat.getFormat()); }
// Tests processPhoneNumberDescElement(). [TestMethod] public void testProcessPhoneNumberDescElementWithInvalidInput() { PhoneNumberDesc.Builder generalDesc = PhoneNumberDesc.newBuilder(); XmlElement territoryElement = parseXmlString("<territory/>"); PhoneNumberDesc.Builder phoneNumberDesc; phoneNumberDesc = BuildMetadataFromXml.processPhoneNumberDescElement( generalDesc, territoryElement, "invalidType", false); Assert.AreEqual("NA", phoneNumberDesc.getPossibleNumberPattern()); Assert.AreEqual("NA", phoneNumberDesc.getNationalNumberPattern()); }
public void TestProcessPhoneNumberDescRemovesWhiteSpacesInPatterns() { String xmlInput = "<territory><fixedLine>" + " <possibleNumberPattern>\t \\d { 6 } </possibleNumberPattern>" + "</fixedLine></territory>"; XElement countryElement = parseXmlString(xmlInput); var phoneNumberDesc = BuildMetadataFromXml.ProcessPhoneNumberDescElement( null, countryElement, "fixedLine", false); Assert.Equal("\\d{6}", phoneNumberDesc.PossibleNumberPattern); }