From 931cf23a7cc4851456c8117014bb28c2b3d77cea Mon Sep 17 00:00:00 2001 From: Gareth Francis Date: Sun, 24 Jan 2021 11:37:38 +0000 Subject: [PATCH] Beataroni: Change BeatModsV1 api to return mod list in alphabetic case-insentive order Thanks to steffenWi for input (under PR #77) --- Beataroni/Beataroni.Tests/BeatModsV1Tests.cs | 10 ++-------- Beataroni/Beataroni/Models/BeatMods/mod.cs | 7 +++++++ Beataroni/Beataroni/Services/BeatModsV1.cs | 4 ++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Beataroni/Beataroni.Tests/BeatModsV1Tests.cs b/Beataroni/Beataroni.Tests/BeatModsV1Tests.cs index 2ada711..281dbfb 100644 --- a/Beataroni/Beataroni.Tests/BeatModsV1Tests.cs +++ b/Beataroni/Beataroni.Tests/BeatModsV1Tests.cs @@ -11,7 +11,7 @@ public void TestFetchBSVersions() { var versions = BeatModsV1.FetchBSVersions(); Assert.NotNull(versions); - Assert.Equal(11, versions.Count); + Assert.Equal(12, versions.Count); } [Fact] @@ -22,13 +22,7 @@ public void TestFetchMods() var mods = BeatModsV1.FetchMods(filters); Assert.NotNull(mods); - Assert.Equal(56, mods.Count); + Assert.Equal(60, mods.Count); } - - // [Fact] - // public void TestInstallMod() - // { - // throw new NotImplementedException(); - // } } } diff --git a/Beataroni/Beataroni/Models/BeatMods/mod.cs b/Beataroni/Beataroni/Models/BeatMods/mod.cs index cfab94c..9559824 100644 --- a/Beataroni/Beataroni/Models/BeatMods/mod.cs +++ b/Beataroni/Beataroni/Models/BeatMods/mod.cs @@ -65,6 +65,13 @@ public static void GetDependencySet(Mod mod, ref HashSet dependencies) } } + /// Comparator class for Mod + public class ModComparatorByName : IComparer + { + public int Compare(Mod a, Mod b) => string.Compare(a.name, b.name, true); + } + + /// /// A Mod within Mod.dependencies /// This is only a different class due to the way BeatMods returns dependencies diff --git a/Beataroni/Beataroni/Services/BeatModsV1.cs b/Beataroni/Beataroni/Services/BeatModsV1.cs index 987dff4..d435792 100644 --- a/Beataroni/Beataroni/Services/BeatModsV1.cs +++ b/Beataroni/Beataroni/Services/BeatModsV1.cs @@ -53,7 +53,7 @@ public static IList FetchBSVersions() /// Fetch list of mods for a set of filters /// Typical filters would be game version, installation type, mod status - public static IList FetchMods( Dictionary filters ) + public static ICollection FetchMods( Dictionary filters ) { var endpoint = $"{APIRoot}/{APIMod}"; @@ -91,7 +91,7 @@ public static IList FetchMods( Dictionary filters ) // Expand any dependencies into .net object references mods.ForEach(x => x.ExpandDependencyRefs(mods)); - return mods; + return new SortedSet(mods, new ModComparatorByName()); } catch (WebException e) { Console.WriteLine($"Error fetching BS Mods: {e.Message}");