mirror of
https://github.com/ppy/osu.git
synced 2025-02-15 22:22:54 +08:00
Fix tests/add placeholder item tests
This commit is contained in:
parent
2e40ff25f7
commit
bee450ae1e
@ -7,11 +7,14 @@ using osu.Framework.Allocation;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.UserInterface;
|
using osu.Framework.Graphics.UserInterface;
|
||||||
|
using osu.Framework.Platform;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Collections;
|
using osu.Game.Collections;
|
||||||
using osu.Game.Graphics.UserInterface;
|
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.Dialog;
|
using osu.Game.Overlays.Dialog;
|
||||||
|
using osu.Game.Rulesets;
|
||||||
|
using osu.Game.Tests.Resources;
|
||||||
using osuTK;
|
using osuTK;
|
||||||
using osuTK.Input;
|
using osuTK.Input;
|
||||||
|
|
||||||
@ -25,6 +28,9 @@ namespace osu.Game.Tests.Visual.Collections
|
|||||||
private readonly DialogOverlay dialogOverlay;
|
private readonly DialogOverlay dialogOverlay;
|
||||||
private readonly BeatmapCollectionManager manager;
|
private readonly BeatmapCollectionManager manager;
|
||||||
|
|
||||||
|
private RulesetStore rulesets;
|
||||||
|
private BeatmapManager beatmapManager;
|
||||||
|
|
||||||
private ManageCollectionsDialog dialog;
|
private ManageCollectionsDialog dialog;
|
||||||
|
|
||||||
public TestSceneManageCollectionsDialog()
|
public TestSceneManageCollectionsDialog()
|
||||||
@ -37,6 +43,15 @@ namespace osu.Game.Tests.Visual.Collections
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[BackgroundDependencyLoader]
|
||||||
|
private void load(GameHost host)
|
||||||
|
{
|
||||||
|
Dependencies.Cache(rulesets = new RulesetStore(ContextFactory));
|
||||||
|
Dependencies.Cache(beatmapManager = new BeatmapManager(LocalStorage, ContextFactory, rulesets, null, Audio, host, Beatmap.Default));
|
||||||
|
|
||||||
|
beatmapManager.Import(TestResources.GetTestBeatmapForImport()).Wait();
|
||||||
|
}
|
||||||
|
|
||||||
protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent)
|
protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent)
|
||||||
{
|
{
|
||||||
var dependencies = new DependencyContainer(base.CreateChildDependencies(parent));
|
var dependencies = new DependencyContainer(base.CreateChildDependencies(parent));
|
||||||
@ -65,6 +80,12 @@ namespace osu.Game.Tests.Visual.Collections
|
|||||||
AddStep("hide dialog", () => dialog.Hide());
|
AddStep("hide dialog", () => dialog.Hide());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestLastItemIsPlaceholder()
|
||||||
|
{
|
||||||
|
AddAssert("last item is placeholder", () => !manager.Collections.Contains(dialog.ChildrenOfType<DrawableCollectionListItem>().Last().Model));
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestAddCollectionExternal()
|
public void TestAddCollectionExternal()
|
||||||
{
|
{
|
||||||
@ -78,23 +99,34 @@ namespace osu.Game.Tests.Visual.Collections
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestAddCollectionViaButton()
|
public void TestFocusPlaceholderDoesNotCreateCollection()
|
||||||
{
|
{
|
||||||
AddStep("press new collection button", () =>
|
AddStep("focus placeholder", () =>
|
||||||
{
|
{
|
||||||
InputManager.MoveMouseTo(dialog.ChildrenOfType<OsuButton>().Single());
|
InputManager.MoveMouseTo(dialog.ChildrenOfType<DrawableCollectionListItem>().Last());
|
||||||
InputManager.Click(MouseButton.Left);
|
InputManager.Click(MouseButton.Left);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
assertCollectionCount(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestAddCollectionViaPlaceholder()
|
||||||
|
{
|
||||||
|
DrawableCollectionListItem placeholderItem = null;
|
||||||
|
|
||||||
|
AddStep("focus placeholder", () =>
|
||||||
|
{
|
||||||
|
InputManager.MoveMouseTo(placeholderItem = dialog.ChildrenOfType<DrawableCollectionListItem>().Last());
|
||||||
|
InputManager.Click(MouseButton.Left);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Done directly via the collection since InputManager methods cannot add text to textbox...
|
||||||
|
AddStep("change collection name", () => placeholderItem.Model.Name.Value = "a");
|
||||||
assertCollectionCount(1);
|
assertCollectionCount(1);
|
||||||
|
AddAssert("collection now exists", () => manager.Collections.Contains(placeholderItem.Model));
|
||||||
|
|
||||||
AddStep("press again", () =>
|
AddAssert("last item is placeholder", () => !manager.Collections.Contains(dialog.ChildrenOfType<DrawableCollectionListItem>().Last().Model));
|
||||||
{
|
|
||||||
InputManager.MoveMouseTo(dialog.ChildrenOfType<OsuButton>().Single());
|
|
||||||
InputManager.Click(MouseButton.Left);
|
|
||||||
});
|
|
||||||
|
|
||||||
assertCollectionCount(2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@ -117,7 +149,7 @@ namespace osu.Game.Tests.Visual.Collections
|
|||||||
AddStep("add two collections", () => manager.Collections.AddRange(new[]
|
AddStep("add two collections", () => manager.Collections.AddRange(new[]
|
||||||
{
|
{
|
||||||
new BeatmapCollection { Name = { Value = "1" } },
|
new BeatmapCollection { Name = { Value = "1" } },
|
||||||
new BeatmapCollection { Name = { Value = "2" } },
|
new BeatmapCollection { Name = { Value = "2" }, Beatmaps = { beatmapManager.GetAllUsableBeatmapSets().First().Beatmaps[0] } },
|
||||||
}));
|
}));
|
||||||
|
|
||||||
assertCollectionCount(2);
|
assertCollectionCount(2);
|
||||||
@ -128,6 +160,16 @@ namespace osu.Game.Tests.Visual.Collections
|
|||||||
InputManager.Click(MouseButton.Left);
|
InputManager.Click(MouseButton.Left);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
AddAssert("dialog not displayed", () => dialogOverlay.CurrentDialog == null);
|
||||||
|
assertCollectionCount(1);
|
||||||
|
assertCollectionName(0, "2");
|
||||||
|
|
||||||
|
AddStep("click first delete button", () =>
|
||||||
|
{
|
||||||
|
InputManager.MoveMouseTo(dialog.ChildrenOfType<DrawableCollectionListItem.DeleteButton>().First(), new Vector2(5, 0));
|
||||||
|
InputManager.Click(MouseButton.Left);
|
||||||
|
});
|
||||||
|
|
||||||
AddAssert("dialog displayed", () => dialogOverlay.CurrentDialog is DeleteCollectionDialog);
|
AddAssert("dialog displayed", () => dialogOverlay.CurrentDialog is DeleteCollectionDialog);
|
||||||
AddStep("click confirmation", () =>
|
AddStep("click confirmation", () =>
|
||||||
{
|
{
|
||||||
@ -135,8 +177,7 @@ namespace osu.Game.Tests.Visual.Collections
|
|||||||
InputManager.Click(MouseButton.Left);
|
InputManager.Click(MouseButton.Left);
|
||||||
});
|
});
|
||||||
|
|
||||||
assertCollectionCount(1);
|
assertCollectionCount(0);
|
||||||
assertCollectionName(0, "2");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@ -144,11 +185,10 @@ namespace osu.Game.Tests.Visual.Collections
|
|||||||
{
|
{
|
||||||
AddStep("add two collections", () => manager.Collections.AddRange(new[]
|
AddStep("add two collections", () => manager.Collections.AddRange(new[]
|
||||||
{
|
{
|
||||||
new BeatmapCollection { Name = { Value = "1" } },
|
new BeatmapCollection { Name = { Value = "1" }, Beatmaps = { beatmapManager.GetAllUsableBeatmapSets().First().Beatmaps[0] } },
|
||||||
new BeatmapCollection { Name = { Value = "2" } },
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
assertCollectionCount(2);
|
assertCollectionCount(1);
|
||||||
|
|
||||||
AddStep("click first delete button", () =>
|
AddStep("click first delete button", () =>
|
||||||
{
|
{
|
||||||
@ -157,13 +197,13 @@ namespace osu.Game.Tests.Visual.Collections
|
|||||||
});
|
});
|
||||||
|
|
||||||
AddAssert("dialog displayed", () => dialogOverlay.CurrentDialog is DeleteCollectionDialog);
|
AddAssert("dialog displayed", () => dialogOverlay.CurrentDialog is DeleteCollectionDialog);
|
||||||
AddStep("click confirmation", () =>
|
AddStep("click cancellation", () =>
|
||||||
{
|
{
|
||||||
InputManager.MoveMouseTo(dialogOverlay.CurrentDialog.ChildrenOfType<PopupDialogButton>().Last());
|
InputManager.MoveMouseTo(dialogOverlay.CurrentDialog.ChildrenOfType<PopupDialogButton>().Last());
|
||||||
InputManager.Click(MouseButton.Left);
|
InputManager.Click(MouseButton.Left);
|
||||||
});
|
});
|
||||||
|
|
||||||
assertCollectionCount(2);
|
assertCollectionCount(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@ -196,7 +236,7 @@ namespace osu.Game.Tests.Visual.Collections
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void assertCollectionCount(int count)
|
private void assertCollectionCount(int count)
|
||||||
=> AddUntilStep($"{count} collections shown", () => dialog.ChildrenOfType<DrawableCollectionListItem>().Count() == count);
|
=> AddUntilStep($"{count} collections shown", () => dialog.ChildrenOfType<DrawableCollectionListItem>().Count(i => i.IsCreated.Value) == count);
|
||||||
|
|
||||||
private void assertCollectionName(int index, string name)
|
private void assertCollectionName(int index, string name)
|
||||||
=> AddUntilStep($"item {index + 1} has correct name", () => dialog.ChildrenOfType<DrawableCollectionListItem>().ElementAt(index).ChildrenOfType<TextBox>().First().Text == name);
|
=> AddUntilStep($"item {index + 1} has correct name", () => dialog.ChildrenOfType<DrawableCollectionListItem>().ElementAt(index).ChildrenOfType<TextBox>().First().Text == name);
|
||||||
|
@ -42,13 +42,6 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent)
|
|
||||||
{
|
|
||||||
var dependencies = new DependencyContainer(base.CreateChildDependencies(parent));
|
|
||||||
dependencies.Cache(collectionManager);
|
|
||||||
return dependencies;
|
|
||||||
}
|
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(GameHost host)
|
private void load(GameHost host)
|
||||||
{
|
{
|
||||||
@ -58,6 +51,13 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
beatmapManager.Import(TestResources.GetTestBeatmapForImport()).Wait();
|
beatmapManager.Import(TestResources.GetTestBeatmapForImport()).Wait();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent)
|
||||||
|
{
|
||||||
|
var dependencies = new DependencyContainer(base.CreateChildDependencies(parent));
|
||||||
|
dependencies.Cache(collectionManager);
|
||||||
|
return dependencies;
|
||||||
|
}
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void SetUp() => Schedule(() =>
|
public void SetUp() => Schedule(() =>
|
||||||
{
|
{
|
||||||
|
@ -27,6 +27,11 @@ namespace osu.Game.Collections
|
|||||||
private const float item_height = 35;
|
private const float item_height = 35;
|
||||||
private const float button_width = item_height * 0.75f;
|
private const float button_width = item_height * 0.75f;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Whether the <see cref="BeatmapCollection"/> currently exists inside the <see cref="BeatmapCollectionManager"/>.
|
||||||
|
/// </summary>
|
||||||
|
public IBindable<bool> IsCreated => isCreated;
|
||||||
|
|
||||||
private readonly Bindable<bool> isCreated = new Bindable<bool>();
|
private readonly Bindable<bool> isCreated = new Bindable<bool>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
Loading…
Reference in New Issue
Block a user