diff --git a/src/World.Net.UnitTests/Countries/QatarTest.cs b/src/World.Net.UnitTests/Countries/QatarTest.cs
new file mode 100644
index 0000000..a46fb0b
--- /dev/null
+++ b/src/World.Net.UnitTests/Countries/QatarTest.cs
@@ -0,0 +1,57 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace World.Net.UnitTests.Countries
+{
+ public sealed class QatarTest : AssertCountryTestBase
+ {
+ private const string QATAR_COUNTRY_NAME = "Qatar";
+ private const string QATAR_NATIVE_NAME = "دولة قطر";
+ private const string QATAR_CAPITAL = "Doha";
+ private const string QATAR_OFFICIAL_NAME = "State of Qatar";
+ private const string QATAR_ISO2_CODE = "QA";
+ private const string QATAR_ISO3_CODE = "QAT";
+ private const int QATAR_NUMERIC_CODE = 634;
+ private readonly string[] QATAR_CALLING_CODE = ["+974"];
+ private const CountryIdentifier EXPECTEDID = CountryIdentifier.Qatar;
+
+ private static readonly (string Name, string IsoCode, string Type)[] EXPECTED_STATES =
+ [
+ new("Ad Dawhah", "QA-DA", "Municipality"),
+ new("Al Khor", "QA-KH", "Municipality"),
+ new("Al Rayyan", "QA-RA", "Municipality"),
+ new("Al Shamal", "QA-SH", "Municipality"),
+ new("Al Wakrah", "QA-WA", "Municipality"),
+ new("Al Shahaniya", "QA-SN", "Municipality"),
+ new("Umm Salal", "QA-US", "Municipality"),
+ new("Al Daayen", "QA-DAA", "Municipality")
+ ];
+
+ [Fact]
+ public void GetCountry_ReturnsCorrectInformation_ForQatar()
+ {
+ // Arrange
+ // Act
+ var country = CountryProvider.GetCountry(EXPECTEDID);
+
+ // Assert
+ AssertCorrectInformation(
+ country,
+ EXPECTEDID,
+ QATAR_COUNTRY_NAME,
+ QATAR_OFFICIAL_NAME,
+ QATAR_NATIVE_NAME,
+ QATAR_CAPITAL,
+ QATAR_NUMERIC_CODE,
+ QATAR_ISO2_CODE,
+ QATAR_ISO3_CODE,
+ QATAR_CALLING_CODE,
+ EXPECTED_STATES
+ );
+ }
+ }
+
+}
diff --git a/src/World.Net.UnitTests/Countries/ReunionTest.cs b/src/World.Net.UnitTests/Countries/ReunionTest.cs
new file mode 100644
index 0000000..3ecd78d
--- /dev/null
+++ b/src/World.Net.UnitTests/Countries/ReunionTest.cs
@@ -0,0 +1,42 @@
+namespace World.Net.UnitTests.Countries;
+
+public sealed class ReunionTest : AssertCountryTestBase
+{
+ private const string REUNION_COUNTRY_NAME = "Réunion";
+ private const string REUNION_NATIVE_NAME = "Réunion";
+ private const string REUNION_CAPITAL = "Saint-Denis";
+ private const string REUNION_OFFICIAL_NAME = "Réunion";
+ private const string REUNION_ISO2_CODE = "RE";
+ private const string REUNION_ISO3_CODE = "REU";
+ private const int REUNION_NUMERIC_CODE = 638;
+ private readonly string[] REUNION_CALLING_CODE = ["+262"];
+ private const CountryIdentifier EXPECTEDID = CountryIdentifier.Reunion;
+
+ private static readonly (string Name, string IsoCode, string Type)[] EXPECTED_STATES =
+ [
+ new("Réunion", "RE-RE", "Region")
+ ];
+
+ [Fact]
+ public void GetCountry_ReturnsCorrectInformation_ForReunion()
+ {
+ // Arrange
+ // Act
+ var country = CountryProvider.GetCountry(EXPECTEDID);
+
+ // Assert
+ AssertCorrectInformation(
+ country,
+ EXPECTEDID,
+ REUNION_COUNTRY_NAME,
+ REUNION_OFFICIAL_NAME,
+ REUNION_NATIVE_NAME,
+ REUNION_CAPITAL,
+ REUNION_NUMERIC_CODE,
+ REUNION_ISO2_CODE,
+ REUNION_ISO3_CODE,
+ REUNION_CALLING_CODE,
+ EXPECTED_STATES
+ );
+ }
+}
diff --git a/src/World.Net.UnitTests/Countries/RomaniaTest.cs b/src/World.Net.UnitTests/Countries/RomaniaTest.cs
new file mode 100644
index 0000000..bcbf25c
--- /dev/null
+++ b/src/World.Net.UnitTests/Countries/RomaniaTest.cs
@@ -0,0 +1,83 @@
+namespace World.Net.UnitTests.Countries;
+
+public sealed class RomaniaTest : AssertCountryTestBase
+{
+ private const string ROMANIA_COUNTRY_NAME = "Romania";
+ private const string ROMANIA_NATIVE_NAME = "România";
+ private const string ROMANIA_CAPITAL = "Bucharest";
+ private const string ROMANIA_OFFICIAL_NAME = "Romania";
+ private const string ROMANIA_ISO2_CODE = "RO";
+ private const string ROMANIA_ISO3_CODE = "ROU";
+ private const int ROMANIA_NUMERIC_CODE = 642;
+ private readonly string[] ROMANIA_CALLING_CODE = ["+40"];
+ private const CountryIdentifier EXPECTEDID = CountryIdentifier.Romania;
+
+ private static readonly (string Name, string IsoCode, string Type)[] EXPECTED_STATES =
+ [
+ new("Alba", "RO-AB", "County"),
+ new("Arad", "RO-AR", "County"),
+ new("Argeș", "RO-AG", "County"),
+ new("Bacău", "RO-BC", "County"),
+ new("Bihor", "RO-BH", "County"),
+ new("Bistrița-Năsăud", "RO-BN", "County"),
+ new("Botoșani", "RO-BT", "County"),
+ new("Brașov", "RO-BV", "County"),
+ new("Brăila", "RO-BR", "County"),
+ new("Buzău", "RO-BZ", "County"),
+ new("Caraș-Severin", "RO-CS", "County"),
+ new("Călărași", "RO-CL", "County"),
+ new("Cluj", "RO-CJ", "County"),
+ new("Constanța", "RO-CT", "County"),
+ new("Covasna", "RO-CV", "County"),
+ new("Dâmbovița", "RO-DB", "County"),
+ new("Dolj", "RO-DJ", "County"),
+ new("Galați", "RO-GL", "County"),
+ new("Giurgiu", "RO-GR", "County"),
+ new("Gorj", "RO-GJ", "County"),
+ new("Harghita", "RO-HR", "County"),
+ new("Hunedoara", "RO-HD", "County"),
+ new("Ialomița", "RO-IL", "County"),
+ new("Iași", "RO-IS", "County"),
+ new("Ilfov", "RO-IF", "County"),
+ new("Maramureș", "RO-MM", "County"),
+ new("Mehedinți", "RO-MH", "County"),
+ new("Mureș", "RO-MS", "County"),
+ new("Neamț", "RO-NT", "County"),
+ new("Olt", "RO-OT", "County"),
+ new("Prahova", "RO-PH", "County"),
+ new("Satu Mare", "RO-SM", "County"),
+ new("Sălaj", "RO-SJ", "County"),
+ new("Sibiu", "RO-SB", "County"),
+ new("Suceava", "RO-SV", "County"),
+ new("Teleorman", "RO-TR", "County"),
+ new("Timiș", "RO-TM", "County"),
+ new("Tulcea", "RO-TL", "County"),
+ new("Vaslui", "RO-VS", "County"),
+ new("Vâlcea", "RO-VL", "County"),
+ new("Vrancea", "RO-VN", "County"),
+ new("Bucharest", "RO-B", "Municipality")
+ ];
+
+ [Fact]
+ public void GetCountry_ReturnsCorrectInformation_ForRomania()
+ {
+ // Arrange
+ // Act
+ var country = CountryProvider.GetCountry(EXPECTEDID);
+
+ // Assert
+ AssertCorrectInformation(
+ country,
+ EXPECTEDID,
+ ROMANIA_COUNTRY_NAME,
+ ROMANIA_OFFICIAL_NAME,
+ ROMANIA_NATIVE_NAME,
+ ROMANIA_CAPITAL,
+ ROMANIA_NUMERIC_CODE,
+ ROMANIA_ISO2_CODE,
+ ROMANIA_ISO3_CODE,
+ ROMANIA_CALLING_CODE,
+ EXPECTED_STATES
+ );
+ }
+}
diff --git a/src/World.Net.UnitTests/Countries/RussiaTest.cs b/src/World.Net.UnitTests/Countries/RussiaTest.cs
new file mode 100644
index 0000000..8397704
--- /dev/null
+++ b/src/World.Net.UnitTests/Countries/RussiaTest.cs
@@ -0,0 +1,124 @@
+namespace World.Net.UnitTests.Countries;
+
+public sealed class RussiaTest : AssertCountryTestBase
+{
+ private const string RUSSIA_COUNTRY_NAME = "Russia";
+ private const string RUSSIA_NATIVE_NAME = "Россия";
+ private const string RUSSIA_CAPITAL = "Moscow";
+ private const string RUSSIA_OFFICIAL_NAME = "Russian Federation";
+ private const string RUSSIA_ISO2_CODE = "RU";
+ private const string RUSSIA_ISO3_CODE = "RUS";
+ private const int RUSSIA_NUMERIC_CODE = 643;
+ private readonly string[] RUSSIA_CALLING_CODE = ["+7"];
+ private const CountryIdentifier EXPECTEDID = CountryIdentifier.Russia;
+
+ private static readonly (string Name, string IsoCode, string Type)[] EXPECTED_STATES =
+ [
+ new("Adygea", "RU-AD", "Federal Subject"),
+ new("Altai Republic", "RU-AL", "Federal Subject"),
+ new("Altai Krai", "RU-ALT", "Federal Subject"),
+ new("Amur Oblast", "RU-AMU", "Federal Subject"),
+ new("Arkhangelsk Oblast", "RU-ARK", "Federal Subject"),
+ new("Astrakhan Oblast", "RU-AST", "Federal Subject"),
+ new("Bashkortostan", "RU-BA", "Federal Subject"),
+ new("Belgorod Oblast", "RU-BEL", "Federal Subject"),
+ new("Bryansk Oblast", "RU-BRY", "Federal Subject"),
+ new("Buryatia", "RU-BU", "Federal Subject"),
+ new("Chechnya", "RU-CE", "Federal Subject"),
+ new("Chelyabinsk Oblast", "RU-CHE", "Federal Subject"),
+ new("Chukotka", "RU-CHU", "Federal Subject"),
+ new("Chuvashia", "RU-CU", "Federal Subject"),
+ new("Dagestan", "RU-DA", "Federal Subject"),
+ new("Ingushetia", "RU-IN", "Federal Subject"),
+ new("Irkutsk Oblast", "RU-IRK", "Federal Subject"),
+ new("Ivanovo Oblast", "RU-IVA", "Federal Subject"),
+ new("Jewish Autonomous Oblast", "RU-YEV", "Federal Subject"),
+ new("Kabardino-Balkaria", "RU-KB", "Federal Subject"),
+ new("Kaliningrad Oblast", "RU-KGD", "Federal Subject"),
+ new("Kalmykia", "RU-KL", "Federal Subject"),
+ new("Kaluga Oblast", "RU-KLU", "Federal Subject"),
+ new("Kamchatka Krai", "RU-KAM", "Federal Subject"),
+ new("Karachay-Cherkessia", "RU-KC", "Federal Subject"),
+ new("Karelia", "RU-KR", "Federal Subject"),
+ new("Kemerovo Oblast", "RU-KEM", "Federal Subject"),
+ new("Khabarovsk Krai", "RU-KHA", "Federal Subject"),
+ new("Khakassia", "RU-KK", "Federal Subject"),
+ new("Khanty-Mansi Autonomous Okrug", "RU-KHM", "Federal Subject"),
+ new("Kirov Oblast", "RU-KIR", "Federal Subject"),
+ new("Komi", "RU-KO", "Federal Subject"),
+ new("Kostroma Oblast", "RU-KOS", "Federal Subject"),
+ new("Krasnodar Krai", "RU-KDA", "Federal Subject"),
+ new("Krasnoyarsk Krai", "RU-KYA", "Federal Subject"),
+ new("Kurgan Oblast", "RU-KUR", "Federal Subject"),
+ new("Kursk Oblast", "RU-KRS", "Federal Subject"),
+ new("Leningrad Oblast", "RU-LEN", "Federal Subject"),
+ new("Lipetsk Oblast", "RU-LIP", "Federal Subject"),
+ new("Magadan Oblast", "RU-MAG", "Federal Subject"),
+ new("Mari El", "RU-ME", "Federal Subject"),
+ new("Mordovia", "RU-MO", "Federal Subject"),
+ new("Moscow", "RU-MOS", "Federal Subject"),
+ new("Moscow Oblast", "RU-MOW", "Federal Subject"),
+ new("Murmansk Oblast", "RU-MUR", "Federal Subject"),
+ new("Nenets Autonomous Okrug", "RU-NEN", "Federal Subject"),
+ new("Nizhny Novgorod Oblast", "RU-NIZ", "Federal Subject"),
+ new("North Ossetia–Alania", "RU-SE", "Federal Subject"),
+ new("Novgorod Oblast", "RU-NGR", "Federal Subject"),
+ new("Novosibirsk Oblast", "RU-NVS", "Federal Subject"),
+ new("Omsk Oblast", "RU-OMS", "Federal Subject"),
+ new("Orenburg Oblast", "RU-ORE", "Federal Subject"),
+ new("Oryol Oblast", "RU-ORL", "Federal Subject"),
+ new("Penza Oblast", "RU-PNZ", "Federal Subject"),
+ new("Perm Krai", "RU-PER", "Federal Subject"),
+ new("Primorsky Krai", "RU-PRI", "Federal Subject"),
+ new("Pskov Oblast", "RU-PSK", "Federal Subject"),
+ new("Rostov Oblast", "RU-ROS", "Federal Subject"),
+ new("Ryazan Oblast", "RU-RYA", "Federal Subject"),
+ new("Saint Petersburg", "RU-SPE", "Federal Subject"),
+ new("Sakha Republic (Yakutia)", "RU-SAK", "Federal Subject"),
+ new("Sakhalin Oblast", "RU-SAKH", "Federal Subject"),
+ new("Samara Oblast", "RU-SAM", "Federal Subject"),
+ new("Saratov Oblast", "RU-SAR", "Federal Subject"),
+ new("Smolensk Oblast", "RU-SMO", "Federal Subject"),
+ new("Stavropol Krai", "RU-STA", "Federal Subject"),
+ new("Sverdlovsk Oblast", "RU-SVE", "Federal Subject"),
+ new("Tambov Oblast", "RU-TAM", "Federal Subject"),
+ new("Tatarstan", "RU-TA", "Federal Subject"),
+ new("Tomsk Oblast", "RU-TOM", "Federal Subject"),
+ new("Tula Oblast", "RU-TUL", "Federal Subject"),
+ new("Tuva", "RU-TY", "Federal Subject"),
+ new("Tver Oblast", "RU-TVE", "Federal Subject"),
+ new("Tyumen Oblast", "RU-TYU", "Federal Subject"),
+ new("Udmurtia", "RU-UD", "Federal Subject"),
+ new("Ulyanovsk Oblast", "RU-ULY", "Federal Subject"),
+ new("Vladimir Oblast", "RU-VLA", "Federal Subject"),
+ new("Volgograd Oblast", "RU-VGG", "Federal Subject"),
+ new("Vologda Oblast", "RU-VLG", "Federal Subject"),
+ new("Voronezh Oblast", "RU-VOR", "Federal Subject"),
+ new("Yamalo-Nenets Autonomous Okrug", "RU-YAN", "Federal Subject"),
+ new("Yaroslavl Oblast", "RU-YAR", "Federal Subject"),
+ new("Zabaykalsky Krai", "RU-ZAB", "Federal Subject")
+ ];
+
+ [Fact]
+ public void GetCountry_ReturnsCorrectInformation_ForRussia()
+ {
+ // Arrange
+ // Act
+ var country = CountryProvider.GetCountry(EXPECTEDID);
+
+ // Assert
+ AssertCorrectInformation(
+ country,
+ EXPECTEDID,
+ RUSSIA_COUNTRY_NAME,
+ RUSSIA_OFFICIAL_NAME,
+ RUSSIA_NATIVE_NAME,
+ RUSSIA_CAPITAL,
+ RUSSIA_NUMERIC_CODE,
+ RUSSIA_ISO2_CODE,
+ RUSSIA_ISO3_CODE,
+ RUSSIA_CALLING_CODE,
+ EXPECTED_STATES
+ );
+ }
+}
diff --git a/src/World.Net.UnitTests/Countries/RwandaTest.cs b/src/World.Net.UnitTests/Countries/RwandaTest.cs
new file mode 100644
index 0000000..8e883b5
--- /dev/null
+++ b/src/World.Net.UnitTests/Countries/RwandaTest.cs
@@ -0,0 +1,46 @@
+namespace World.Net.UnitTests.Countries;
+
+public sealed class RwandaTest : AssertCountryTestBase
+{
+ private const string RWANDA_COUNTRY_NAME = "Rwanda";
+ private const string RWANDA_NATIVE_NAME = "Rwanda";
+ private const string RWANDA_CAPITAL = "Kigali";
+ private const string RWANDA_OFFICIAL_NAME = "Republic of Rwanda";
+ private const string RWANDA_ISO2_CODE = "RW";
+ private const string RWANDA_ISO3_CODE = "RWA";
+ private const int RWANDA_NUMERIC_CODE = 646;
+ private readonly string[] RWANDA_CALLING_CODE = ["+250"];
+ private const CountryIdentifier EXPECTEDID = CountryIdentifier.Rwanda;
+
+ private static readonly (string Name, string IsoCode, string Type)[] EXPECTED_STATES =
+ [
+ new("Kigali", "RW-KI", "Province"),
+ new("Eastern", "RW-ES", "Province"),
+ new("Northern", "RW-NO", "Province"),
+ new("Western", "RW-WE", "Province"),
+ new("Southern", "RW-SO", "Province")
+ ];
+
+ [Fact]
+ public void GetCountry_ReturnsCorrectInformation_ForRwanda()
+ {
+ // Arrange
+ // Act
+ var country = CountryProvider.GetCountry(EXPECTEDID);
+
+ // Assert
+ AssertCorrectInformation(
+ country,
+ EXPECTEDID,
+ RWANDA_COUNTRY_NAME,
+ RWANDA_OFFICIAL_NAME,
+ RWANDA_NATIVE_NAME,
+ RWANDA_CAPITAL,
+ RWANDA_NUMERIC_CODE,
+ RWANDA_ISO2_CODE,
+ RWANDA_ISO3_CODE,
+ RWANDA_CALLING_CODE,
+ EXPECTED_STATES
+ );
+ }
+}
diff --git a/src/World.Net/Countries/Qatar.cs b/src/World.Net/Countries/Qatar.cs
new file mode 100644
index 0000000..1b8f830
--- /dev/null
+++ b/src/World.Net/Countries/Qatar.cs
@@ -0,0 +1,45 @@
+namespace World.Net.Countries;
+
+internal sealed class Qatar : ICountry
+{
+ //
+ public CountryIdentifier Id => CountryIdentifier.Qatar;
+
+ //
+ public string Name { get; } = "Qatar";
+
+ //
+ public string OfficialName { get; } = "State of Qatar";
+
+ //
+ public string NativeName => "دولة قطر";
+
+ //
+ public string Capital { get; } = "Doha";
+
+ //
+ public int NumericCode { get; } = 634;
+
+ //
+ public string ISO2Code { get; } = "QA";
+
+ //
+ public string ISO3Code { get; } = "QAT";
+
+ //
+ public string[] CallingCode { get; } = ["+974"];
+
+ //
+ public IEnumerable States =>
+ [
+ new("Ad Dawhah", "QA-DA", "Municipality"),
+ new("Al Khor", "QA-KH", "Municipality"),
+ new("Al Rayyan", "QA-RA", "Municipality"),
+ new("Al Shamal", "QA-SH", "Municipality"),
+ new("Al Wakrah", "QA-WA", "Municipality"),
+ new("Al Shahaniya", "QA-SN", "Municipality"),
+ new("Umm Salal", "QA-US", "Municipality"),
+ new("Al Daayen", "QA-DAA", "Municipality")
+ ];
+}
+
diff --git a/src/World.Net/Countries/Reunion.cs b/src/World.Net/Countries/Reunion.cs
new file mode 100644
index 0000000..cac061b
--- /dev/null
+++ b/src/World.Net/Countries/Reunion.cs
@@ -0,0 +1,38 @@
+namespace World.Net.Countries;
+
+internal sealed class Reunion : ICountry
+{
+ //
+ public CountryIdentifier Id => CountryIdentifier.Reunion;
+
+ //
+ public string Name { get; } = "Réunion";
+
+ //
+ public string OfficialName { get; } = "Réunion";
+
+ //
+ public string NativeName => "Réunion";
+
+ //
+ public string Capital { get; } = "Saint-Denis";
+
+ //
+ public int NumericCode { get; } = 638;
+
+ //
+ public string ISO2Code { get; } = "RE";
+
+ //
+ public string ISO3Code { get; } = "REU";
+
+ //
+ public string[] CallingCode { get; } = ["+262"];
+
+ //
+ public IEnumerable States =>
+ [
+ new("Réunion", "RE-RE", "Region")
+ ];
+}
+
diff --git a/src/World.Net/Countries/Romania.cs b/src/World.Net/Countries/Romania.cs
new file mode 100644
index 0000000..97778f2
--- /dev/null
+++ b/src/World.Net/Countries/Romania.cs
@@ -0,0 +1,79 @@
+namespace World.Net.Countries;
+
+internal sealed class Romania : ICountry
+{
+ //
+ public CountryIdentifier Id => CountryIdentifier.Romania;
+
+ //
+ public string Name { get; } = "Romania";
+
+ //
+ public string OfficialName { get; } = "Romania";
+
+ //
+ public string NativeName => "România";
+
+ //
+ public string Capital { get; } = "Bucharest";
+
+ //
+ public int NumericCode { get; } = 642;
+
+ //
+ public string ISO2Code { get; } = "RO";
+
+ //
+ public string ISO3Code { get; } = "ROU";
+
+ //
+ public string[] CallingCode { get; } = ["+40"];
+
+ //
+ public IEnumerable States =>
+ [
+ new("Alba", "RO-AB", "County"),
+ new("Arad", "RO-AR", "County"),
+ new("Argeș", "RO-AG", "County"),
+ new("Bacău", "RO-BC", "County"),
+ new("Bihor", "RO-BH", "County"),
+ new("Bistrița-Năsăud", "RO-BN", "County"),
+ new("Botoșani", "RO-BT", "County"),
+ new("Brașov", "RO-BV", "County"),
+ new("Brăila", "RO-BR", "County"),
+ new("Buzău", "RO-BZ", "County"),
+ new("Caraș-Severin", "RO-CS", "County"),
+ new("Călărași", "RO-CL", "County"),
+ new("Cluj", "RO-CJ", "County"),
+ new("Constanța", "RO-CT", "County"),
+ new("Covasna", "RO-CV", "County"),
+ new("Dâmbovița", "RO-DB", "County"),
+ new("Dolj", "RO-DJ", "County"),
+ new("Galați", "RO-GL", "County"),
+ new("Giurgiu", "RO-GR", "County"),
+ new("Gorj", "RO-GJ", "County"),
+ new("Harghita", "RO-HR", "County"),
+ new("Hunedoara", "RO-HD", "County"),
+ new("Ialomița", "RO-IL", "County"),
+ new("Iași", "RO-IS", "County"),
+ new("Ilfov", "RO-IF", "County"),
+ new("Maramureș", "RO-MM", "County"),
+ new("Mehedinți", "RO-MH", "County"),
+ new("Mureș", "RO-MS", "County"),
+ new("Neamț", "RO-NT", "County"),
+ new("Olt", "RO-OT", "County"),
+ new("Prahova", "RO-PH", "County"),
+ new("Satu Mare", "RO-SM", "County"),
+ new("Sălaj", "RO-SJ", "County"),
+ new("Sibiu", "RO-SB", "County"),
+ new("Suceava", "RO-SV", "County"),
+ new("Teleorman", "RO-TR", "County"),
+ new("Timiș", "RO-TM", "County"),
+ new("Tulcea", "RO-TL", "County"),
+ new("Vaslui", "RO-VS", "County"),
+ new("Vâlcea", "RO-VL", "County"),
+ new("Vrancea", "RO-VN", "County"),
+ new("Bucharest", "RO-B", "Municipality")
+ ];
+}
+
diff --git a/src/World.Net/Countries/Russia.cs b/src/World.Net/Countries/Russia.cs
new file mode 100644
index 0000000..13e1b06
--- /dev/null
+++ b/src/World.Net/Countries/Russia.cs
@@ -0,0 +1,120 @@
+namespace World.Net.Countries;
+
+internal sealed class Russia : ICountry
+{
+ //
+ public CountryIdentifier Id => CountryIdentifier.Russia;
+
+ //
+ public string Name { get; } = "Russia";
+
+ //
+ public string OfficialName { get; } = "Russian Federation";
+
+ //
+ public string NativeName => "Россия";
+
+ //
+ public string Capital { get; } = "Moscow";
+
+ //
+ public int NumericCode { get; } = 643;
+
+ //
+ public string ISO2Code { get; } = "RU";
+
+ //
+ public string ISO3Code { get; } = "RUS";
+
+ //
+ public string[] CallingCode { get; } = ["+7"];
+
+ //
+ public IEnumerable States =>
+ [
+ new("Adygea", "RU-AD", "Federal Subject"),
+ new("Altai Republic", "RU-AL", "Federal Subject"),
+ new("Altai Krai", "RU-ALT", "Federal Subject"),
+ new("Amur Oblast", "RU-AMU", "Federal Subject"),
+ new("Arkhangelsk Oblast", "RU-ARK", "Federal Subject"),
+ new("Astrakhan Oblast", "RU-AST", "Federal Subject"),
+ new("Bashkortostan", "RU-BA", "Federal Subject"),
+ new("Belgorod Oblast", "RU-BEL", "Federal Subject"),
+ new("Bryansk Oblast", "RU-BRY", "Federal Subject"),
+ new("Buryatia", "RU-BU", "Federal Subject"),
+ new("Chechnya", "RU-CE", "Federal Subject"),
+ new("Chelyabinsk Oblast", "RU-CHE", "Federal Subject"),
+ new("Chukotka", "RU-CHU", "Federal Subject"),
+ new("Chuvashia", "RU-CU", "Federal Subject"),
+ new("Dagestan", "RU-DA", "Federal Subject"),
+ new("Ingushetia", "RU-IN", "Federal Subject"),
+ new("Irkutsk Oblast", "RU-IRK", "Federal Subject"),
+ new("Ivanovo Oblast", "RU-IVA", "Federal Subject"),
+ new("Jewish Autonomous Oblast", "RU-YEV", "Federal Subject"),
+ new("Kabardino-Balkaria", "RU-KB", "Federal Subject"),
+ new("Kaliningrad Oblast", "RU-KGD", "Federal Subject"),
+ new("Kalmykia", "RU-KL", "Federal Subject"),
+ new("Kaluga Oblast", "RU-KLU", "Federal Subject"),
+ new("Kamchatka Krai", "RU-KAM", "Federal Subject"),
+ new("Karachay-Cherkessia", "RU-KC", "Federal Subject"),
+ new("Karelia", "RU-KR", "Federal Subject"),
+ new("Kemerovo Oblast", "RU-KEM", "Federal Subject"),
+ new("Khabarovsk Krai", "RU-KHA", "Federal Subject"),
+ new("Khakassia", "RU-KK", "Federal Subject"),
+ new("Khanty-Mansi Autonomous Okrug", "RU-KHM", "Federal Subject"),
+ new("Kirov Oblast", "RU-KIR", "Federal Subject"),
+ new("Komi", "RU-KO", "Federal Subject"),
+ new("Kostroma Oblast", "RU-KOS", "Federal Subject"),
+ new("Krasnodar Krai", "RU-KDA", "Federal Subject"),
+ new("Krasnoyarsk Krai", "RU-KYA", "Federal Subject"),
+ new("Kurgan Oblast", "RU-KUR", "Federal Subject"),
+ new("Kursk Oblast", "RU-KRS", "Federal Subject"),
+ new("Leningrad Oblast", "RU-LEN", "Federal Subject"),
+ new("Lipetsk Oblast", "RU-LIP", "Federal Subject"),
+ new("Magadan Oblast", "RU-MAG", "Federal Subject"),
+ new("Mari El", "RU-ME", "Federal Subject"),
+ new("Mordovia", "RU-MO", "Federal Subject"),
+ new("Moscow", "RU-MOS", "Federal Subject"),
+ new("Moscow Oblast", "RU-MOW", "Federal Subject"),
+ new("Murmansk Oblast", "RU-MUR", "Federal Subject"),
+ new("Nenets Autonomous Okrug", "RU-NEN", "Federal Subject"),
+ new("Nizhny Novgorod Oblast", "RU-NIZ", "Federal Subject"),
+ new("North Ossetia–Alania", "RU-SE", "Federal Subject"),
+ new("Novgorod Oblast", "RU-NGR", "Federal Subject"),
+ new("Novosibirsk Oblast", "RU-NVS", "Federal Subject"),
+ new("Omsk Oblast", "RU-OMS", "Federal Subject"),
+ new("Orenburg Oblast", "RU-ORE", "Federal Subject"),
+ new("Oryol Oblast", "RU-ORL", "Federal Subject"),
+ new("Penza Oblast", "RU-PNZ", "Federal Subject"),
+ new("Perm Krai", "RU-PER", "Federal Subject"),
+ new("Primorsky Krai", "RU-PRI", "Federal Subject"),
+ new("Pskov Oblast", "RU-PSK", "Federal Subject"),
+ new("Rostov Oblast", "RU-ROS", "Federal Subject"),
+ new("Ryazan Oblast", "RU-RYA", "Federal Subject"),
+ new("Saint Petersburg", "RU-SPE", "Federal Subject"),
+ new("Sakha Republic (Yakutia)", "RU-SAK", "Federal Subject"),
+ new("Sakhalin Oblast", "RU-SAKH", "Federal Subject"),
+ new("Samara Oblast", "RU-SAM", "Federal Subject"),
+ new("Saratov Oblast", "RU-SAR", "Federal Subject"),
+ new("Smolensk Oblast", "RU-SMO", "Federal Subject"),
+ new("Stavropol Krai", "RU-STA", "Federal Subject"),
+ new("Sverdlovsk Oblast", "RU-SVE", "Federal Subject"),
+ new("Tambov Oblast", "RU-TAM", "Federal Subject"),
+ new("Tatarstan", "RU-TA", "Federal Subject"),
+ new("Tomsk Oblast", "RU-TOM", "Federal Subject"),
+ new("Tula Oblast", "RU-TUL", "Federal Subject"),
+ new("Tuva", "RU-TY", "Federal Subject"),
+ new("Tver Oblast", "RU-TVE", "Federal Subject"),
+ new("Tyumen Oblast", "RU-TYU", "Federal Subject"),
+ new("Udmurtia", "RU-UD", "Federal Subject"),
+ new("Ulyanovsk Oblast", "RU-ULY", "Federal Subject"),
+ new("Vladimir Oblast", "RU-VLA", "Federal Subject"),
+ new("Volgograd Oblast", "RU-VGG", "Federal Subject"),
+ new("Vologda Oblast", "RU-VLG", "Federal Subject"),
+ new("Voronezh Oblast", "RU-VOR", "Federal Subject"),
+ new("Yamalo-Nenets Autonomous Okrug", "RU-YAN", "Federal Subject"),
+ new("Yaroslavl Oblast", "RU-YAR", "Federal Subject"),
+ new("Zabaykalsky Krai", "RU-ZAB", "Federal Subject")
+ ];
+}
+
diff --git a/src/World.Net/Countries/Rwanda.cs b/src/World.Net/Countries/Rwanda.cs
new file mode 100644
index 0000000..dc90bde
--- /dev/null
+++ b/src/World.Net/Countries/Rwanda.cs
@@ -0,0 +1,42 @@
+namespace World.Net.Countries;
+
+internal sealed class Rwanda : ICountry
+{
+ //
+ public CountryIdentifier Id => CountryIdentifier.Rwanda;
+
+ //
+ public string Name { get; } = "Rwanda";
+
+ //
+ public string OfficialName { get; } = "Republic of Rwanda";
+
+ //
+ public string NativeName => "Rwanda";
+
+ //
+ public string Capital { get; } = "Kigali";
+
+ //
+ public int NumericCode { get; } = 646;
+
+ //
+ public string ISO2Code { get; } = "RW";
+
+ //
+ public string ISO3Code { get; } = "RWA";
+
+ //
+ public string[] CallingCode { get; } = ["+250"];
+
+ //
+ public IEnumerable States =>
+ [
+ new("Kigali", "RW-KI", "Province"),
+ new("Eastern", "RW-ES", "Province"),
+ new("Northern", "RW-NO", "Province"),
+ new("Western", "RW-WE", "Province"),
+ new("Southern", "RW-SO", "Province")
+ ];
+}
+
diff --git a/src/World.Net/Helpers/CountryInitializer.cs b/src/World.Net/Helpers/CountryInitializer.cs
index fa2cfe5..e1b6bf1 100644
--- a/src/World.Net/Helpers/CountryInitializer.cs
+++ b/src/World.Net/Helpers/CountryInitializer.cs
@@ -155,6 +155,11 @@ public static Dictionary Initialize()
{ CountryIdentifier.Poland, new Poland() },
{ CountryIdentifier.Portugal, new Portugal() },
{ CountryIdentifier.PuertoRico, new PuertoRico() },
+ { CountryIdentifier.Qatar, new Qatar() },
+ { CountryIdentifier.Reunion, new Reunion() },
+ { CountryIdentifier.Romania, new Romania() },
+ { CountryIdentifier.Russia, new Russia() },
+ { CountryIdentifier.Rwanda, new Rwanda() },
// Future countries can be added here in the same format.
};