mirror of
https://github.com/osukey/osukey.git
synced 2025-06-16 08:47:55 +09:00
Add test coverage for collection items
This commit is contained in:
parent
9ec4fbb86d
commit
cb2f0b8c67
@ -17,6 +17,7 @@ using osu.Framework.Platform;
|
|||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Beatmaps.Drawables;
|
using osu.Game.Beatmaps.Drawables;
|
||||||
|
using osu.Game.Collections;
|
||||||
using osu.Game.Database;
|
using osu.Game.Database;
|
||||||
using osu.Game.Graphics.Containers;
|
using osu.Game.Graphics.Containers;
|
||||||
using osu.Game.Graphics.Cursor;
|
using osu.Game.Graphics.Cursor;
|
||||||
@ -42,6 +43,10 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
|
|
||||||
private BeatmapManager manager;
|
private BeatmapManager manager;
|
||||||
private RulesetStore rulesets;
|
private RulesetStore rulesets;
|
||||||
|
private CollectionManager collections;
|
||||||
|
|
||||||
|
private BeatmapSetOverlay beatmapOverlay;
|
||||||
|
private ManageCollectionsDialog manageCollectionsDialog;
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(GameHost host, AudioManager audio)
|
private void load(GameHost host, AudioManager audio)
|
||||||
@ -199,12 +204,15 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestDownloadButtonHiddenWhenBeatmapExists()
|
public void TestDownloadButtonHiddenWhenBeatmapExists()
|
||||||
{
|
{
|
||||||
var beatmap = new TestBeatmap(new OsuRuleset().RulesetInfo).BeatmapInfo;
|
|
||||||
Live<BeatmapSetInfo> imported = null;
|
Live<BeatmapSetInfo> imported = null;
|
||||||
|
|
||||||
Debug.Assert(beatmap.BeatmapSet != null);
|
AddStep("import beatmap", () =>
|
||||||
|
{
|
||||||
|
var beatmap = new TestBeatmap(new OsuRuleset().RulesetInfo).BeatmapInfo;
|
||||||
|
|
||||||
AddStep("import beatmap", () => imported = manager.Import(beatmap.BeatmapSet));
|
Debug.Assert(beatmap.BeatmapSet != null);
|
||||||
|
imported = manager.Import(beatmap.BeatmapSet);
|
||||||
|
});
|
||||||
|
|
||||||
createPlaylistWithBeatmaps(() => imported.PerformRead(s => s.Beatmaps.Detach()));
|
createPlaylistWithBeatmaps(() => imported.PerformRead(s => s.Beatmaps.Detach()));
|
||||||
|
|
||||||
@ -310,6 +318,8 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
|
|
||||||
createPlaylist();
|
createPlaylist();
|
||||||
|
|
||||||
|
AddAssert("beatmap overlay hidden", () => beatmapOverlay.State.Value == Visibility.Hidden);
|
||||||
|
|
||||||
moveToItem(0);
|
moveToItem(0);
|
||||||
AddStep("right click", () => InputManager.Click(MouseButton.Right));
|
AddStep("right click", () => InputManager.Click(MouseButton.Right));
|
||||||
AddAssert("context menu open", () => (contextMenu = this.ChildrenOfType<OsuContextMenu>().SingleOrDefault())?.State == MenuState.Open);
|
AddAssert("context menu open", () => (contextMenu = this.ChildrenOfType<OsuContextMenu>().SingleOrDefault())?.State == MenuState.Open);
|
||||||
@ -319,7 +329,91 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
InputManager.MoveMouseTo(contextMenu.ChildrenOfType<DrawableOsuMenuItem>().First());
|
InputManager.MoveMouseTo(contextMenu.ChildrenOfType<DrawableOsuMenuItem>().First());
|
||||||
InputManager.Click(MouseButton.Left);
|
InputManager.Click(MouseButton.Left);
|
||||||
});
|
});
|
||||||
AddAssert("beatmap overlay visible", () => this.ChildrenOfType<BeatmapSetOverlay>().Single().State.Value == Visibility.Visible);
|
AddAssert("beatmap overlay visible", () => beatmapOverlay.State.Value == Visibility.Visible);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestContextMenuCollection()
|
||||||
|
{
|
||||||
|
OsuContextMenu contextMenu = null;
|
||||||
|
BeatmapInfo beatmap = null;
|
||||||
|
Live<BeatmapSetInfo> imported = null;
|
||||||
|
|
||||||
|
AddStep("import beatmap", () =>
|
||||||
|
{
|
||||||
|
beatmap = new TestBeatmap(new OsuRuleset().RulesetInfo).BeatmapInfo;
|
||||||
|
|
||||||
|
Debug.Assert(beatmap.BeatmapSet != null);
|
||||||
|
imported = manager.Import(beatmap.BeatmapSet);
|
||||||
|
});
|
||||||
|
|
||||||
|
createPlaylistWithBeatmaps(() => imported.PerformRead(s => s.Beatmaps.Detach()));
|
||||||
|
|
||||||
|
AddStep("add two collections", () =>
|
||||||
|
{
|
||||||
|
collections.Collections.Clear();
|
||||||
|
collections.Collections.AddRange(new[]
|
||||||
|
{
|
||||||
|
new BeatmapCollection { Name = { Value = "Collection #1" }, BeatmapHashes = { beatmap.MD5Hash } },
|
||||||
|
new BeatmapCollection { Name = { Value = "Collection #2" } },
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
moveToItem(0);
|
||||||
|
AddStep("right click", () => InputManager.Click(MouseButton.Right));
|
||||||
|
AddAssert("context menu open", () => (contextMenu = this.ChildrenOfType<OsuContextMenu>().SingleOrDefault())?.State == MenuState.Open);
|
||||||
|
|
||||||
|
AddStep("select collections", () => InputManager.MoveMouseTo(contextMenu.ChildrenOfType<DrawableOsuMenuItem>().ElementAt(1)));
|
||||||
|
AddAssert("collection 1 present and beatmap added", () =>
|
||||||
|
{
|
||||||
|
var item = (ToggleMenuItem)contextMenu.Items[1].Items[0];
|
||||||
|
return item.Text.Value == "Collection #1" && item.State.Value;
|
||||||
|
});
|
||||||
|
AddAssert("collection 2 present", () =>
|
||||||
|
{
|
||||||
|
var item = (ToggleMenuItem)contextMenu.Items[1].Items[1];
|
||||||
|
return item.Text.Value == "Collection #2" && !item.State.Value;
|
||||||
|
});
|
||||||
|
|
||||||
|
AddStep("select second collection", () =>
|
||||||
|
{
|
||||||
|
InputManager.MoveMouseTo(contextMenu.ChildrenOfType<DrawableStatefulMenuItem>().ElementAt(1));
|
||||||
|
InputManager.Click(MouseButton.Left);
|
||||||
|
});
|
||||||
|
AddAssert("beatmap added to second collection", () => collections.Collections[1].BeatmapHashes.Contains(beatmap.MD5Hash));
|
||||||
|
AddAssert("item state updated", () => ((ToggleMenuItem)contextMenu.Items[1].Items[1]).State.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestContextMenuManageCollections()
|
||||||
|
{
|
||||||
|
OsuContextMenu contextMenu = null;
|
||||||
|
Live<BeatmapSetInfo> imported = null;
|
||||||
|
|
||||||
|
AddStep("import beatmap", () =>
|
||||||
|
{
|
||||||
|
var beatmap = new TestBeatmap(new OsuRuleset().RulesetInfo).BeatmapInfo;
|
||||||
|
|
||||||
|
Debug.Assert(beatmap.BeatmapSet != null);
|
||||||
|
imported = manager.Import(beatmap.BeatmapSet);
|
||||||
|
});
|
||||||
|
|
||||||
|
createPlaylistWithBeatmaps(() => imported.PerformRead(s => s.Beatmaps.Detach()));
|
||||||
|
|
||||||
|
AddStep("clear collections", () => collections.Collections.Clear());
|
||||||
|
AddAssert("manage collections dialog hidden", () => manageCollectionsDialog.State.Value == Visibility.Hidden);
|
||||||
|
|
||||||
|
moveToItem(0);
|
||||||
|
AddStep("right click", () => InputManager.Click(MouseButton.Right));
|
||||||
|
AddAssert("context menu open", () => (contextMenu = this.ChildrenOfType<OsuContextMenu>().SingleOrDefault())?.State == MenuState.Open);
|
||||||
|
|
||||||
|
AddStep("select collections", () => InputManager.MoveMouseTo(contextMenu.ChildrenOfType<DrawableOsuMenuItem>().ElementAt(1)));
|
||||||
|
AddStep("click manage", () =>
|
||||||
|
{
|
||||||
|
InputManager.MoveMouseTo(contextMenu.ChildrenOfType<OsuContextMenu>().ElementAt(1).ChildrenOfType<DrawableOsuMenuItem>().Single());
|
||||||
|
InputManager.Click(MouseButton.Left);
|
||||||
|
});
|
||||||
|
AddAssert("manage collections dialog open", () => manageCollectionsDialog.State.Value == Visibility.Visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void moveToItem(int index, Vector2? offset = null)
|
private void moveToItem(int index, Vector2? offset = null)
|
||||||
@ -366,17 +460,18 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
AddStep("create playlist", () =>
|
AddStep("create playlist", () =>
|
||||||
{
|
{
|
||||||
BeatmapSetOverlay beatmapOverlay;
|
|
||||||
|
|
||||||
Child = new DependencyProvidingContainer
|
Child = new DependencyProvidingContainer
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
CachedDependencies = new (Type, object)[]
|
CachedDependencies = new (Type, object)[]
|
||||||
{
|
{
|
||||||
(typeof(BeatmapSetOverlay), beatmapOverlay = new BeatmapSetOverlay()),
|
(typeof(BeatmapSetOverlay), beatmapOverlay = new BeatmapSetOverlay()),
|
||||||
|
(typeof(CollectionManager), collections = new CollectionManager(LocalStorage)),
|
||||||
|
(typeof(ManageCollectionsDialog), manageCollectionsDialog = new ManageCollectionsDialog()),
|
||||||
},
|
},
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
|
collections,
|
||||||
new OsuContextMenuContainer
|
new OsuContextMenuContainer
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
@ -388,6 +483,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
beatmapOverlay,
|
beatmapOverlay,
|
||||||
|
manageCollectionsDialog,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user