bchavez / Bogus

:card_index: A simple fake data generator for C#, F#, and VB.NET. Based on and ported from the famed faker.js.
Other
8.66k stars 495 forks source link

en_GB (UK) phone numbers are sometimes invalid #558

Open rd-waymark opened 4 weeks ago

rd-waymark commented 4 weeks ago

Bogus NuGet Package

35.6.0

.NET Version

NET 8.0.400

Visual Studio Version

Rider 2024.1.4

What operating system are you using?

Windows

What locale are you using with Bogus?

en_GB

Problem Description

Some phone numbers generated by Faker.Phone.PhoneNumber() when using the en_GB locale are invalid

LINQPad Example or Reproduction Steps

void Main() { while(true) { var faker = new Faker("en_GB");

    string phoneNumber = faker.Phone.PhoneNumber();

    PhoneNumberUtil? phoneNumberUtil = PhoneNumberUtil.GetInstance();
    PhoneNumbers.PhoneNumber? parsedPhoneNumber = phoneNumberUtil.Parse(phoneNumber, "GB");

    if (!phoneNumberUtil.IsValidNumberForRegion(parsedPhoneNumber, "GB"))
    {
        throw new Exception("Invalid phone number " + phoneNumber);
    }
}

}



### Expected Behavior

All UK phone numbers generated by `faker.Phone.PhoneNumber();` should be valid.

See Google's libPhoneNumber: https://github.com/google/libphonenumber/blob/master/resources/PhoneNumberMetadata.xml#L11093 

### Actual Behavior

`faker.Phone.PhoneNumber();` sometimes generates invalid UK phone numbers, such as:
- 016977 0004
- 0961 296 3851
- 016977 8550
- 0887 603 2383

### Known Workarounds

`Faker.Phone.PhoneNumber("07#########")` is a suitable workaround.

### Could you help with a pull-request?

No