Fix some BeatmapCarousel tests not correctly reinitialising local data per run

Closes https://github.com/ppy/osu/issues/19949.
This commit is contained in:
Dean Herbert 2022-08-25 14:03:25 +09:00
parent 136dcee3b5
commit 1032b2a68c

View File

@ -244,8 +244,12 @@ namespace osu.Game.Tests.Visual.SongSelect
const int total_set_count = 200; const int total_set_count = 200;
for (int i = 0; i < total_set_count; i++) AddStep("Populuate beatmap sets", () =>
sets.Add(TestResources.CreateTestBeatmapSetInfo()); {
sets.Clear();
for (int i = 0; i < total_set_count; i++)
sets.Add(TestResources.CreateTestBeatmapSetInfo());
});
loadBeatmaps(sets); loadBeatmaps(sets);
@ -275,8 +279,12 @@ namespace osu.Game.Tests.Visual.SongSelect
const int total_set_count = 20; const int total_set_count = 20;
for (int i = 0; i < total_set_count; i++) AddStep("Populuate beatmap sets", () =>
sets.Add(TestResources.CreateTestBeatmapSetInfo(3)); {
sets.Clear();
for (int i = 0; i < total_set_count; i++)
sets.Add(TestResources.CreateTestBeatmapSetInfo(3));
});
loadBeatmaps(sets); loadBeatmaps(sets);
@ -493,18 +501,23 @@ namespace osu.Game.Tests.Visual.SongSelect
const string zzz_string = "zzzzz"; const string zzz_string = "zzzzz";
for (int i = 0; i < 20; i++) AddStep("Populuate beatmap sets", () =>
{ {
var set = TestResources.CreateTestBeatmapSetInfo(); sets.Clear();
if (i == 4) for (int i = 0; i < 20; i++)
set.Beatmaps.ForEach(b => b.Metadata.Artist = zzz_string); {
var set = TestResources.CreateTestBeatmapSetInfo();
if (i == 16) if (i == 4)
set.Beatmaps.ForEach(b => b.Metadata.Author.Username = zzz_string); set.Beatmaps.ForEach(b => b.Metadata.Artist = zzz_string);
sets.Add(set); if (i == 16)
} set.Beatmaps.ForEach(b => b.Metadata.Author.Username = zzz_string);
sets.Add(set);
}
});
loadBeatmaps(sets); loadBeatmaps(sets);
@ -521,21 +534,27 @@ namespace osu.Game.Tests.Visual.SongSelect
public void TestSortingStability() public void TestSortingStability()
{ {
var sets = new List<BeatmapSetInfo>(); var sets = new List<BeatmapSetInfo>();
int idOffset = 0;
for (int i = 0; i < 10; i++) AddStep("Populuate beatmap sets", () =>
{ {
var set = TestResources.CreateTestBeatmapSetInfo(); sets.Clear();
// only need to set the first as they are a shared reference. for (int i = 0; i < 10; i++)
var beatmap = set.Beatmaps.First(); {
var set = TestResources.CreateTestBeatmapSetInfo();
beatmap.Metadata.Artist = $"artist {i / 2}"; // only need to set the first as they are a shared reference.
beatmap.Metadata.Title = $"title {9 - i}"; var beatmap = set.Beatmaps.First();
sets.Add(set); beatmap.Metadata.Artist = $"artist {i / 2}";
} beatmap.Metadata.Title = $"title {9 - i}";
int idOffset = sets.First().OnlineID; sets.Add(set);
}
idOffset = sets.First().OnlineID;
});
loadBeatmaps(sets); loadBeatmaps(sets);
@ -556,26 +575,32 @@ namespace osu.Game.Tests.Visual.SongSelect
public void TestSortingStabilityWithNewItems() public void TestSortingStabilityWithNewItems()
{ {
List<BeatmapSetInfo> sets = new List<BeatmapSetInfo>(); List<BeatmapSetInfo> sets = new List<BeatmapSetInfo>();
int idOffset = 0;
for (int i = 0; i < 3; i++) AddStep("Populuate beatmap sets", () =>
{ {
var set = TestResources.CreateTestBeatmapSetInfo(3); sets.Clear();
// only need to set the first as they are a shared reference. for (int i = 0; i < 3; i++)
var beatmap = set.Beatmaps.First(); {
var set = TestResources.CreateTestBeatmapSetInfo(3);
beatmap.Metadata.Artist = "same artist"; // only need to set the first as they are a shared reference.
beatmap.Metadata.Title = "same title"; var beatmap = set.Beatmaps.First();
sets.Add(set); beatmap.Metadata.Artist = "same artist";
} beatmap.Metadata.Title = "same title";
int idOffset = sets.First().OnlineID; sets.Add(set);
}
idOffset = sets.First().OnlineID;
});
loadBeatmaps(sets); loadBeatmaps(sets);
AddStep("Sort by artist", () => carousel.Filter(new FilterCriteria { Sort = SortMode.Artist }, false)); AddStep("Sort by artist", () => carousel.Filter(new FilterCriteria { Sort = SortMode.Artist }, false));
AddAssert("Items remain in original order", () => carousel.BeatmapSets.Select((set, index) => set.OnlineID == idOffset + index).All(b => b)); assertOriginalOrderMaintained();
AddStep("Add new item", () => AddStep("Add new item", () =>
{ {
@ -590,10 +615,16 @@ namespace osu.Game.Tests.Visual.SongSelect
carousel.UpdateBeatmapSet(set); carousel.UpdateBeatmapSet(set);
}); });
AddAssert("Items remain in original order", () => carousel.BeatmapSets.Select((set, index) => set.OnlineID == idOffset + index).All(b => b)); assertOriginalOrderMaintained();
AddStep("Sort by title", () => carousel.Filter(new FilterCriteria { Sort = SortMode.Title }, false)); AddStep("Sort by title", () => carousel.Filter(new FilterCriteria { Sort = SortMode.Title }, false));
AddAssert("Items remain in original order", () => carousel.BeatmapSets.Select((set, index) => set.OnlineID == idOffset + index).All(b => b)); assertOriginalOrderMaintained();
void assertOriginalOrderMaintained()
{
AddAssert("Items remain in original order",
() => carousel.BeatmapSets.Select(s => s.OnlineID), () => Is.EqualTo(carousel.BeatmapSets.Select((set, index) => idOffset + index)));
}
} }
[Test] [Test]
@ -601,13 +632,18 @@ namespace osu.Game.Tests.Visual.SongSelect
{ {
List<BeatmapSetInfo> sets = new List<BeatmapSetInfo>(); List<BeatmapSetInfo> sets = new List<BeatmapSetInfo>();
for (int i = 0; i < 3; i++) AddStep("Populuate beatmap sets", () =>
{ {
var set = TestResources.CreateTestBeatmapSetInfo(3); sets.Clear();
set.Beatmaps[0].StarRating = 3 - i;
set.Beatmaps[2].StarRating = 6 + i; for (int i = 0; i < 3; i++)
sets.Add(set); {
} var set = TestResources.CreateTestBeatmapSetInfo(3);
set.Beatmaps[0].StarRating = 3 - i;
set.Beatmaps[2].StarRating = 6 + i;
sets.Add(set);
}
});
loadBeatmaps(sets); loadBeatmaps(sets);
@ -759,8 +795,13 @@ namespace osu.Game.Tests.Visual.SongSelect
{ {
List<BeatmapSetInfo> manySets = new List<BeatmapSetInfo>(); List<BeatmapSetInfo> manySets = new List<BeatmapSetInfo>();
for (int i = 1; i <= 50; i++) AddStep("Populuate beatmap sets", () =>
manySets.Add(TestResources.CreateTestBeatmapSetInfo(3)); {
manySets.Clear();
for (int i = 1; i <= 50; i++)
manySets.Add(TestResources.CreateTestBeatmapSetInfo(3));
});
loadBeatmaps(manySets); loadBeatmaps(manySets);
@ -791,6 +832,8 @@ namespace osu.Game.Tests.Visual.SongSelect
AddStep("populate maps", () => AddStep("populate maps", () =>
{ {
manySets.Clear();
for (int i = 0; i < 10; i++) for (int i = 0; i < 10; i++)
{ {
manySets.Add(TestResources.CreateTestBeatmapSetInfo(3, new[] manySets.Add(TestResources.CreateTestBeatmapSetInfo(3, new[]