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:
parent
1832f624e2
commit
448574e7e6
@ -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);
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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]
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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; }
|
||||||
|
Loading…
Reference in New Issue
Block a user