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() },