From b64098d9fac1075acb920d1fc8de98ce9200eedb Mon Sep 17 00:00:00 2001 From: IDAM Date: Thu, 18 Dec 2025 16:07:34 +0100 Subject: [PATCH] Grenada, Guadeloupe, Gaum, Guatemala, Guernsey, Guinea --- .../Countries/GrenadaTest.cs | 48 ++++++++++++++ .../Countries/GuadeloupeTest.cs | 46 ++++++++++++++ src/World.Net.UnitTests/Countries/GuamTest.cs | 46 ++++++++++++++ .../Countries/GuatemalaTest.cs | 63 +++++++++++++++++++ .../Countries/GuernseyTest.cs | 39 ++++++++++++ .../Countries/GuineaTest.cs | 49 +++++++++++++++ src/World.Net/Countries/Grenada.cs | 43 +++++++++++++ src/World.Net/Countries/Guadeloupe.cs | 34 ++++++++++ src/World.Net/Countries/Guam.cs | 34 ++++++++++ src/World.Net/Countries/Guatemala.cs | 58 +++++++++++++++++ src/World.Net/Countries/Guernsey.cs | 34 ++++++++++ src/World.Net/Countries/Guinea.cs | 44 +++++++++++++ src/World.Net/Helpers/CountryInitializer.cs | 6 ++ 13 files changed, 544 insertions(+) create mode 100644 src/World.Net.UnitTests/Countries/GrenadaTest.cs create mode 100644 src/World.Net.UnitTests/Countries/GuadeloupeTest.cs create mode 100644 src/World.Net.UnitTests/Countries/GuamTest.cs create mode 100644 src/World.Net.UnitTests/Countries/GuatemalaTest.cs create mode 100644 src/World.Net.UnitTests/Countries/GuernseyTest.cs create mode 100644 src/World.Net.UnitTests/Countries/GuineaTest.cs create mode 100644 src/World.Net/Countries/Grenada.cs create mode 100644 src/World.Net/Countries/Guadeloupe.cs create mode 100644 src/World.Net/Countries/Guam.cs create mode 100644 src/World.Net/Countries/Guatemala.cs create mode 100644 src/World.Net/Countries/Guernsey.cs create mode 100644 src/World.Net/Countries/Guinea.cs diff --git a/src/World.Net.UnitTests/Countries/GrenadaTest.cs b/src/World.Net.UnitTests/Countries/GrenadaTest.cs new file mode 100644 index 0000000..a0516e5 --- /dev/null +++ b/src/World.Net.UnitTests/Countries/GrenadaTest.cs @@ -0,0 +1,48 @@ +namespace World.Net.UnitTests.Countries; + +public sealed class GrenadaTest : AssertCountryTestBase +{ + private const string GRENADA_COUNTRY_NAME = "Grenada"; + private const string GRENADA_NATIVE_NAME = "Grenada"; + private const string GRENADA_CAPITAL = "St. George's"; + private const string GRENADA_OFFICIAL_NAME = "Grenada"; + private const string GRENADA_ISO2_CODE = "GD"; + private const string GRENADA_ISO3_CODE = "GRD"; + private const int GRENADA_NUMERIC_CODE = 308; + private readonly string[] GRENADA_CALLING_CODE = ["+1-473"]; + private const CountryIdentifier EXPECTEDID = CountryIdentifier.Grenada; + + private static readonly (string Name, string IsoCode, string Type)[] EXPECTED_STATES = + [ + new("Saint Andrew", "GD-01", "Parish"), + new("Saint David", "GD-02", "Parish"), + new("Saint George", "GD-03", "Parish"), + new("Saint John", "GD-04", "Parish"), + new("Saint Mark", "GD-05", "Parish"), + new("Saint Patrick", "GD-06", "Parish"), + new("Carriacou and Petite Martinique", "GD-10", "Dependency") + ]; + + [Fact] + public void GetCountry_ReturnsCorrectInformation_ForGrenada() + { + // Arrange + // Act + var country = CountryProvider.GetCountry(EXPECTEDID); + + // Assert + AssertCorrectInformation( + country, + EXPECTEDID, + GRENADA_COUNTRY_NAME, + GRENADA_OFFICIAL_NAME, + GRENADA_NATIVE_NAME, + GRENADA_CAPITAL, + GRENADA_NUMERIC_CODE, + GRENADA_ISO2_CODE, + GRENADA_ISO3_CODE, + GRENADA_CALLING_CODE, + EXPECTED_STATES + ); + } +} diff --git a/src/World.Net.UnitTests/Countries/GuadeloupeTest.cs b/src/World.Net.UnitTests/Countries/GuadeloupeTest.cs new file mode 100644 index 0000000..a9675a1 --- /dev/null +++ b/src/World.Net.UnitTests/Countries/GuadeloupeTest.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace World.Net.UnitTests.Countries +{ + public sealed class GuadeloupeTest : AssertCountryTestBase + { + private const string GUADELOUPE_COUNTRY_NAME = "Guadeloupe"; + private const string GUADELOUPE_NATIVE_NAME = "Guadeloupe"; + private const string GUADELOUPE_CAPITAL = "Basse-Terre"; + private const string GUADELOUPE_OFFICIAL_NAME = "Guadeloupe"; + private const string GUADELOUPE_ISO2_CODE = "GP"; + private const string GUADELOUPE_ISO3_CODE = "GLP"; + private const int GUADELOUPE_NUMERIC_CODE = 312; + private readonly string[] GUADELOUPE_CALLING_CODE = ["+590"]; + private const CountryIdentifier EXPECTEDID = CountryIdentifier.Guadeloupe; + + private static readonly (string Name, string IsoCode, string Type)[] EXPECTED_STATES = []; + + [Fact] + public void GetCountry_ReturnsCorrectInformation_ForGuadeloupe() + { + // Arrange + // Act + var country = CountryProvider.GetCountry(EXPECTEDID); + + // Assert + AssertCorrectInformation( + country, + EXPECTEDID, + GUADELOUPE_COUNTRY_NAME, + GUADELOUPE_OFFICIAL_NAME, + GUADELOUPE_NATIVE_NAME, + GUADELOUPE_CAPITAL, + GUADELOUPE_NUMERIC_CODE, + GUADELOUPE_ISO2_CODE, + GUADELOUPE_ISO3_CODE, + GUADELOUPE_CALLING_CODE, + EXPECTED_STATES + ); + } + } +} diff --git a/src/World.Net.UnitTests/Countries/GuamTest.cs b/src/World.Net.UnitTests/Countries/GuamTest.cs new file mode 100644 index 0000000..25ad4b5 --- /dev/null +++ b/src/World.Net.UnitTests/Countries/GuamTest.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace World.Net.UnitTests.Countries +{ + public sealed class GuamTest : AssertCountryTestBase + { + private const string GUAM_COUNTRY_NAME = "Guam"; + private const string GUAM_NATIVE_NAME = "Guam"; + private const string GUAM_CAPITAL = "Hagåtña"; + private const string GUAM_OFFICIAL_NAME = "Guam"; + private const string GUAM_ISO2_CODE = "GU"; + private const string GUAM_ISO3_CODE = "GUM"; + private const int GUAM_NUMERIC_CODE = 316; + private readonly string[] GUAM_CALLING_CODE = ["+1-671"]; + private const CountryIdentifier EXPECTEDID = CountryIdentifier.Guam; + + private static readonly (string Name, string IsoCode, string Type)[] EXPECTED_STATES = []; + + [Fact] + public void GetCountry_ReturnsCorrectInformation_ForGuam() + { + // Arrange + // Act + var country = CountryProvider.GetCountry(EXPECTEDID); + + // Assert + AssertCorrectInformation( + country, + EXPECTEDID, + GUAM_COUNTRY_NAME, + GUAM_OFFICIAL_NAME, + GUAM_NATIVE_NAME, + GUAM_CAPITAL, + GUAM_NUMERIC_CODE, + GUAM_ISO2_CODE, + GUAM_ISO3_CODE, + GUAM_CALLING_CODE, + EXPECTED_STATES + ); + } + } +} diff --git a/src/World.Net.UnitTests/Countries/GuatemalaTest.cs b/src/World.Net.UnitTests/Countries/GuatemalaTest.cs new file mode 100644 index 0000000..94eb3bc --- /dev/null +++ b/src/World.Net.UnitTests/Countries/GuatemalaTest.cs @@ -0,0 +1,63 @@ +namespace World.Net.UnitTests.Countries; + +public sealed class GuatemalaTest : AssertCountryTestBase +{ + private const string GUATEMALA_COUNTRY_NAME = "Guatemala"; + private const string GUATEMALA_NATIVE_NAME = "Guatemala"; + private const string GUATEMALA_CAPITAL = "Guatemala City"; + private const string GUATEMALA_OFFICIAL_NAME = "Republic of Guatemala"; + private const string GUATEMALA_ISO2_CODE = "GT"; + private const string GUATEMALA_ISO3_CODE = "GTM"; + private const int GUATEMALA_NUMERIC_CODE = 320; + private readonly string[] GUATEMALA_CALLING_CODE = ["+502"]; + private const CountryIdentifier EXPECTEDID = CountryIdentifier.Guatemala; + + private static readonly (string Name, string IsoCode, string Type)[] EXPECTED_STATES = + [ + new("Alta Verapaz", "GT-AV", "Department"), + new("Baja Verapaz", "GT-BV", "Department"), + new("Chimaltenango", "GT-CM", "Department"), + new("Chiquimula", "GT-CQ", "Department"), + new("El Progreso", "GT-PR", "Department"), + new("Escuintla", "GT-ES", "Department"), + new("Guatemala", "GT-GU", "Department"), + new("Huehuetenango", "GT-HU", "Department"), + new("Izabal", "GT-IZ", "Department"), + new("Jalapa", "GT-JA", "Department"), + new("Jutiapa", "GT-JU", "Department"), + new("Petén", "GT-PE", "Department"), + new("Quetzaltenango", "GT-QZ", "Department"), + new("Quiché", "GT-QC", "Department"), + new("Retalhuleu", "GT-RE", "Department"), + new("Sacatepéquez", "GT-SA", "Department"), + new("San Marcos", "GT-SM", "Department"), + new("Santa Rosa", "GT-SR", "Department"), + new("Sololá", "GT-SO", "Department"), + new("Suchitepéquez", "GT-SU", "Department"), + new("Totonicapán", "GT-TO", "Department"), + new("Zacapa", "GT-ZA", "Department") + ]; + + [Fact] + public void GetCountry_ReturnsCorrectInformation_ForGuatemala() + { + // Arrange + // Act + var country = CountryProvider.GetCountry(EXPECTEDID); + + // Assert + AssertCorrectInformation( + country, + EXPECTEDID, + GUATEMALA_COUNTRY_NAME, + GUATEMALA_OFFICIAL_NAME, + GUATEMALA_NATIVE_NAME, + GUATEMALA_CAPITAL, + GUATEMALA_NUMERIC_CODE, + GUATEMALA_ISO2_CODE, + GUATEMALA_ISO3_CODE, + GUATEMALA_CALLING_CODE, + EXPECTED_STATES + ); + } +} diff --git a/src/World.Net.UnitTests/Countries/GuernseyTest.cs b/src/World.Net.UnitTests/Countries/GuernseyTest.cs new file mode 100644 index 0000000..ad2f78d --- /dev/null +++ b/src/World.Net.UnitTests/Countries/GuernseyTest.cs @@ -0,0 +1,39 @@ +namespace World.Net.UnitTests.Countries; + +public sealed class GuernseyTest : AssertCountryTestBase +{ + private const string GUERNSEY_COUNTRY_NAME = "Guernsey"; + private const string GUERNSEY_NATIVE_NAME = "Guernsey"; + private const string GUERNSEY_CAPITAL = "St. Peter Port"; + private const string GUERNSEY_OFFICIAL_NAME = "Guernsey"; + private const string GUERNSEY_ISO2_CODE = "GG"; + private const string GUERNSEY_ISO3_CODE = "GGY"; + private const int GUERNSEY_NUMERIC_CODE = 831; + private readonly string[] GUERNSEY_CALLING_CODE = ["+44-1481"]; + private const CountryIdentifier EXPECTEDID = CountryIdentifier.GuernseyAndAlderney; + + private static readonly (string Name, string IsoCode, string Type)[] EXPECTED_STATES = []; + + [Fact] + public void GetCountry_ReturnsCorrectInformation_ForGuernsey() + { + // Arrange + // Act + var country = CountryProvider.GetCountry(EXPECTEDID); + + // Assert + AssertCorrectInformation( + country, + EXPECTEDID, + GUERNSEY_COUNTRY_NAME, + GUERNSEY_OFFICIAL_NAME, + GUERNSEY_NATIVE_NAME, + GUERNSEY_CAPITAL, + GUERNSEY_NUMERIC_CODE, + GUERNSEY_ISO2_CODE, + GUERNSEY_ISO3_CODE, + GUERNSEY_CALLING_CODE, + EXPECTED_STATES + ); + } +} diff --git a/src/World.Net.UnitTests/Countries/GuineaTest.cs b/src/World.Net.UnitTests/Countries/GuineaTest.cs new file mode 100644 index 0000000..8c4a50b --- /dev/null +++ b/src/World.Net.UnitTests/Countries/GuineaTest.cs @@ -0,0 +1,49 @@ +namespace World.Net.UnitTests.Countries; + +public sealed class GuineaTest : AssertCountryTestBase +{ + private const string GUINEA_COUNTRY_NAME = "Guinea"; + private const string GUINEA_NATIVE_NAME = "Guinée"; + private const string GUINEA_CAPITAL = "Conakry"; + private const string GUINEA_OFFICIAL_NAME = "Republic of Guinea"; + private const string GUINEA_ISO2_CODE = "GN"; + private const string GUINEA_ISO3_CODE = "GIN"; + private const int GUINEA_NUMERIC_CODE = 324; + private readonly string[] GUINEA_CALLING_CODE = ["+224"]; + private const CountryIdentifier EXPECTEDID = CountryIdentifier.Guinea; + + private static readonly (string Name, string IsoCode, string Type)[] EXPECTED_STATES = + [ + new("Boké", "GN-B", "Region"), + new("Conakry", "GN-C", "Region"), + new("Faranah", "GN-F", "Region"), + new("Kankan", "GN-K", "Region"), + new("Kindia", "GN-D", "Region"), + new("Labé", "GN-L", "Region"), + new("Mamou", "GN-M", "Region"), + new("Nzérékoré", "GN-N", "Region") + ]; + + [Fact] + public void GetCountry_ReturnsCorrectInformation_ForGuinea() + { + // Arrange + // Act + var country = CountryProvider.GetCountry(EXPECTEDID); + + // Assert + AssertCorrectInformation( + country, + EXPECTEDID, + GUINEA_COUNTRY_NAME, + GUINEA_OFFICIAL_NAME, + GUINEA_NATIVE_NAME, + GUINEA_CAPITAL, + GUINEA_NUMERIC_CODE, + GUINEA_ISO2_CODE, + GUINEA_ISO3_CODE, + GUINEA_CALLING_CODE, + EXPECTED_STATES + ); + } +} diff --git a/src/World.Net/Countries/Grenada.cs b/src/World.Net/Countries/Grenada.cs new file mode 100644 index 0000000..5268cb5 --- /dev/null +++ b/src/World.Net/Countries/Grenada.cs @@ -0,0 +1,43 @@ +namespace World.Net.Countries; + +internal sealed class Grenada : ICountry +{ + // + public CountryIdentifier Id => CountryIdentifier.Grenada; + + // + public string Name { get; } = "Grenada"; + + // + public string OfficialName { get; } = "Grenada"; + + // + public string NativeName => "Grenada"; + + // + public string Capital { get; } = "St. George's"; + + // + public int NumericCode { get; } = 308; + + // + public string ISO2Code { get; } = "GD"; + + // + public string ISO3Code { get; } = "GRD"; + + // + public string[] CallingCode { get; } = ["+1-473"]; + + // + public IEnumerable States => + [ + new("Saint Andrew", "GD-01", "Parish"), + new("Saint David", "GD-02", "Parish"), + new("Saint George", "GD-03", "Parish"), + new("Saint John", "GD-04", "Parish"), + new("Saint Mark", "GD-05", "Parish"), + new("Saint Patrick", "GD-06", "Parish"), + new("Carriacou and Petite Martinique", "GD-10", "Dependency") + ]; +} diff --git a/src/World.Net/Countries/Guadeloupe.cs b/src/World.Net/Countries/Guadeloupe.cs new file mode 100644 index 0000000..b7e39ea --- /dev/null +++ b/src/World.Net/Countries/Guadeloupe.cs @@ -0,0 +1,34 @@ +namespace World.Net.Countries; + +internal sealed class Guadeloupe : ICountry +{ + // + public CountryIdentifier Id => CountryIdentifier.Guadeloupe; + + // + public string Name { get; } = "Guadeloupe"; + + // + public string OfficialName { get; } = "Guadeloupe"; + + // + public string NativeName => "Guadeloupe"; + + // + public string Capital { get; } = "Basse-Terre"; + + // + public int NumericCode { get; } = 312; + + // + public string ISO2Code { get; } = "GP"; + + // + public string ISO3Code { get; } = "GLP"; + + // + public string[] CallingCode { get; } = ["+590"]; + + // + public IEnumerable States => []; +} diff --git a/src/World.Net/Countries/Guam.cs b/src/World.Net/Countries/Guam.cs new file mode 100644 index 0000000..802b9b5 --- /dev/null +++ b/src/World.Net/Countries/Guam.cs @@ -0,0 +1,34 @@ +namespace World.Net.Countries; + +internal sealed class Guam : ICountry +{ + // + public CountryIdentifier Id => CountryIdentifier.Guam; + + // + public string Name { get; } = "Guam"; + + // + public string OfficialName { get; } = "Guam"; + + // + public string NativeName => "Guam"; + + // + public string Capital { get; } = "Hagåtña"; + + // + public int NumericCode { get; } = 316; + + // + public string ISO2Code { get; } = "GU"; + + // + public string ISO3Code { get; } = "GUM"; + + // + public string[] CallingCode { get; } = ["+1-671"]; + + // + public IEnumerable States => []; +} diff --git a/src/World.Net/Countries/Guatemala.cs b/src/World.Net/Countries/Guatemala.cs new file mode 100644 index 0000000..5ee9eb4 --- /dev/null +++ b/src/World.Net/Countries/Guatemala.cs @@ -0,0 +1,58 @@ +namespace World.Net.Countries; + +internal sealed class Guatemala : ICountry +{ + // + public CountryIdentifier Id => CountryIdentifier.Guatemala; + + // + public string Name { get; } = "Guatemala"; + + // + public string OfficialName { get; } = "Republic of Guatemala"; + + // + public string NativeName => "Guatemala"; + + // + public string Capital { get; } = "Guatemala City"; + + // + public int NumericCode { get; } = 320; + + // + public string ISO2Code { get; } = "GT"; + + // + public string ISO3Code { get; } = "GTM"; + + // + public string[] CallingCode { get; } = ["+502"]; + + // + public IEnumerable States => + [ + new("Alta Verapaz", "GT-AV", "Department"), + new("Baja Verapaz", "GT-BV", "Department"), + new("Chimaltenango", "GT-CM", "Department"), + new("Chiquimula", "GT-CQ", "Department"), + new("El Progreso", "GT-PR", "Department"), + new("Escuintla", "GT-ES", "Department"), + new("Guatemala", "GT-GU", "Department"), + new("Huehuetenango", "GT-HU", "Department"), + new("Izabal", "GT-IZ", "Department"), + new("Jalapa", "GT-JA", "Department"), + new("Jutiapa", "GT-JU", "Department"), + new("Petén", "GT-PE", "Department"), + new("Quetzaltenango", "GT-QZ", "Department"), + new("Quiché", "GT-QC", "Department"), + new("Retalhuleu", "GT-RE", "Department"), + new("Sacatepéquez", "GT-SA", "Department"), + new("San Marcos", "GT-SM", "Department"), + new("Santa Rosa", "GT-SR", "Department"), + new("Sololá", "GT-SO", "Department"), + new("Suchitepéquez", "GT-SU", "Department"), + new("Totonicapán", "GT-TO", "Department"), + new("Zacapa", "GT-ZA", "Department") + ]; +} diff --git a/src/World.Net/Countries/Guernsey.cs b/src/World.Net/Countries/Guernsey.cs new file mode 100644 index 0000000..f423377 --- /dev/null +++ b/src/World.Net/Countries/Guernsey.cs @@ -0,0 +1,34 @@ +namespace World.Net.Countries; + +internal sealed class Guernsey : ICountry +{ + // + public CountryIdentifier Id => CountryIdentifier.GuernseyAndAlderney; + + // + public string Name { get; } = "Guernsey"; + + // + public string OfficialName { get; } = "Guernsey"; + + // + public string NativeName => "Guernsey"; + + // + public string Capital { get; } = "St. Peter Port"; + + // + public int NumericCode { get; } = 831; + + // + public string ISO2Code { get; } = "GG"; + + // + public string ISO3Code { get; } = "GGY"; + + // + public string[] CallingCode { get; } = ["+44-1481"]; + + // + public IEnumerable States => []; +} diff --git a/src/World.Net/Countries/Guinea.cs b/src/World.Net/Countries/Guinea.cs new file mode 100644 index 0000000..a2680d7 --- /dev/null +++ b/src/World.Net/Countries/Guinea.cs @@ -0,0 +1,44 @@ +namespace World.Net.Countries; + +internal sealed class Guinea : ICountry +{ + // + public CountryIdentifier Id => CountryIdentifier.Guinea; + + // + public string Name { get; } = "Guinea"; + + // + public string OfficialName { get; } = "Republic of Guinea"; + + // + public string NativeName => "Guinée"; + + // + public string Capital { get; } = "Conakry"; + + // + public int NumericCode { get; } = 324; + + // + public string ISO2Code { get; } = "GN"; + + // + public string ISO3Code { get; } = "GIN"; + + // + public string[] CallingCode { get; } = ["+224"]; + + // + public IEnumerable States => + [ + new("Boké", "GN-B", "Region"), + new("Conakry", "GN-C", "Region"), + new("Faranah", "GN-F", "Region"), + new("Kankan", "GN-K", "Region"), + new("Kindia", "GN-D", "Region"), + new("Labé", "GN-L", "Region"), + new("Mamou", "GN-M", "Region"), + new("Nzérékoré", "GN-N", "Region") + ]; +} diff --git a/src/World.Net/Helpers/CountryInitializer.cs b/src/World.Net/Helpers/CountryInitializer.cs index e8319e7..178fefe 100644 --- a/src/World.Net/Helpers/CountryInitializer.cs +++ b/src/World.Net/Helpers/CountryInitializer.cs @@ -91,6 +91,12 @@ public static Dictionary Initialize() { CountryIdentifier.Gibraltar, new Gibraltar() }, { CountryIdentifier.Greece, new Greece() }, { CountryIdentifier.Greenland, new Greenland() }, + { CountryIdentifier.Grenada, new Grenada() }, + { CountryIdentifier.Guadeloupe, new Guadeloupe() }, + { CountryIdentifier.Guam, new Guam() }, + { CountryIdentifier.Guatemala, new Guatemala() }, + { CountryIdentifier.GuernseyAndAlderney, new Guernsey() }, + { CountryIdentifier.Guinea, new Guinea() }, { CountryIdentifier.Iraq, new Iraq() }, { CountryIdentifier.Ireland, new Ireland() }, { CountryIdentifier.Israel, new Israel() },