1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-21 23:23:52 +08:00

Use WorkingBeatmap instead of IBeatmap

This lets us access things like the background, track, etc. which are necessary for quality and filesize checks.

Also improves the structure of the `CheckBackgroundTest` class in the process.
This commit is contained in:
Naxess 2021-04-17 17:33:53 +02:00
parent 1832f624e2
commit 448574e7e6
9 changed files with 46 additions and 58 deletions

View File

@ -10,6 +10,7 @@ using osu.Game.Rulesets.Objects.Types;
using osu.Game.Rulesets.Osu.Edit.Checks; using osu.Game.Rulesets.Osu.Edit.Checks;
using osu.Game.Rulesets.Osu.Objects; using osu.Game.Rulesets.Osu.Objects;
using osu.Game.Rulesets.Osu.UI; using osu.Game.Rulesets.Osu.UI;
using osu.Game.Tests.Beatmaps;
using osuTK; using osuTK;
namespace osu.Game.Rulesets.Osu.Tests.Editor.Checks namespace osu.Game.Rulesets.Osu.Tests.Editor.Checks
@ -30,25 +31,23 @@ namespace osu.Game.Rulesets.Osu.Tests.Editor.Checks
[Test] [Test]
public void TestCircleInCenter() public void TestCircleInCenter()
{ {
var beatmap = new Beatmap<HitObject> assertOk(new Beatmap<HitObject>
{ {
HitObjects = new List<HitObject> HitObjects = new List<HitObject>
{ {
new HitCircle new HitCircle
{ {
StartTime = 3000, StartTime = 3000,
Position = playfield_centre // Playfield is 640 x 480. Position = playfield_centre
} }
} }
}; });
Assert.That(check.Run(beatmap), Is.Empty);
} }
[Test] [Test]
public void TestCircleNearEdge() public void TestCircleNearEdge()
{ {
var beatmap = new Beatmap<HitObject> assertOk(new Beatmap<HitObject>
{ {
HitObjects = new List<HitObject> HitObjects = new List<HitObject>
{ {
@ -58,15 +57,13 @@ namespace osu.Game.Rulesets.Osu.Tests.Editor.Checks
Position = new Vector2(5, 5) Position = new Vector2(5, 5)
} }
} }
}; });
Assert.That(check.Run(beatmap), Is.Empty);
} }
[Test] [Test]
public void TestCircleNearEdgeStackedOffscreen() public void TestCircleNearEdgeStackedOffscreen()
{ {
var beatmap = new Beatmap<HitObject> assertOffscreenCircle(new Beatmap<HitObject>
{ {
HitObjects = new List<HitObject> HitObjects = new List<HitObject>
{ {
@ -77,15 +74,13 @@ namespace osu.Game.Rulesets.Osu.Tests.Editor.Checks
StackHeight = 5 StackHeight = 5
} }
} }
}; });
assertOffscreenCircle(beatmap);
} }
[Test] [Test]
public void TestCircleOffscreen() public void TestCircleOffscreen()
{ {
var beatmap = new Beatmap<HitObject> assertOffscreenCircle(new Beatmap<HitObject>
{ {
HitObjects = new List<HitObject> HitObjects = new List<HitObject>
{ {
@ -95,15 +90,13 @@ namespace osu.Game.Rulesets.Osu.Tests.Editor.Checks
Position = new Vector2(0, 0) Position = new Vector2(0, 0)
} }
} }
}; });
assertOffscreenCircle(beatmap);
} }
[Test] [Test]
public void TestSliderInCenter() public void TestSliderInCenter()
{ {
var beatmap = new Beatmap<HitObject> assertOk(new Beatmap<HitObject>
{ {
HitObjects = new List<HitObject> HitObjects = new List<HitObject>
{ {
@ -118,15 +111,13 @@ namespace osu.Game.Rulesets.Osu.Tests.Editor.Checks
}), }),
} }
} }
}; });
Assert.That(check.Run(beatmap), Is.Empty);
} }
[Test] [Test]
public void TestSliderNearEdge() public void TestSliderNearEdge()
{ {
var beatmap = new Beatmap<HitObject> assertOk(new Beatmap<HitObject>
{ {
HitObjects = new List<HitObject> HitObjects = new List<HitObject>
{ {
@ -141,15 +132,13 @@ namespace osu.Game.Rulesets.Osu.Tests.Editor.Checks
}), }),
} }
} }
}; });
Assert.That(check.Run(beatmap), Is.Empty);
} }
[Test] [Test]
public void TestSliderNearEdgeStackedOffscreen() public void TestSliderNearEdgeStackedOffscreen()
{ {
var beatmap = new Beatmap<HitObject> assertOk(new Beatmap<HitObject>
{ {
HitObjects = new List<HitObject> HitObjects = new List<HitObject>
{ {
@ -165,15 +154,13 @@ namespace osu.Game.Rulesets.Osu.Tests.Editor.Checks
StackHeight = 5 StackHeight = 5
} }
} }
}; });
assertOffscreenSlider(beatmap);
} }
[Test] [Test]
public void TestSliderOffscreenStart() public void TestSliderOffscreenStart()
{ {
var beatmap = new Beatmap<HitObject> assertOffscreenSlider(new Beatmap<HitObject>
{ {
HitObjects = new List<HitObject> HitObjects = new List<HitObject>
{ {
@ -188,15 +175,13 @@ namespace osu.Game.Rulesets.Osu.Tests.Editor.Checks
}), }),
} }
} }
}; });
assertOffscreenSlider(beatmap);
} }
[Test] [Test]
public void TestSliderOffscreenEnd() public void TestSliderOffscreenEnd()
{ {
var beatmap = new Beatmap<HitObject> assertOffscreenSlider(new Beatmap<HitObject>
{ {
HitObjects = new List<HitObject> HitObjects = new List<HitObject>
{ {
@ -211,15 +196,13 @@ namespace osu.Game.Rulesets.Osu.Tests.Editor.Checks
}), }),
} }
} }
}; });
assertOffscreenSlider(beatmap);
} }
[Test] [Test]
public void TestSliderOffscreenPath() public void TestSliderOffscreenPath()
{ {
var beatmap = new Beatmap<HitObject> assertOffscreenSlider(new Beatmap<HitObject>
{ {
HitObjects = new List<HitObject> HitObjects = new List<HitObject>
{ {
@ -236,14 +219,17 @@ namespace osu.Game.Rulesets.Osu.Tests.Editor.Checks
}), }),
} }
} }
}; });
}
assertOffscreenSlider(beatmap); private void assertOk(IBeatmap beatmap)
{
Assert.That(check.Run(new TestWorkingBeatmap(beatmap)), Is.Empty);
} }
private void assertOffscreenCircle(IBeatmap beatmap) private void assertOffscreenCircle(IBeatmap beatmap)
{ {
var issues = check.Run(beatmap).ToList(); var issues = check.Run(new TestWorkingBeatmap(beatmap)).ToList();
Assert.That(issues, Has.Count.EqualTo(1)); Assert.That(issues, Has.Count.EqualTo(1));
Assert.That(issues.Single().Template is CheckOffscreenObjects.IssueTemplateOffscreenCircle); Assert.That(issues.Single().Template is CheckOffscreenObjects.IssueTemplateOffscreenCircle);
@ -251,7 +237,7 @@ namespace osu.Game.Rulesets.Osu.Tests.Editor.Checks
private void assertOffscreenSlider(IBeatmap beatmap) private void assertOffscreenSlider(IBeatmap beatmap)
{ {
var issues = check.Run(beatmap).ToList(); var issues = check.Run(new TestWorkingBeatmap(beatmap)).ToList();
Assert.That(issues, Has.Count.EqualTo(1)); Assert.That(issues, Has.Count.EqualTo(1));
Assert.That(issues.Single().Template is CheckOffscreenObjects.IssueTemplateOffscreenSlider); Assert.That(issues.Single().Template is CheckOffscreenObjects.IssueTemplateOffscreenSlider);

View File

@ -31,9 +31,9 @@ namespace osu.Game.Rulesets.Osu.Edit.Checks
new IssueTemplateOffscreenSlider(this) new IssueTemplateOffscreenSlider(this)
}; };
public IEnumerable<Issue> Run(IBeatmap beatmap) public IEnumerable<Issue> Run(WorkingBeatmap workingBeatmap)
{ {
foreach (var hitobject in beatmap.HitObjects) foreach (var hitobject in workingBeatmap.Beatmap.HitObjects)
{ {
switch (hitobject) switch (hitobject)
{ {

View File

@ -17,6 +17,6 @@ namespace osu.Game.Rulesets.Osu.Edit
new CheckOffscreenObjects() new CheckOffscreenObjects()
}; };
public IEnumerable<Issue> Run(IBeatmap beatmap) => checks.SelectMany(check => check.Run(beatmap)); public IEnumerable<Issue> Run(WorkingBeatmap workingBeatmap) => checks.SelectMany(check => check.Run(workingBeatmap));
} }
} }

View File

@ -7,6 +7,7 @@ using NUnit.Framework;
using osu.Game.Beatmaps; using osu.Game.Beatmaps;
using osu.Game.Rulesets.Edit.Checks; using osu.Game.Rulesets.Edit.Checks;
using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects;
using osu.Game.Tests.Beatmaps;
namespace osu.Game.Tests.Editing.Checks namespace osu.Game.Tests.Editing.Checks
{ {
@ -14,13 +15,13 @@ namespace osu.Game.Tests.Editing.Checks
public class CheckBackgroundTest public class CheckBackgroundTest
{ {
private CheckBackground check; private CheckBackground check;
private IBeatmap beatmap; private WorkingBeatmap beatmap;
[SetUp] [SetUp]
public void Setup() public void Setup()
{ {
check = new CheckBackground(); check = new CheckBackground();
beatmap = new Beatmap<HitObject> beatmap = new TestWorkingBeatmap(new Beatmap<HitObject>
{ {
BeatmapInfo = new BeatmapInfo BeatmapInfo = new BeatmapInfo
{ {
@ -33,7 +34,7 @@ namespace osu.Game.Tests.Editing.Checks
}) })
} }
} }
}; });
} }
[Test] [Test]

