// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System.Linq; using NUnit.Framework; using osu.Framework.Utils; using osu.Game.Rulesets.Catch.Edit.Blueprints; using osu.Game.Rulesets.Catch.Objects; using osu.Game.Rulesets.Catch.Objects.Drawables; using osu.Game.Rulesets.Catch.UI; using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects.Drawables; using osuTK.Input; namespace osu.Game.Rulesets.Catch.Tests.Editor { public partial class TestSceneFruitPlacementBlueprint : CatchPlacementBlueprintTestScene { protected override DrawableHitObject CreateHitObject(HitObject hitObject) => new DrawableFruit((Fruit)hitObject); protected override HitObjectPlacementBlueprint CreateBlueprint() => new FruitPlacementBlueprint(); [Test] public void TestFruitPlacementPosition() { const double time = 300; const float x = CatchPlayfield.CENTER_X; AddMoveStep(time, x); AddClickStep(MouseButton.Left); AddAssert("outline position is correct", () => { var outline = FruitOutlines.Single(); return Precision.AlmostEquals(outline.X, x) && Precision.AlmostEquals(outline.Y, HitObjectContainer.PositionAtTime(time)); }); AddAssert("fruit time is correct", () => Precision.AlmostEquals(LastObject.StartTimeBindable.Value, time)); AddAssert("fruit position is correct", () => Precision.AlmostEquals(LastObject.X, x)); } } }