Skip to content

Commit

Permalink
Remove BeatmapCarousel testing backdoor
Browse files Browse the repository at this point in the history
  • Loading branch information
peppy committed Dec 11, 2024
1 parent 06d5cf9 commit 106b00b
Show file tree
Hide file tree
Showing 14 changed files with 52 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ private void load(GameHost host, AudioManager audio)
Dependencies.Cache(rulesets = new RealmRulesetStore(Realm));
Dependencies.Cache(manager = new BeatmapManager(LocalStorage, Realm, null, audio, Resources, host, Beatmap.Default));
Dependencies.Cache(new OsuConfigManager(LocalStorage));
Dependencies.Cache(beatmapStore = new RealmDetachedBeatmapStore());
Dependencies.CacheAs(beatmapStore = new RealmDetachedBeatmapStore());
Dependencies.Cache(Realm);

manager.Import(TestResources.GetQuickTestBeatmapForImport()).WaitSafely();
Expand Down
2 changes: 1 addition & 1 deletion osu.Game.Tests/Visual/Multiplayer/QueueModeTestScene.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ private void load(GameHost host, AudioManager audio)

Dependencies.Cache(new RealmRulesetStore(Realm));
Dependencies.Cache(beatmaps = new BeatmapManager(LocalStorage, Realm, null, audio, Resources, host, Beatmap.Default));
Dependencies.Cache(beatmapStore = new RealmDetachedBeatmapStore());
Dependencies.CacheAs(beatmapStore = new RealmDetachedBeatmapStore());
Dependencies.Cache(Realm);

Add(beatmapStore);
Expand Down
2 changes: 1 addition & 1 deletion osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ private void load(GameHost host, AudioManager audio)

Dependencies.Cache(new RealmRulesetStore(Realm));
Dependencies.Cache(beatmaps = new BeatmapManager(LocalStorage, Realm, API, audio, Resources, host, Beatmap.Default));
Dependencies.Cache(beatmapStore = new RealmDetachedBeatmapStore());
Dependencies.CacheAs(beatmapStore = new RealmDetachedBeatmapStore());
Dependencies.Cache(Realm);

Add(beatmapStore);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ private void load(GameHost host, AudioManager audio)

Dependencies.Cache(rulesets = new RealmRulesetStore(Realm));
Dependencies.Cache(manager = new BeatmapManager(LocalStorage, Realm, null, audio, Resources, host, Beatmap.Default));
Dependencies.Cache(beatmapStore = new RealmDetachedBeatmapStore());
Dependencies.CacheAs(beatmapStore = new RealmDetachedBeatmapStore());
Dependencies.Cache(Realm);

importedBeatmapSet = manager.Import(TestResources.CreateTestBeatmapSetInfo(8, rulesets.AvailableRulesets.ToArray()))!;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ private void load(GameHost host, AudioManager audio)

Dependencies.Cache(new RealmRulesetStore(Realm));
Dependencies.Cache(manager = new BeatmapManager(LocalStorage, Realm, null, audio, Resources, host, Beatmap.Default));
Dependencies.Cache(beatmapStore = new RealmDetachedBeatmapStore());
Dependencies.CacheAs(beatmapStore = new RealmDetachedBeatmapStore());
Dependencies.Cache(Realm);

var beatmapSet = TestResources.CreateTestBeatmapSetInfo();
Expand Down
8 changes: 7 additions & 1 deletion osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapCarousel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,15 @@
using osu.Framework.Utils;
using osu.Game.Beatmaps;
using osu.Game.Configuration;
using osu.Game.Database;
using osu.Game.Rulesets;
using osu.Game.Rulesets.Catch;
using osu.Game.Rulesets.Osu;
using osu.Game.Rulesets.Taiko;
using osu.Game.Screens.Select;
using osu.Game.Screens.Select.Carousel;
using osu.Game.Screens.Select.Filter;
using osu.Game.Tests.Beatmaps;
using osu.Game.Tests.Resources;
using osuTK.Input;

Expand All @@ -42,6 +44,9 @@ public partial class TestSceneBeatmapCarousel : OsuManualInputManagerTestScene
private const int set_count = 5;
private const int diff_count = 3;

[Cached(typeof(BeatmapStore))]
private TestBeatmapStore beatmaps = new TestBeatmapStore();