View File

@ -19,6 +19,6 @@ namespace osu.Game.Rulesets.Edit
new CheckBackground(), new CheckBackground(),
}; };
public IEnumerable<Issue> Run(IBeatmap beatmap) => checks.SelectMany(check => check.Run(beatmap)); public IEnumerable<Issue> Run(WorkingBeatmap workingBeatmap) => checks.SelectMany(check => check.Run(workingBeatmap));
} }
} }

View File

@ -18,9 +18,9 @@ namespace osu.Game.Rulesets.Edit.Checks
new IssueTemplateDoesNotExist(this) new IssueTemplateDoesNotExist(this)
}; };
public IEnumerable<Issue> Run(IBeatmap beatmap) public IEnumerable<Issue> Run(WorkingBeatmap workingBeatmap)
{ {
if (beatmap.Metadata.BackgroundFile == null) if (workingBeatmap.Metadata?.BackgroundFile == null)
{ {
yield return new IssueTemplateNoneSet(this).Create(); yield return new IssueTemplateNoneSet(this).Create();
@ -29,13 +29,13 @@ namespace osu.Game.Rulesets.Edit.Checks
// If the background is set, also make sure it still exists. // If the background is set, also make sure it still exists.
var set = beatmap.BeatmapInfo.BeatmapSet; var set = workingBeatmap.BeatmapInfo.BeatmapSet;
var file = set.Files.FirstOrDefault(f => f.Filename == beatmap.Metadata.BackgroundFile); var file = set.Files.FirstOrDefault(f => f.Filename == workingBeatmap.Metadata.BackgroundFile);
if (file != null) if (file != null)
yield break; yield break;
yield return new IssueTemplateDoesNotExist(this).Create(beatmap.Metadata.BackgroundFile); yield return new IssueTemplateDoesNotExist(this).Create(workingBeatmap.Metadata.BackgroundFile);
} }
public class IssueTemplateNoneSet : IssueTemplate public class IssueTemplateNoneSet : IssueTemplate

View File

@ -24,7 +24,7 @@ namespace osu.Game.Rulesets.Edit.Checks.Components
/// <summary> /// <summary>
/// Runs this check and returns any issues detected for the provided beatmap. /// Runs this check and returns any issues detected for the provided beatmap.
/// </summary> /// </summary>
/// <param name="beatmap">The beatmap to run the check on.</param> /// <param name="workingBeatmap">The beatmap to run the check on.</param>
public IEnumerable<Issue> Run(IBeatmap beatmap); public IEnumerable<Issue> Run(WorkingBeatmap workingBeatmap);
} }
} }

View File

@ -12,6 +12,6 @@ namespace osu.Game.Rulesets.Edit
/// </summary> /// </summary>
public interface IBeatmapVerifier public interface IBeatmapVerifier
{ {
public IEnumerable<Issue> Run(IBeatmap beatmap); public IEnumerable<Issue> Run(WorkingBeatmap workingBeatmap);
} }
} }

View File

@ -7,6 +7,7 @@ using osu.Framework.Bindables;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Shapes;
using osu.Game.Beatmaps;
using osu.Game.Graphics; using osu.Game.Graphics;
using osu.Game.Graphics.Containers; using osu.Game.Graphics.Containers;
using osu.Game.Graphics.UserInterface; using osu.Game.Graphics.UserInterface;
@ -61,7 +62,7 @@ namespace osu.Game.Screens.Edit.Verify
private EditorClock clock { get; set; } private EditorClock clock { get; set; }
[Resolved] [Resolved]
protected EditorBeatmap Beatmap { get; private set; } protected WorkingBeatmap Beatmap { get; private set; }
[Resolved] [Resolved]
private Bindable<Issue> selectedIssue { get; set; } private Bindable<Issue> selectedIssue { get; set; }