1
0
mirror of https://github.com/ppy/osu.git synced 2025-03-05 11:43:01 +08:00

Add some basic tests

This commit is contained in:
smoogipoo 2019-11-01 15:12:42 +09:00
parent 7e60bc7240
commit c1850b2353

View File

@ -2,6 +2,8 @@
// 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; using System;
using System.Collections.Generic;
using System.Linq;
using JetBrains.Annotations; using JetBrains.Annotations;
using NUnit.Framework; using NUnit.Framework;
using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Extensions.Color4Extensions;
@ -40,54 +42,132 @@ namespace osu.Game.Rulesets.Osu.Tests
[Test] [Test]
public void TestAddSingleHitObject() public void TestAddSingleHitObject()
{ {
addObject(new HitCircle { Position = new Vector2(100, 100) }); addObjects(() => new[] { new HitCircle { Position = new Vector2(100, 100) } });
} }
[Test] [Test]
public void TestRemoveSingleHitObject() public void TestRemoveSingleHitObject()
{ {
DrawableHitObject obj = null;
addObjects(() => new[] { new HitCircle { Position = new Vector2(100, 100) } }, o => obj = o);
removeObject(() => obj);
} }
[Test] [Test]
public void TestAddMultipleHitObjects() public void TestAddMultipleHitObjects()
{ {
addObjects(() => new[]
{
new HitCircle { Position = new Vector2(100, 100) },
new HitCircle { Position = new Vector2(200, 200) },
new HitCircle { Position = new Vector2(300, 300) },
new HitCircle { Position = new Vector2(400, 400) },
new HitCircle { Position = new Vector2(500, 500) },
});
} }
[Test] [Test]
public void TestRemoveEndObject() public void TestRemoveEndObject()
{ {
var objects = new List<DrawableHitObject>();
AddStep("reset", () => objects.Clear());
addObjects(() => new[]
{
new HitCircle { Position = new Vector2(100, 100) },
new HitCircle { Position = new Vector2(200, 200) },
new HitCircle { Position = new Vector2(300, 300) },
new HitCircle { Position = new Vector2(400, 400) },
new HitCircle { Position = new Vector2(500, 500) },
}, o => objects.Add(o));
removeObject(() => objects.Last());
} }
[Test] [Test]
public void TestRemoveStartObject() public void TestRemoveStartObject()
{ {
var objects = new List<DrawableHitObject>();
AddStep("reset", () => objects.Clear());
addObjects(() => new[]
{
new HitCircle { Position = new Vector2(100, 100) },
new HitCircle { Position = new Vector2(200, 200) },
new HitCircle { Position = new Vector2(300, 300) },
new HitCircle { Position = new Vector2(400, 400) },
new HitCircle { Position = new Vector2(500, 500) },
}, o => objects.Add(o));
removeObject(() => objects.First());
} }
[Test] [Test]
public void TestRemoveMiddleObject() public void TestRemoveMiddleObject()
{ {
var objects = new List<DrawableHitObject>();
AddStep("reset", () => objects.Clear());
addObjects(() => new[]
{
new HitCircle { Position = new Vector2(100, 100) },
new HitCircle { Position = new Vector2(200, 200) },
new HitCircle { Position = new Vector2(300, 300) },
new HitCircle { Position = new Vector2(400, 400) },
new HitCircle { Position = new Vector2(500, 500) },
}, o => objects.Add(o));
removeObject(() => objects[2]);
} }
private void addObject(HitCircle hitCircle, Action<DrawableHitObject> func = null) [Test]
public void TestMoveHitObject()
{ {
AddStep("add hitobject", () => var objects = new List<DrawableHitObject>();
AddStep("reset", () => objects.Clear());
addObjects(() => new[]
{ {
hitCircle.ApplyDefaults(new ControlPointInfo(), new BeatmapDifficulty()); new HitCircle { Position = new Vector2(100, 100) },
new HitCircle { Position = new Vector2(200, 200) },
new HitCircle { Position = new Vector2(300, 300) },
new HitCircle { Position = new Vector2(400, 400) },
new HitCircle { Position = new Vector2(500, 500) },
}, o => objects.Add(o));
var drawableCircle = new DrawableHitCircle(hitCircle); AddStep("move hitobject", () => ((OsuHitObject)objects[2].HitObject).Position = new Vector2(300, 100));
}
hitObjectContainer.Add(drawableCircle); private void addObjects(Func<HitCircle[]> ctorFunc, Action<DrawableHitObject> storeFunc = null)
followPointRenderer.AddFollowPoints(drawableCircle); {
AddStep("add hitobjects", () =>
{
var circles = ctorFunc();
func?.Invoke(drawableCircle); for (int i = 0; i < circles.Length; i++)
{
circles[i].StartTime = Time.Current + 1000 + 500 * (i + 1);
circles[i].ApplyDefaults(new ControlPointInfo(), new BeatmapDifficulty());
var drawableCircle = new DrawableHitCircle(circles[i]);
hitObjectContainer.Add(drawableCircle);
followPointRenderer.AddFollowPoints(drawableCircle);
storeFunc?.Invoke(drawableCircle);
}
}); });
} }
private void removeObject(Func<DrawableHitObject> func) private void removeObject(Func<DrawableHitObject> getFunc)
{ {
AddStep("remove hitobject", () => AddStep("remove hitobject", () =>
{ {
var drawableObject = func?.Invoke(); var drawableObject = getFunc?.Invoke();
hitObjectContainer.Remove(drawableObject); hitObjectContainer.Remove(drawableObject);
followPointRenderer.RemoveFollowPoints(drawableObject); followPointRenderer.RemoveFollowPoints(drawableObject);