[BackgroundDependencyLoader]
private void load(RulesetStore rulesets)
{
Expand Down Expand Up @@ -1329,7 +1334,8 @@ private void createCarousel(List<BeatmapSetInfo> beatmapSets, [CanBeNull] Func<F

carouselAdjust?.Invoke(carousel);

carousel.BeatmapSets = beatmapSets;
beatmaps.BeatmapSets.Clear();
beatmaps.BeatmapSets.AddRange(beatmapSets);

(target ?? this).Child = carousel;
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ private void load(GameHost host, AudioManager audio)
Dependencies.Cache(rulesets = new RealmRulesetStore(Realm));
Dependencies.Cache(Realm);
Dependencies.Cache(manager = new BeatmapManager(LocalStorage, Realm, null, audio, Resources, host, defaultBeatmap = Beatmap.Default));
Dependencies.Cache(beatmapStore = new RealmDetachedBeatmapStore());
Dependencies.CacheAs(beatmapStore = new RealmDetachedBeatmapStore());

Dependencies.Cache(music = new MusicController());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,21 @@
// See the LICENCE file in the repository root for full licence text.

using System;
using System.Collections.Generic;
using System.Linq;
using NUnit.Framework;
using osu.Framework.Allocation;
using osu.Framework.Extensions.ObjectExtensions;
using osu.Framework.Graphics;
using osu.Framework.Testing;
using osu.Game.Beatmaps;
using osu.Game.Database;
using osu.Game.Online.API;
using osu.Game.Overlays;
using osu.Game.Overlays.Dialog;
using osu.Game.Screens.Select;
using osu.Game.Screens.Select.Carousel;
using osu.Game.Screens.Select.Filter;
using osu.Game.Tests.Beatmaps;
using osu.Game.Tests.Online;
using osu.Game.Tests.Resources;
using osuTK.Input;
Expand All @@ -31,6 +32,9 @@ public partial class TestSceneUpdateBeatmapSetButton : OsuManualInputManagerTest

private BeatmapSetInfo testBeatmapSetInfo = null!;

[Cached(typeof(BeatmapStore))]
private TestBeatmapStore beatmaps = new TestBeatmapStore();

protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent)
{
var dependencies = new DependencyContainer(base.CreateChildDependencies(parent));
Expand Down Expand Up @@ -246,13 +250,12 @@ public void TestSplitDisplay()

private BeatmapCarousel createCarousel()
{
beatmaps.BeatmapSets.Clear();
beatmaps.BeatmapSets.Add(testBeatmapSetInfo = TestResources.CreateTestBeatmapSetInfo(5));

return carousel = new BeatmapCarousel(new FilterCriteria())
{
RelativeSizeAxes = Axes.Both,
BeatmapSets = new List<BeatmapSetInfo>
{
(testBeatmapSetInfo = TestResources.CreateTestBeatmapSetInfo(5)),
}
};
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@

using osu.Framework.Allocation;
using osu.Framework.Screens;
using osu.Game.Database;
using osu.Game.Overlays;
using osu.Game.Overlays.FirstRunSetup;
using osu.Game.Tests.Beatmaps;

namespace osu.Game.Tests.Visual.UserInterface
{
Expand All @@ -13,6 +15,9 @@ public partial class TestSceneFirstRunScreenUIScale : OsuManualInputManagerTestS
[Cached]
private OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Purple);

[Cached(typeof(BeatmapStore))]
private BeatmapStore beatmapStore = new TestBeatmapStore();

public TestSceneFirstRunScreenUIScale()
{
AddStep("load screen", () =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,14 @@
using osu.Framework.Screens;
using osu.Framework.Testing;
using osu.Game.Configuration;
using osu.Game.Database;
using osu.Game.Localisation;
using osu.Game.Overlays;
using osu.Game.Overlays.FirstRunSetup;
using osu.Game.Overlays.Notifications;
using osu.Game.Screens;
using osu.Game.Screens.Footer;
using osu.Game.Tests.Beatmaps;
using osuTK;
using osuTK.Input;

Expand All @@ -47,6 +49,7 @@ private void load()
Dependencies.Cache(LocalConfig = new OsuConfigManager(LocalStorage));
Dependencies.CacheAs<IPerformFromScreenRunner>(performer.Object);
Dependencies.CacheAs<INotificationOverlay>(notificationOverlay.Object);
Dependencies.CacheAs<BeatmapStore>(new TestBeatmapStore());
}

[SetUpSteps]
Expand Down
2 changes: 1 addition & 1 deletion osu.Game/Database/BeatmapStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,6 @@ public abstract partial class BeatmapStore : Component
/// It is generally expected that once a beatmap store is in a good state, the overhead of this call
/// should be negligible.
/// </remarks>
public abstract IBindableList<BeatmapSetInfo> GetBeatmaps(CancellationToken? cancellationToken);
public abstract IBindableList<BeatmapSetInfo> GetBeatmapSets(CancellationToken? cancellationToken);
}
}
2 changes: 1 addition & 1 deletion osu.Game/Database/RealmDetachedBeatmapStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public partial class RealmDetachedBeatmapStore : BeatmapStore
[Resolved]
private RealmAccess realm { get; set; } = null!;

public override IBindableList<BeatmapSetInfo> GetBeatmaps(CancellationToken? cancellationToken)
public override IBindableList<BeatmapSetInfo> GetBeatmapSets(CancellationToken? cancellationToken)
{
loaded.Wait(cancellationToken ?? CancellationToken.None);
return detachedBeatmapSets.GetBoundCopy();
Expand Down
27 changes: 5 additions & 22 deletions osu.Game/Screens/Select/BeatmapCarousel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -112,27 +112,13 @@ public partial class BeatmapCarousel : CompositeDrawable, IKeyBindingHandler<Glo
[Resolved]
private RealmAccess realm { get; set; } = null!;

[Resolved]
private BeatmapStore? beatmapStore { get; set; }

private IBindableList<BeatmapSetInfo>? detachedBeatmapSets;

private readonly NoResultsPlaceholder noResultsPlaceholder;

private IEnumerable<CarouselBeatmapSet> beatmapSets => root.Items.OfType<CarouselBeatmapSet>();

internal IEnumerable<BeatmapSetInfo> BeatmapSets
{
get => beatmapSets.Select(g => g.BeatmapSet);
set
{
if (LoadState != LoadState.NotLoaded)
throw new InvalidOperationException("If not using a realm source, beatmap sets must be set before load.");

detachedBeatmapSets = new BindableList<BeatmapSetInfo>(value);
Schedule(loadNewRoot);
}
}
internal IEnumerable<BeatmapSetInfo> BeatmapSets => beatmapSets.Select(g => g.BeatmapSet);

private void loadNewRoot()
{
Expand Down Expand Up @@ -234,7 +220,7 @@ public BeatmapCarousel(FilterCriteria initialCriteria)
}

[BackgroundDependencyLoader]
private void load(OsuConfigManager config, AudioManager audio, CancellationToken? cancellationToken)
private void load(OsuConfigManager config, AudioManager audio, BeatmapStore beatmaps, CancellationToken? cancellationToken)
{
spinSample = audio.Samples.Get("SongSelect/random-spin");
randomSelectSample = audio.Samples.Get(@"SongSelect/select-random");
Expand All @@ -244,12 +230,9 @@ private void load(OsuConfigManager config, AudioManager audio, CancellationToken

RightClickScrollingEnabled.BindValueChanged(enabled => Scroll.RightMouseScrollbar = enabled.NewValue, true);

if (beatmapStore != null && detachedBeatmapSets == null)
{
detachedBeatmapSets = beatmapStore.GetBeatmaps(cancellationToken);
detachedBeatmapSets.BindCollectionChanged(beatmapSetsChanged);
loadNewRoot();
}
detachedBeatmapSets = beatmaps.GetBeatmapSets(cancellationToken);
detachedBeatmapSets.BindCollectionChanged(beatmapSetsChanged);
loadNewRoot();
}

private readonly HashSet<BeatmapSetInfo> setsRequiringUpdate = new HashSet<BeatmapSetInfo>();
Expand Down
16 changes: 16 additions & 0 deletions osu.Game/Tests/Beatmaps/TestBeatmapStore.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Copyright (c) ppy Pty Ltd <[email protected]>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.

using System.Threading;
using osu.Framework.Bindables;
using osu.Game.Beatmaps;
using osu.Game.Database;

namespace osu.Game.Tests.Beatmaps
{
internal partial class TestBeatmapStore : BeatmapStore
{
public readonly BindableList<BeatmapSetInfo> BeatmapSets = new BindableList<BeatmapSetInfo>();
public override IBindableList<BeatmapSetInfo> GetBeatmapSets(CancellationToken? cancellationToken) => BeatmapSets;
}
}

0 comments on commit 106b00b

Please sign in to comment.