|
1 | 1 | namespace World.Net.UnitTests.Countries; |
2 | | -public sealed class FranceTest |
| 2 | +public sealed class FranceTest : AssertCountryTestBase |
3 | 3 | { |
4 | 4 | private const string FRANCE_NAME = "France"; |
5 | | - private const int FRANCE_STATE_COUNT = 116; |
6 | 5 | private const string FRANCE_OFFICIAL_NAME = "French Republic"; |
7 | 6 | private const string FRANCE_NATIVE_NAME = "France"; |
8 | 7 | private const string FRANCE_CAPITAL = "Paris"; |
9 | 8 | private const int FRANCE_NUMERIC_CODE = 250; |
10 | 9 | private const string FRANCE_ISO2_CODE = "FR"; |
11 | | - private static readonly string[] VALID_STATE_TYPES = { "metropolitan department", "European collectivity", "metropolitan region", "dependency", "metropolitan collectivity with special status", "overseas region", "overseas collectivity", "overseas territory", "overseas region", "metropolitan department", "metropolitan department", }; |
12 | 10 | private const string FRANCE_ISO3_CODE = "FRA"; |
13 | 11 | private readonly string[] FRANCE_CALLING_CODE = ["+33"]; |
14 | | - |
| 12 | + private const CountryIdentifier ExpectedId = CountryIdentifier.France; |
| 13 | + private static readonly (string Name, string IsoCode, string Type)[] ExpectedStates = |
| 14 | + [ |
| 15 | + new("Ain", "FR-01", "metropolitan department"), |
| 16 | + new("Aisne", "FR-02", "metropolitan department"), |
| 17 | + new("Allier", "FR-03", "metropolitan department"), |
| 18 | + new("Alpes-de-Haute-Provence", "FR-04", "metropolitan department"), |
| 19 | + new("Alpes-Maritimes", "FR-06", "metropolitan department"), |
| 20 | + new("Alsace", "FR-6AE", "European collectivity"), |
| 21 | + new("Ardèche", "FR-07", "metropolitan department"), |
| 22 | + new("Ardennes", "FR-08", "metropolitan department"), |
| 23 | + new("Ariège", "FR-09", "metropolitan department"), |
| 24 | + new("Aube", "FR-10", "metropolitan department"), |
| 25 | + new("Aude", "FR-11", "metropolitan department"), |
| 26 | + new("Auvergne-Rhône-Alpes", "FR-ARA", "metropolitan region"), |
| 27 | + new("Aveyron", "FR-12", "metropolitan department"), |
| 28 | + new("Bas-Rhin", "FR-67", "metropolitan department"), |
| 29 | + new("Bouches-du-Rhône", "FR-13", "metropolitan department"), |
| 30 | + new("Bourgogne-Franche-Comté", "FR-BFC", "metropolitan region"), |
| 31 | + new("Bretagne", "FR-BRE", "metropolitan region"), |
| 32 | + new("Calvados", "FR-14", "metropolitan department"), |
| 33 | + new("Cantal", "FR-15", "metropolitan department"), |
| 34 | + new("Centre-Val de Loire", "FR-CVL", "metropolitan region"), |
| 35 | + new("Charente", "FR-16", "metropolitan department"), |
| 36 | + new("Charente-Maritime", "FR-17", "metropolitan department"), |
| 37 | + new("Cher", "FR-18", "metropolitan department"), |
| 38 | + new("Clipperton", "FR-CP", "dependency"), |
| 39 | + new("Corrèze", "FR-19", "metropolitan department"), |
| 40 | + new("Corse", "FR-20R", "metropolitan collectivity with special status"), |
| 41 | + new("Corse-du-Sud", "FR-2A", "metropolitan department"), |
| 42 | + new("Côte-d'Or", "FR-21", "metropolitan department"), |
| 43 | + new("Côtes-d'Armor", "FR-22", "metropolitan department"), |
| 44 | + new("Creuse", "FR-23", "metropolitan department"), |
| 45 | + new("Deux-Sèvres", "FR-79", "metropolitan department"), |
| 46 | + new("Dordogne", "FR-24", "metropolitan department"), |
| 47 | + new("Doubs", "FR-25", "metropolitan department"), |
| 48 | + new("Drôme", "FR-26", "metropolitan department"), |
| 49 | + new("Essonne", "FR-91", "metropolitan department"), |
| 50 | + new("Eure", "FR-27", "metropolitan department"), |
| 51 | + new("Eure-et-Loir", "FR-28", "metropolitan department"), |
| 52 | + new("Finistère", "FR-29", "metropolitan department"), |
| 53 | + new("French Guiana", "FR-973", "overseas region"), |
| 54 | + new("French Polynesia", "FR-PF", "overseas collectivity"), |
| 55 | + new("French Southern and Antarctic Lands", "FR-TF", "overseas territory"), |
| 56 | + new("Gard", "FR-30", "metropolitan department"), |
| 57 | + new("Gers", "FR-32", "metropolitan department"), |
| 58 | + new("Gironde", "FR-33", "metropolitan department"), |
| 59 | + new("Grand-Est", "FR-GES", "metropolitan region"), |
| 60 | + new("Guadeloupe", "FR-971", "overseas region"), |
| 61 | + new("Haut-Rhin", "FR-68", "metropolitan department"), |
| 62 | + new("Haute-Corse", "FR-2B", "metropolitan department"), |
| 63 | + new("Haute-Garonne", "FR-31", "metropolitan department"), |
| 64 | + new("Haute-Loire", "FR-43", "metropolitan department"), |
| 65 | + new("Haute-Marne", "FR-52", "metropolitan department"), |
| 66 | + new("Haute-Saône", "FR-70", "metropolitan department"), |
| 67 | + new("Haute-Savoie", "FR-74", "metropolitan department"), |
| 68 | + new("Haute-Vienne", "FR-87", "metropolitan department"), |
| 69 | + new("Hautes-Alpes", "FR-05", "metropolitan department"), |
| 70 | + new("Hautes-Pyrénées", "FR-65", "metropolitan department"), |
| 71 | + new("Hauts-de-France", "FR-HDF", "metropolitan region"), |
| 72 | + new("Hauts-de-Seine", "FR-92", "metropolitan department"), |
| 73 | + new("Hérault", "FR-34", "metropolitan department"), |
| 74 | + new("Île-de-France", "FR-IDF", "metropolitan region"), |
| 75 | + new("Ille-et-Vilaine", "FR-35", "metropolitan department"), |
| 76 | + new("Indre", "FR-36", "metropolitan department"), |
| 77 | + new("Indre-et-Loire", "FR-37", "metropolitan department"), |
| 78 | + new("Isère", "FR-38", "metropolitan department"), |
| 79 | + new("Jura", "FR-39", "metropolitan department"), |
| 80 | + new("La Réunion", "FR-974", "overseas region"), |
| 81 | + new("Landes", "FR-40", "metropolitan department"), |
| 82 | + new("Loir-et-Cher", "FR-41", "metropolitan department"), |
| 83 | + new("Loire", "FR-42", "metropolitan department"), |
| 84 | + new("Loire-Atlantique", "FR-44", "metropolitan department"), |
| 85 | + new("Loiret", "FR-45", "metropolitan department"), |
| 86 | + new("Lot", "FR-46", "metropolitan department"), |
| 87 | + new("Lot-et-Garonne", "FR-47", "metropolitan department"), |
| 88 | + new("Lozère", "FR-48", "metropolitan department"), |
| 89 | + new("Maine-et-Loire", "FR-49", "metropolitan department"), |
| 90 | + new("Manche", "FR-50", "metropolitan department"), |
| 91 | + new("Marne", "FR-51", "metropolitan department"), |
| 92 | + new("Martinique", "FR-972", "overseas region"), |
| 93 | + new("Mayenne", "FR-53", "metropolitan department"), |
| 94 | + new("Mayotte", "FR-976", "overseas region"), |
| 95 | + new("Métropole de Lyon", "FR-69M", "metropolitan department"), |
| 96 | + new("Meurthe-et-Moselle", "FR-54", "metropolitan department"), |
| 97 | + new("Meuse", "FR-55", "metropolitan department"), |
| 98 | + new("Morbihan", "FR-56", "metropolitan department"), |
| 99 | + new("Moselle", "FR-57", "metropolitan department"), |
| 100 | + new("Nièvre", "FR-58", "metropolitan department"), |
| 101 | + new("Nord", "FR-59", "metropolitan department"), |
| 102 | + new("Oise", "FR-60", "metropolitan department"), |
| 103 | + new("Oléron", "FR-OL", "dependency"), |
| 104 | + new("Orne", "FR-61", "metropolitan department"), |
| 105 | + new("Paris", "FR-75", "metropolitan department"), |
| 106 | + new("Pas-de-Calais", "FR-62", "metropolitan department"), |
| 107 | + new("Puy-de-Dôme", "FR-63", "metropolitan department"), |
| 108 | + new("Pyrénées-Atlantiques", "FR-64", "metropolitan department"), |
| 109 | + new("Pyrénées-Orientales", "FR-66", "metropolitan department"), |
| 110 | + new("Réunion", "FR-974", "overseas region"), |
| 111 | + new("Rhône", "FR-69", "metropolitan department"), |
| 112 | + new("Saône-et-Loire", "FR-71", "metropolitan department"), |
| 113 | + new("Sarthe", "FR-72", "metropolitan department"), |
| 114 | + new("Savoie", "FR-73", "metropolitan department"), |
| 115 | + new("Seine-et-Marne", "FR-77", "metropolitan department"), |
| 116 | + new("Seine-Maritime", "FR-76", "metropolitan department"), |
| 117 | + new("Yvelines", "FR-78", "metropolitan department"), |
| 118 | + new("Somme", "FR-80", "metropolitan department"), |
| 119 | + new("Tarn", "FR-81", "metropolitan department"), |
| 120 | + new("Tarn-et-Garonne", "FR-82", "metropolitan department"), |
| 121 | + new("Territoire de Belfort", "FR-90", "metropolitan department"), |
| 122 | + new("Val-de-Marne", "FR-94", "metropolitan department"), |
| 123 | + new("Val-d'Oise", "FR-95", "metropolitan department"), |
| 124 | + new("Var", "FR-83", "metropolitan department"), |
| 125 | + new("Vaucluse", "FR-84", "metropolitan department"), |
| 126 | + new("Vendée", "FR-85", "metropolitan department"), |
| 127 | + new("Vienne", "FR-86", "metropolitan department"), |
| 128 | + new("Vosges", "FR-88", "metropolitan department"), |
| 129 | + new("Yonne", "FR-89", "metropolitan department"), |
| 130 | + new("Yvelines", "FR-78", "metropolitan department") |
| 131 | + ]; |
15 | 132 |
|
16 | 133 | [Fact] |
17 | 134 | public void GetCountry_ReturnsCorrectInformation_ForFrance() |
18 | 135 | { |
19 | 136 | // Arrange |
20 | | - CountryIdentifier existingCountryId = CountryIdentifier.France; |
21 | | - |
22 | 137 | // Act |
23 | | - var country = CountryProvider.GetCountry(existingCountryId); |
| 138 | + var country = CountryProvider.GetCountry(ExpectedId); |
24 | 139 |
|
25 | 140 | //Assert |
26 | | - Assert.Equal(existingCountryId, country.Id); |
27 | | - Assert.Equal(FRANCE_NAME, country.Name); |
28 | | - Assert.NotNull(country.States); |
29 | | - Assert.Equal(FRANCE_STATE_COUNT, country.States.Count()); |
30 | | - Assert.Equal(FRANCE_OFFICIAL_NAME, country.OfficialName); |
31 | | - Assert.Equal(FRANCE_NATIVE_NAME, country.NativeName); |
32 | | - Assert.Equal(FRANCE_CAPITAL, country.Capital); |
33 | | - Assert.All(country.States, state => Assert.Contains(state.Type, VALID_STATE_TYPES)); |
34 | | - Assert.Equal(FRANCE_NUMERIC_CODE, country.NumericCode); |
35 | | - Assert.Equal(FRANCE_ISO2_CODE, country.ISO2Code); |
36 | | - Assert.Equal(FRANCE_ISO3_CODE, country.ISO3Code); |
37 | | - Assert.Equal(FRANCE_CALLING_CODE, country.CallingCode); |
| 141 | + AssertCorrectInformation( |
| 142 | + country, |
| 143 | + ExpectedId, |
| 144 | + FRANCE_NAME, |
| 145 | + FRANCE_OFFICIAL_NAME, |
| 146 | + FRANCE_NATIVE_NAME, |
| 147 | + FRANCE_CAPITAL, |
| 148 | + FRANCE_NUMERIC_CODE, |
| 149 | + FRANCE_ISO2_CODE, |
| 150 | + FRANCE_ISO3_CODE, |
| 151 | + FRANCE_CALLING_CODE, |
| 152 | + ExpectedStates |
| 153 | + ); |
38 | 154 | } |
39 | 155 | } |
0 commit comments