private static readonly PhoneNumberUtil _phoneNumberUtil = PhoneNumberUtil.GetInstance();
private record TestCase(string RegionCode, PhoneNumberType Type, string Value);
public static void Main()
Console.WriteLine($"TEST CASES");
var testCases = new TestCase[]
new("AU", PhoneNumberType.FIXED_LINE, "0755123456"),
new("AU", PhoneNumberType.MOBILE, "0434111222"),
new("NZ", PhoneNumberType.FIXED_LINE, "0755123456"),
new("NZ", PhoneNumberType.MOBILE, "0434111222"),
foreach (var testCase in testCases)
var isValid = IsValid(testCase);
Console.WriteLine($"{testCase}");
Console.WriteLine($"Is valid? {isValid}");
Console.WriteLine($"EXAMPLE NUMBERS");
foreach (var regionCode in regionCodes)
Console.WriteLine($"-----------------------------------");
Console.WriteLine($"{regionCode}");
Console.WriteLine($"-----------------------------------");
WriteRandomPhoneNumbersForRegion(regionCode);
private static void WriteRandomPhoneNumbersForRegion(string regionCode)
PhoneNumberType.FIXED_LINE,
foreach (var type in Enum.GetValues<PhoneNumberType>())
Console.WriteLine($"{type} number ");
WriteRandomPhoneNumber(regionCode, type);
Console.WriteLine("-- unable to generate --");
private static void WriteRandomPhoneNumber(string regionCode, PhoneNumberType type)
var phoneNumber = _phoneNumberUtil.GetExampleNumberForType(regionCode, type);
Console.WriteLine(_phoneNumberUtil.Format(phoneNumber, PhoneNumberFormat.NATIONAL));
private static bool IsValid(TestCase testCase)
phoneNumber = _phoneNumberUtil.Parse(testCase.Value, testCase.RegionCode);
if (_phoneNumberUtil.GetRegionCodeForNumber(phoneNumber) != testCase.RegionCode)
if (_phoneNumberUtil.GetNumberType(phoneNumber) != testCase.Type)
return _phoneNumberUtil.IsValidNumber(phoneNumber);