diff --git a/CHANGELIST.md b/CHANGELIST.md index 50fdc4b8..04a5dd04 100644 --- a/CHANGELIST.md +++ b/CHANGELIST.md @@ -63,6 +63,7 @@ - Fix non-tag tag shortnames - Fix parsing of non-tag tags again - Disable unnecessary cuesheet parsing +- Fix incorrect region two-letter code ### 2.2 (2021-12-30) - Fix Saturn header finding diff --git a/MPF.Test/RedumpLib/ExtensionsTests.cs b/MPF.Test/RedumpLib/ExtensionsTests.cs index a68ddbae..5baf02e1 100644 --- a/MPF.Test/RedumpLib/ExtensionsTests.cs +++ b/MPF.Test/RedumpLib/ExtensionsTests.cs @@ -255,7 +255,7 @@ namespace MPF.Test.RedumpLib /// Ensure that every Language that has an ISO 639-1 code is unique /// [Fact] - public void NoDuplicateTwoLetterCodeTest() + public void LanguageNoDuplicateTwoLetterCodeTest() { var fullLanguages = Enum.GetValues(typeof(Language)).Cast().ToList(); var filteredLanguages = new Dictionary(); @@ -282,7 +282,7 @@ namespace MPF.Test.RedumpLib /// Ensure that every Language that has a standard/bibliographic ISO 639-2 code is unique /// [Fact] - public void NoDuplicateThreeLetterCodeTest() + public void LanguageNoDuplicateThreeLetterCodeTest() { var fullLanguages = Enum.GetValues(typeof(Language)).Cast().ToList(); var filteredLanguages = new Dictionary(); @@ -309,7 +309,7 @@ namespace MPF.Test.RedumpLib /// Ensure that every Language that has a terminology ISO 639-2 code is unique /// [Fact] - public void NoDuplicateThreeLetterCodeAltTest() + public void LanguageNoDuplicateThreeLetterCodeAltTest() { var fullLanguages = Enum.GetValues(typeof(Language)).Cast().ToList(); var filteredLanguages = new Dictionary(); @@ -474,6 +474,33 @@ namespace MPF.Test.RedumpLib Assert.NotNull(actual); } + /// + /// Ensure that every Language that has an ISO 639-1 code is unique + /// + [Fact] + public void RegionNoDuplicateShortNameTest() + { + var fullRegions = Enum.GetValues(typeof(Region)).Cast().ToList(); + var filteredRegions = new Dictionary(); + + int totalCount = 0; + foreach (Region? region in fullRegions) + { + string code = region.ShortName(); + if (string.IsNullOrWhiteSpace(code)) + continue; + + // Throw if the code already exists + if (filteredRegions.ContainsKey(code)) + throw new DuplicateNameException($"Code {code} already in dictionary"); + + filteredRegions[code] = region; + totalCount++; + } + + Assert.Equal(totalCount, filteredRegions.Count); + } + /// /// Generate a test set of Region values /// diff --git a/RedumpLib/Data/Enumerations.cs b/RedumpLib/Data/Enumerations.cs index 5338e8bc..d2b9e0e7 100644 --- a/RedumpLib/Data/Enumerations.cs +++ b/RedumpLib/Data/Enumerations.cs @@ -2416,7 +2416,7 @@ namespace RedumpLib.Data [HumanReadable(LongName = "Afghanistan", ShortName = "Af")] Afghanistan, - [HumanReadable(LongName = "Åland Islands", ShortName = "Af")] + [HumanReadable(LongName = "Åland Islands", ShortName = "Ax")] AlandIslands, [HumanReadable(LongName = "Albania", ShortName = "Al")]