1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-22 02:15:37 +08:00

Move more logic to base EditorTestScene

This commit is contained in:
Dean Herbert 2020-09-14 15:27:08 +09:00
parent da02ee8828
commit 0ef4dfc192
2 changed files with 49 additions and 53 deletions

View File

@ -1,41 +1,27 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence. // Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text. // See the LICENCE file in the repository root for full licence text.
using System.Linq;
using NUnit.Framework; using NUnit.Framework;
using osu.Framework.Testing;
using osu.Game.Rulesets; using osu.Game.Rulesets;
using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects;
using osu.Game.Rulesets.Osu; using osu.Game.Rulesets.Osu;
using osu.Game.Rulesets.Osu.Objects; using osu.Game.Rulesets.Osu.Objects;
using osu.Game.Screens.Edit;
namespace osu.Game.Tests.Visual.Editing namespace osu.Game.Tests.Visual.Editing
{ {
public class TestSceneEditorChangeStates : EditorTestScene public class TestSceneEditorChangeStates : EditorTestScene
{ {
private EditorBeatmap editorBeatmap;
protected override Ruleset CreateEditorRuleset() => new OsuRuleset(); protected override Ruleset CreateEditorRuleset() => new OsuRuleset();
protected new TestEditor Editor => (TestEditor)base.Editor;
public override void SetUpSteps()
{
base.SetUpSteps();
AddStep("get beatmap", () => editorBeatmap = Editor.ChildrenOfType<EditorBeatmap>().Single());
}
[Test] [Test]
public void TestSelectedObjects() public void TestSelectedObjects()
{ {
HitCircle obj = null; HitCircle obj = null;
AddStep("add hitobject", () => editorBeatmap.Add(obj = new HitCircle { StartTime = 1000 })); AddStep("add hitobject", () => EditorBeatmap.Add(obj = new HitCircle { StartTime = 1000 }));
AddStep("select hitobject", () => editorBeatmap.SelectedHitObjects.Add(obj)); AddStep("select hitobject", () => EditorBeatmap.SelectedHitObjects.Add(obj));
AddAssert("confirm 1 selected", () => editorBeatmap.SelectedHitObjects.Count == 1); AddAssert("confirm 1 selected", () => EditorBeatmap.SelectedHitObjects.Count == 1);
AddStep("deselect hitobject", () => editorBeatmap.SelectedHitObjects.Remove(obj)); AddStep("deselect hitobject", () => EditorBeatmap.SelectedHitObjects.Remove(obj));
AddAssert("confirm 0 selected", () => editorBeatmap.SelectedHitObjects.Count == 0); AddAssert("confirm 0 selected", () => EditorBeatmap.SelectedHitObjects.Count == 0);
} }
[Test] [Test]
@ -43,11 +29,11 @@ namespace osu.Game.Tests.Visual.Editing
{ {
int hitObjectCount = 0; int hitObjectCount = 0;
AddStep("get initial state", () => hitObjectCount = editorBeatmap.HitObjects.Count); AddStep("get initial state", () => hitObjectCount = EditorBeatmap.HitObjects.Count);
addUndoSteps(); addUndoSteps();
AddAssert("no change occurred", () => hitObjectCount == editorBeatmap.HitObjects.Count); AddAssert("no change occurred", () => hitObjectCount == EditorBeatmap.HitObjects.Count);
AddAssert("no unsaved changes", () => !Editor.HasUnsavedChanges); AddAssert("no unsaved changes", () => !Editor.HasUnsavedChanges);
} }
@ -56,11 +42,11 @@ namespace osu.Game.Tests.Visual.Editing
{ {
int hitObjectCount = 0; int hitObjectCount = 0;
AddStep("get initial state", () => hitObjectCount = editorBeatmap.HitObjects.Count); AddStep("get initial state", () => hitObjectCount = EditorBeatmap.HitObjects.Count);
addRedoSteps(); addRedoSteps();
AddAssert("no change occurred", () => hitObjectCount == editorBeatmap.HitObjects.Count); AddAssert("no change occurred", () => hitObjectCount == EditorBeatmap.HitObjects.Count);
AddAssert("no unsaved changes", () => !Editor.HasUnsavedChanges); AddAssert("no unsaved changes", () => !Editor.HasUnsavedChanges);
} }
@ -73,11 +59,11 @@ namespace osu.Game.Tests.Visual.Editing
AddStep("bind removal", () => AddStep("bind removal", () =>
{ {
editorBeatmap.HitObjectAdded += h => addedObject = h; EditorBeatmap.HitObjectAdded += h => addedObject = h;
editorBeatmap.HitObjectRemoved += h => removedObject = h; EditorBeatmap.HitObjectRemoved += h => removedObject = h;
}); });
AddStep("add hitobject", () => editorBeatmap.Add(expectedObject = new HitCircle { StartTime = 1000 })); AddStep("add hitobject", () => EditorBeatmap.Add(expectedObject = new HitCircle { StartTime = 1000 }));
AddAssert("hitobject added", () => addedObject == expectedObject); AddAssert("hitobject added", () => addedObject == expectedObject);
AddAssert("unsaved changes", () => Editor.HasUnsavedChanges); AddAssert("unsaved changes", () => Editor.HasUnsavedChanges);
@ -95,11 +81,11 @@ namespace osu.Game.Tests.Visual.Editing
AddStep("bind removal", () => AddStep("bind removal", () =>
{ {
editorBeatmap.HitObjectAdded += h => addedObject = h; EditorBeatmap.HitObjectAdded += h => addedObject = h;
editorBeatmap.HitObjectRemoved += h => removedObject = h; EditorBeatmap.HitObjectRemoved += h => removedObject = h;
}); });
AddStep("add hitobject", () => editorBeatmap.Add(expectedObject = new HitCircle { StartTime = 1000 })); AddStep("add hitobject", () => EditorBeatmap.Add(expectedObject = new HitCircle { StartTime = 1000 }));
addUndoSteps(); addUndoSteps();
AddStep("reset variables", () => AddStep("reset variables", () =>
@ -117,7 +103,7 @@ namespace osu.Game.Tests.Visual.Editing
[Test] [Test]
public void TestAddObjectThenSaveHasNoUnsavedChanges() public void TestAddObjectThenSaveHasNoUnsavedChanges()
{ {
AddStep("add hitobject", () => editorBeatmap.Add(new HitCircle { StartTime = 1000 })); AddStep("add hitobject", () => EditorBeatmap.Add(new HitCircle { StartTime = 1000 }));
AddAssert("unsaved changes", () => Editor.HasUnsavedChanges); AddAssert("unsaved changes", () => Editor.HasUnsavedChanges);
AddStep("save changes", () => Editor.Save()); AddStep("save changes", () => Editor.Save());
@ -133,12 +119,12 @@ namespace osu.Game.Tests.Visual.Editing
AddStep("bind removal", () => AddStep("bind removal", () =>
{ {
editorBeatmap.HitObjectAdded += h => addedObject = h; EditorBeatmap.HitObjectAdded += h => addedObject = h;
editorBeatmap.HitObjectRemoved += h => removedObject = h; EditorBeatmap.HitObjectRemoved += h => removedObject = h;
}); });
AddStep("add hitobject", () => editorBeatmap.Add(expectedObject = new HitCircle { StartTime = 1000 })); AddStep("add hitobject", () => EditorBeatmap.Add(expectedObject = new HitCircle { StartTime = 1000 }));
AddStep("remove object", () => editorBeatmap.Remove(expectedObject)); AddStep("remove object", () => EditorBeatmap.Remove(expectedObject));
AddStep("reset variables", () => AddStep("reset variables", () =>
{ {
addedObject = null; addedObject = null;
@ -160,12 +146,12 @@ namespace osu.Game.Tests.Visual.Editing
AddStep("bind removal", () => AddStep("bind removal", () =>
{ {
editorBeatmap.HitObjectAdded += h => addedObject = h; EditorBeatmap.HitObjectAdded += h => addedObject = h;
editorBeatmap.HitObjectRemoved += h => removedObject = h; EditorBeatmap.HitObjectRemoved += h => removedObject = h;
}); });
AddStep("add hitobject", () => editorBeatmap.Add(expectedObject = new HitCircle { StartTime = 1000 })); AddStep("add hitobject", () => EditorBeatmap.Add(expectedObject = new HitCircle { StartTime = 1000 }));
AddStep("remove object", () => editorBeatmap.Remove(expectedObject)); AddStep("remove object", () => EditorBeatmap.Remove(expectedObject));
addUndoSteps(); addUndoSteps();
AddStep("reset variables", () => AddStep("reset variables", () =>
@ -183,18 +169,5 @@ namespace osu.Game.Tests.Visual.Editing
private void addUndoSteps() => AddStep("undo", () => Editor.Undo()); private void addUndoSteps() => AddStep("undo", () => Editor.Undo());
private void addRedoSteps() => AddStep("redo", () => Editor.Redo()); private void addRedoSteps() => AddStep("redo", () => Editor.Redo());
protected override Editor CreateEditor() => new TestEditor();
protected class TestEditor : Editor
{
public new void Undo() => base.Undo();
public new void Redo() => base.Redo();
public new void Save() => base.Save();
public new bool HasUnsavedChanges => base.HasUnsavedChanges;
}
} }
} }

View File

@ -14,7 +14,11 @@ namespace osu.Game.Tests.Visual
{ {
public abstract class EditorTestScene : ScreenTestScene public abstract class EditorTestScene : ScreenTestScene
{ {
protected Editor Editor { get; private set; } protected EditorBeatmap EditorBeatmap;
protected TestEditor Editor { get; private set; }
protected EditorClock EditorClock { get; private set; }
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
private void load() private void load()
@ -29,6 +33,8 @@ namespace osu.Game.Tests.Visual
AddStep("load editor", () => LoadScreen(Editor = CreateEditor())); AddStep("load editor", () => LoadScreen(Editor = CreateEditor()));
AddUntilStep("wait for editor to load", () => Editor.ChildrenOfType<HitObjectComposer>().FirstOrDefault()?.IsLoaded == true AddUntilStep("wait for editor to load", () => Editor.ChildrenOfType<HitObjectComposer>().FirstOrDefault()?.IsLoaded == true
&& Editor.ChildrenOfType<TimelineArea>().FirstOrDefault()?.IsLoaded == true); && Editor.ChildrenOfType<TimelineArea>().FirstOrDefault()?.IsLoaded == true);
AddStep("get beatmap", () => EditorBeatmap = Editor.ChildrenOfType<EditorBeatmap>().Single());
AddStep("get clock", () => EditorClock = Editor.ChildrenOfType<EditorClock>().Single());
} }
/// <summary> /// <summary>
@ -39,6 +45,23 @@ namespace osu.Game.Tests.Visual
protected sealed override Ruleset CreateRuleset() => CreateEditorRuleset(); protected sealed override Ruleset CreateRuleset() => CreateEditorRuleset();
protected virtual Editor CreateEditor() => new Editor(); protected virtual TestEditor CreateEditor() => new TestEditor();
protected class TestEditor : Editor
{
public new void Undo() => base.Undo();
public new void Redo() => base.Redo();
public new void Save() => base.Save();
public new void Cut() => base.Cut();
public new void Copy() => base.Copy();
public new void Paste() => base.Paste();
public new bool HasUnsavedChanges => base.HasUnsavedChanges;
}
} }
} }