Move test ScoreInfo creation to TestResources

The main goal here is to remove the inheritance, since realm doesn't
like that. Unfortunate that we can't use object initialisers in a few of
these places, but no real way around that.
This commit is contained in:
Dean Herbert
2021-12-13 16:34:48 +09:00
parent c375c87094
commit b0d14526ea
11 changed files with 170 additions and 139 deletions

View File

@ -62,7 +62,7 @@ namespace osu.Game.Tests.Beatmaps.Formats
public void TestCultureInvariance() public void TestCultureInvariance()
{ {
var ruleset = new OsuRuleset().RulesetInfo; var ruleset = new OsuRuleset().RulesetInfo;
var scoreInfo = new TestScoreInfo(ruleset); var scoreInfo = TestResources.CreateTestScoreInfo(ruleset);
var beatmap = new TestBeatmap(ruleset); var beatmap = new TestBeatmap(ruleset);
var score = new Score var score = new Score
{ {

View File

@ -4,6 +4,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using NUnit.Framework; using NUnit.Framework;
@ -12,8 +13,12 @@ using osu.Framework.IO.Stores;
using osu.Framework.Testing; using osu.Framework.Testing;
using osu.Framework.Utils; using osu.Framework.Utils;
using osu.Game.Beatmaps; using osu.Game.Beatmaps;
using osu.Game.Online.API.Requests.Responses;
using osu.Game.Rulesets; using osu.Game.Rulesets;
using osu.Game.Rulesets.Mods;
using osu.Game.Rulesets.Osu; using osu.Game.Rulesets.Osu;
using osu.Game.Rulesets.Scoring;
using osu.Game.Scoring;
namespace osu.Game.Tests.Resources namespace osu.Game.Tests.Resources
{ {
@ -137,5 +142,67 @@ namespace osu.Game.Tests.Resources
} }
} }
} }
/// <summary>
/// Create a test score model.
/// </summary>
/// <param name="ruleset">The ruleset for which the score was set against.</param>
/// <param name="excessMods">Whether to include an excessive number of mods. If <c>false</c>, only two will be added.</param>
/// <returns></returns>
public static ScoreInfo CreateTestScoreInfo(RulesetInfo ruleset = null, bool excessMods = false) =>
CreateTestScoreInfo(CreateTestBeatmapSetInfo(1, new[] { ruleset ?? new OsuRuleset().RulesetInfo }).Beatmaps.First(), excessMods);
/// <summary>
/// Create a test score model.
/// </summary>
/// <param name="beatmap">The beatmap for which the score was set against.</param>
/// <param name="excessMods">Whether to include an excessive number of mods. If <c>false</c>, only two will be added.</param>
/// <returns></returns>
public static ScoreInfo CreateTestScoreInfo(BeatmapInfo beatmap, bool excessMods = false) => new ScoreInfo
{
User = new APIUser
{
Id = 2,
Username = "peppy",
CoverUrl = "https://osu.ppy.sh/images/headers/profile-covers/c3.jpg",
},
BeatmapInfo = beatmap,
Ruleset = beatmap.Ruleset,
RulesetID = beatmap.Ruleset.ID ?? 0,
Mods = excessMods
? beatmap.Ruleset.CreateInstance().CreateAllMods().ToArray()
: new Mod[] { new TestModHardRock(), new TestModDoubleTime() },
TotalScore = 2845370,
Accuracy = 0.95,
MaxCombo = 999,
Position = 1,
Rank = ScoreRank.S,
Date = DateTimeOffset.Now,
Statistics = new Dictionary<HitResult, int>
{
[HitResult.Miss] = 1,
[HitResult.Meh] = 50,
[HitResult.Ok] = 100,
[HitResult.Good] = 200,
[HitResult.Great] = 300,
[HitResult.Perfect] = 320,
[HitResult.SmallTickHit] = 50,
[HitResult.SmallTickMiss] = 25,
[HitResult.LargeTickHit] = 100,
[HitResult.LargeTickMiss] = 50,
[HitResult.SmallBonus] = 10,
[HitResult.SmallBonus] = 50
},
};
private class TestModHardRock : ModHardRock
{
public override double ScoreMultiplier => 1;
}
private class TestModDoubleTime : ModDoubleTime
{
public override double ScoreMultiplier => 1;
}
} }
} }

View File

@ -22,6 +22,7 @@ using osu.Game.Scoring;
using osu.Game.Screens.OnlinePlay.Playlists; using osu.Game.Screens.OnlinePlay.Playlists;
using osu.Game.Screens.Ranking; using osu.Game.Screens.Ranking;
using osu.Game.Tests.Beatmaps; using osu.Game.Tests.Beatmaps;
using osu.Game.Tests.Resources;
namespace osu.Game.Tests.Visual.Playlists namespace osu.Game.Tests.Visual.Playlists
{ {
@ -52,7 +53,9 @@ namespace osu.Game.Tests.Visual.Playlists
AddStep("bind user score info handler", () => AddStep("bind user score info handler", () =>
{ {
userScore = new TestScoreInfo(new OsuRuleset().RulesetInfo) { OnlineID = currentScoreId++ }; userScore = TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo);
userScore.OnlineID = currentScoreId++;
bindHandler(userScore: userScore); bindHandler(userScore: userScore);
}); });
@ -78,7 +81,9 @@ namespace osu.Game.Tests.Visual.Playlists
AddStep("bind user score info handler", () => AddStep("bind user score info handler", () =>
{ {
userScore = new TestScoreInfo(new OsuRuleset().RulesetInfo) { OnlineID = currentScoreId++ }; userScore = TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo);
userScore.OnlineID = currentScoreId++;
bindHandler(true, userScore); bindHandler(true, userScore);
}); });
@ -127,7 +132,9 @@ namespace osu.Game.Tests.Visual.Playlists
AddStep("bind user score info handler", () => AddStep("bind user score info handler", () =>
{ {
userScore = new TestScoreInfo(new OsuRuleset().RulesetInfo) { OnlineID = currentScoreId++ }; userScore = TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo);
userScore.OnlineID = currentScoreId++;
bindHandler(userScore: userScore); bindHandler(userScore: userScore);
}); });

View File

@ -13,6 +13,7 @@ using osu.Game.Rulesets.Osu;
using osu.Game.Scoring; using osu.Game.Scoring;
using osu.Game.Screens.Ranking; using osu.Game.Screens.Ranking;
using osu.Game.Screens.Ranking.Contracted; using osu.Game.Screens.Ranking.Contracted;
using osu.Game.Tests.Resources;
using osuTK; using osuTK;
namespace osu.Game.Tests.Visual.Ranking namespace osu.Game.Tests.Visual.Ranking
@ -22,13 +23,13 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestShowPanel() public void TestShowPanel()
{ {
AddStep("show example score", () => showPanel(CreateWorkingBeatmap(CreateBeatmap(new OsuRuleset().RulesetInfo)), new TestScoreInfo(new OsuRuleset().RulesetInfo))); AddStep("show example score", () => showPanel(CreateWorkingBeatmap(CreateBeatmap(new OsuRuleset().RulesetInfo)), TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo)));
} }
[Test] [Test]
public void TestExcessMods() public void TestExcessMods()
{ {
AddStep("show excess mods score", () => showPanel(CreateWorkingBeatmap(CreateBeatmap(new OsuRuleset().RulesetInfo)), new TestScoreInfo(new OsuRuleset().RulesetInfo, true))); AddStep("show excess mods score", () => showPanel(CreateWorkingBeatmap(CreateBeatmap(new OsuRuleset().RulesetInfo)), TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo, true)));
} }
private void showPanel(WorkingBeatmap workingBeatmap, ScoreInfo score) private void showPanel(WorkingBeatmap workingBeatmap, ScoreInfo score)

View File

@ -20,6 +20,7 @@ using osu.Game.Scoring;
using osu.Game.Screens.Ranking; using osu.Game.Screens.Ranking;
using osu.Game.Screens.Ranking.Expanded; using osu.Game.Screens.Ranking.Expanded;
using osu.Game.Tests.Beatmaps; using osu.Game.Tests.Beatmaps;
using osu.Game.Tests.Resources;
using osuTK; using osuTK;
namespace osu.Game.Tests.Visual.Ranking namespace osu.Game.Tests.Visual.Ranking
@ -34,10 +35,7 @@ namespace osu.Game.Tests.Visual.Ranking
{ {
var author = new APIUser { Username = "mapper_name" }; var author = new APIUser { Username = "mapper_name" };
AddStep("show example score", () => showPanel(new TestScoreInfo(new OsuRuleset().RulesetInfo) AddStep("show example score", () => showPanel(TestResources.CreateTestScoreInfo(createTestBeatmap(author))));
{
BeatmapInfo = createTestBeatmap(author)
}));
} }
[Test] [Test]
@ -45,10 +43,7 @@ namespace osu.Game.Tests.Visual.Ranking
{ {
var author = new APIUser { Username = "mapper_name" }; var author = new APIUser { Username = "mapper_name" };
AddStep("show excess mods score", () => showPanel(new TestScoreInfo(new OsuRuleset().RulesetInfo, true) AddStep("show excess mods score", () => showPanel(TestResources.CreateTestScoreInfo(createTestBeatmap(author), true)));
{
BeatmapInfo = createTestBeatmap(author)
}));
AddAssert("mapper name present", () => this.ChildrenOfType<OsuSpriteText>().Any(spriteText => spriteText.Current.Value == "mapper_name")); AddAssert("mapper name present", () => this.ChildrenOfType<OsuSpriteText>().Any(spriteText => spriteText.Current.Value == "mapper_name"));
} }
@ -56,10 +51,7 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestMapWithUnknownMapper() public void TestMapWithUnknownMapper()
{ {
AddStep("show example score", () => showPanel(new TestScoreInfo(new OsuRuleset().RulesetInfo) AddStep("show example score", () => showPanel(TestResources.CreateTestScoreInfo(createTestBeatmap(new APIUser()))));
{
BeatmapInfo = createTestBeatmap(new APIUser())
}));
AddAssert("mapped by text not present", () => AddAssert("mapped by text not present", () =>
this.ChildrenOfType<OsuSpriteText>().All(spriteText => !containsAny(spriteText.Text.ToString(), "mapped", "by"))); this.ChildrenOfType<OsuSpriteText>().All(spriteText => !containsAny(spriteText.Text.ToString(), "mapped", "by")));
@ -77,12 +69,12 @@ namespace osu.Game.Tests.Visual.Ranking
var mods = new Mod[] { ruleset.GetAutoplayMod() }; var mods = new Mod[] { ruleset.GetAutoplayMod() };
var beatmap = createTestBeatmap(new APIUser()); var beatmap = createTestBeatmap(new APIUser());
showPanel(new TestScoreInfo(ruleset.RulesetInfo) var score = TestResources.CreateTestScoreInfo(beatmap);
{
Mods = mods, score.Mods = mods;
BeatmapInfo = beatmap, score.Date = default;
Date = default,
}); showPanel(score);
}); });
AddAssert("play time not displayed", () => !this.ChildrenOfType<ExpandedPanelMiddleContent.PlayedOnText>().Any()); AddAssert("play time not displayed", () => !this.ChildrenOfType<ExpandedPanelMiddleContent.PlayedOnText>().Any());

View File

@ -5,8 +5,8 @@ using osu.Framework.Extensions.Color4Extensions;
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.Rulesets.Osu;
using osu.Game.Screens.Ranking.Expanded; using osu.Game.Screens.Ranking.Expanded;
using osu.Game.Tests.Resources;
using osuTK; using osuTK;
namespace osu.Game.Tests.Visual.Ranking namespace osu.Game.Tests.Visual.Ranking
@ -27,7 +27,7 @@ namespace osu.Game.Tests.Visual.Ranking
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
Colour = Color4Extensions.FromHex("#444"), Colour = Color4Extensions.FromHex("#444"),
}, },
new ExpandedPanelTopContent(new TestScoreInfo(new OsuRuleset().RulesetInfo).User), new ExpandedPanelTopContent(TestResources.CreateTestScoreInfo().User),
} }
}; };
} }

View File

@ -21,6 +21,7 @@ using osu.Game.Screens;
using osu.Game.Screens.Play; using osu.Game.Screens.Play;
using osu.Game.Screens.Ranking; using osu.Game.Screens.Ranking;
using osu.Game.Screens.Ranking.Statistics; using osu.Game.Screens.Ranking.Statistics;
using osu.Game.Tests.Resources;
using osuTK; using osuTK;
using osuTK.Input; using osuTK.Input;
@ -72,11 +73,10 @@ namespace osu.Game.Tests.Visual.Ranking
{ {
TestResultsScreen screen = null; TestResultsScreen screen = null;
var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) var score = TestResources.CreateTestScoreInfo();
{
Accuracy = accuracy, score.Accuracy = accuracy;
Rank = rank score.Rank = rank;
};
AddStep("load results", () => Child = new TestResultsContainer(screen = createResultsScreen(score))); AddStep("load results", () => Child = new TestResultsContainer(screen = createResultsScreen(score)));
AddUntilStep("wait for loaded", () => screen.IsLoaded); AddUntilStep("wait for loaded", () => screen.IsLoaded);
@ -204,7 +204,7 @@ namespace osu.Game.Tests.Visual.Ranking
{ {
DelayedFetchResultsScreen screen = null; DelayedFetchResultsScreen screen = null;
AddStep("load results", () => Child = new TestResultsContainer(screen = new DelayedFetchResultsScreen(new TestScoreInfo(new OsuRuleset().RulesetInfo), 3000))); AddStep("load results", () => Child = new TestResultsContainer(screen = new DelayedFetchResultsScreen(TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo), 3000)));
AddUntilStep("wait for loaded", () => screen.IsLoaded); AddUntilStep("wait for loaded", () => screen.IsLoaded);
AddStep("click expanded panel", () => AddStep("click expanded panel", () =>
{ {
@ -237,9 +237,9 @@ namespace osu.Game.Tests.Visual.Ranking
AddAssert("download button is enabled", () => screen.ChildrenOfType<DownloadButton>().Last().Enabled.Value); AddAssert("download button is enabled", () => screen.ChildrenOfType<DownloadButton>().Last().Enabled.Value);
} }
private TestResultsScreen createResultsScreen(ScoreInfo score = null) => new TestResultsScreen(score ?? new TestScoreInfo(new OsuRuleset().RulesetInfo)); private TestResultsScreen createResultsScreen(ScoreInfo score = null) => new TestResultsScreen(score ?? TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo));
private UnrankedSoloResultsScreen createUnrankedSoloResultsScreen() => new UnrankedSoloResultsScreen(new TestScoreInfo(new OsuRuleset().RulesetInfo)); private UnrankedSoloResultsScreen createUnrankedSoloResultsScreen() => new UnrankedSoloResultsScreen(TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo));
private class TestResultsContainer : Container private class TestResultsContainer : Container
{ {
@ -282,7 +282,7 @@ namespace osu.Game.Tests.Visual.Ranking
for (int i = 0; i < 20; i++) for (int i = 0; i < 20; i++)
{ {
var score = new TestScoreInfo(new OsuRuleset().RulesetInfo); var score = TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo);
score.TotalScore += 10 - i; score.TotalScore += 10 - i;
score.Hash = $"test{i}"; score.Hash = $"test{i}";
scores.Add(score); scores.Add(score);
@ -316,7 +316,7 @@ namespace osu.Game.Tests.Visual.Ranking
for (int i = 0; i < 20; i++) for (int i = 0; i < 20; i++)
{ {
var score = new TestScoreInfo(new OsuRuleset().RulesetInfo); var score = TestResources.CreateTestScoreInfo();
score.TotalScore += 10 - i; score.TotalScore += 10 - i;
scores.Add(score); scores.Add(score);
} }

View File

@ -3,10 +3,10 @@
using NUnit.Framework; using NUnit.Framework;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Game.Rulesets.Osu;
using osu.Game.Rulesets.Scoring; using osu.Game.Rulesets.Scoring;
using osu.Game.Scoring; using osu.Game.Scoring;
using osu.Game.Screens.Ranking; using osu.Game.Screens.Ranking;
using osu.Game.Tests.Resources;
namespace osu.Game.Tests.Visual.Ranking namespace osu.Game.Tests.Visual.Ranking
{ {
@ -17,7 +17,9 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestDRank() public void TestDRank()
{ {
var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) { Accuracy = 0.5, Rank = ScoreRank.D }; var score = TestResources.CreateTestScoreInfo();
score.Accuracy = 0.5;
score.Rank = ScoreRank.D;
addPanelStep(score); addPanelStep(score);
} }
@ -25,7 +27,9 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestCRank() public void TestCRank()
{ {
var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) { Accuracy = 0.75, Rank = ScoreRank.C }; var score = TestResources.CreateTestScoreInfo();
score.Accuracy = 0.75;
score.Rank = ScoreRank.C;
addPanelStep(score); addPanelStep(score);
} }
@ -33,7 +37,9 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestBRank() public void TestBRank()
{ {
var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) { Accuracy = 0.85, Rank = ScoreRank.B }; var score = TestResources.CreateTestScoreInfo();
score.Accuracy = 0.85;
score.Rank = ScoreRank.B;
addPanelStep(score); addPanelStep(score);
} }
@ -41,7 +47,9 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestARank() public void TestARank()
{ {
var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) { Accuracy = 0.925, Rank = ScoreRank.A }; var score = TestResources.CreateTestScoreInfo();
score.Accuracy = 0.925;
score.Rank = ScoreRank.A;
addPanelStep(score); addPanelStep(score);
} }
@ -49,7 +57,9 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestSRank() public void TestSRank()
{ {
var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) { Accuracy = 0.975, Rank = ScoreRank.S }; var score = TestResources.CreateTestScoreInfo();
score.Accuracy = 0.975;
score.Rank = ScoreRank.S;
addPanelStep(score); addPanelStep(score);
} }
@ -57,7 +67,9 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestAlmostSSRank() public void TestAlmostSSRank()
{ {
var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) { Accuracy = 0.9999, Rank = ScoreRank.S }; var score = TestResources.CreateTestScoreInfo();
score.Accuracy = 0.9999;
score.Rank = ScoreRank.S;
addPanelStep(score); addPanelStep(score);
} }
@ -65,7 +77,9 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestSSRank() public void TestSSRank()
{ {
var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) { Accuracy = 1, Rank = ScoreRank.X }; var score = TestResources.CreateTestScoreInfo();
score.Accuracy = 1;
score.Rank = ScoreRank.X;
addPanelStep(score); addPanelStep(score);
} }
@ -73,7 +87,9 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestAllHitResults() public void TestAllHitResults()
{ {
var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) { Statistics = { [HitResult.Perfect] = 350, [HitResult.Ok] = 200 } }; var score = TestResources.CreateTestScoreInfo();
score.Statistics[HitResult.Perfect] = 350;
score.Statistics[HitResult.Ok] = 200;
addPanelStep(score); addPanelStep(score);
} }
@ -81,7 +97,9 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestContractedPanel() public void TestContractedPanel()
{ {
var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) { Accuracy = 0.925, Rank = ScoreRank.A }; var score = TestResources.CreateTestScoreInfo();
score.Accuracy = 0.925;
score.Rank = ScoreRank.A;
addPanelStep(score, PanelState.Contracted); addPanelStep(score, PanelState.Contracted);
} }
@ -89,7 +107,9 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestExpandAndContract() public void TestExpandAndContract()
{ {
var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) { Accuracy = 0.925, Rank = ScoreRank.A }; var score = TestResources.CreateTestScoreInfo();
score.Accuracy = 0.925;
score.Rank = ScoreRank.A;
addPanelStep(score, PanelState.Contracted); addPanelStep(score, PanelState.Contracted);
AddWaitStep("wait for transition", 10); AddWaitStep("wait for transition", 10);

View File

@ -10,6 +10,7 @@ using osu.Framework.Utils;
using osu.Game.Rulesets.Osu; using osu.Game.Rulesets.Osu;
using osu.Game.Scoring; using osu.Game.Scoring;
using osu.Game.Screens.Ranking; using osu.Game.Screens.Ranking;
using osu.Game.Tests.Resources;
using osuTK.Input; using osuTK.Input;
namespace osu.Game.Tests.Visual.Ranking namespace osu.Game.Tests.Visual.Ranking
@ -29,14 +30,14 @@ namespace osu.Game.Tests.Visual.Ranking
{ {
createListStep(() => new ScorePanelList createListStep(() => new ScorePanelList
{ {
SelectedScore = { Value = new TestScoreInfo(new OsuRuleset().RulesetInfo) } SelectedScore = { Value = TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo) }
}); });
} }
[Test] [Test]
public void TestAddPanelAfterSelectingScore() public void TestAddPanelAfterSelectingScore()
{ {
var score = new TestScoreInfo(new OsuRuleset().RulesetInfo); var score = TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo);
createListStep(() => new ScorePanelList createListStep(() => new ScorePanelList
{ {
@ -52,7 +53,7 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestAddPanelBeforeSelectingScore() public void TestAddPanelBeforeSelectingScore()
{ {
var score = new TestScoreInfo(new OsuRuleset().RulesetInfo); var score = TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo);
createListStep(() => new ScorePanelList()); createListStep(() => new ScorePanelList());
@ -75,7 +76,7 @@ namespace osu.Game.Tests.Visual.Ranking
AddStep("add many scores", () => AddStep("add many scores", () =>
{ {
for (int i = 0; i < 20; i++) for (int i = 0; i < 20; i++)
list.AddScore(new TestScoreInfo(new OsuRuleset().RulesetInfo)); list.AddScore(TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo));
}); });
assertFirstPanelCentred(); assertFirstPanelCentred();
@ -84,7 +85,7 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestAddManyScoresAfterExpandedPanel() public void TestAddManyScoresAfterExpandedPanel()
{ {
var initialScore = new TestScoreInfo(new OsuRuleset().RulesetInfo); var initialScore = TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo);
createListStep(() => new ScorePanelList()); createListStep(() => new ScorePanelList());
@ -97,7 +98,7 @@ namespace osu.Game.Tests.Visual.Ranking
AddStep("add many scores", () => AddStep("add many scores", () =>
{ {
for (int i = 0; i < 20; i++) for (int i = 0; i < 20; i++)
list.AddScore(new TestScoreInfo(new OsuRuleset().RulesetInfo) { TotalScore = initialScore.TotalScore - i - 1 }); list.AddScore(createScoreForTotalScore(initialScore.TotalScore - i - 1));
}); });
assertScoreState(initialScore, true); assertScoreState(initialScore, true);
@ -107,7 +108,7 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestAddManyScoresBeforeExpandedPanel() public void TestAddManyScoresBeforeExpandedPanel()
{ {
var initialScore = new TestScoreInfo(new OsuRuleset().RulesetInfo); var initialScore = TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo);
createListStep(() => new ScorePanelList()); createListStep(() => new ScorePanelList());
@ -120,7 +121,7 @@ namespace osu.Game.Tests.Visual.Ranking
AddStep("add scores", () => AddStep("add scores", () =>
{ {
for (int i = 0; i < 20; i++) for (int i = 0; i < 20; i++)
list.AddScore(new TestScoreInfo(new OsuRuleset().RulesetInfo) { TotalScore = initialScore.TotalScore + i + 1 }); list.AddScore(createScoreForTotalScore(initialScore.TotalScore + i + 1));
}); });
assertScoreState(initialScore, true); assertScoreState(initialScore, true);
@ -130,7 +131,7 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestAddManyPanelsOnBothSidesOfExpandedPanel() public void TestAddManyPanelsOnBothSidesOfExpandedPanel()
{ {
var initialScore = new TestScoreInfo(new OsuRuleset().RulesetInfo); var initialScore = TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo);
createListStep(() => new ScorePanelList()); createListStep(() => new ScorePanelList());
@ -143,10 +144,10 @@ namespace osu.Game.Tests.Visual.Ranking
AddStep("add scores after", () => AddStep("add scores after", () =>
{ {
for (int i = 0; i < 20; i++) for (int i = 0; i < 20; i++)
list.AddScore(new TestScoreInfo(new OsuRuleset().RulesetInfo) { TotalScore = initialScore.TotalScore - i - 1 }); list.AddScore(createScoreForTotalScore(initialScore.TotalScore - i - 1));
for (int i = 0; i < 20; i++) for (int i = 0; i < 20; i++)
list.AddScore(new TestScoreInfo(new OsuRuleset().RulesetInfo) { TotalScore = initialScore.TotalScore + i + 1 }); list.AddScore(createScoreForTotalScore(initialScore.TotalScore + i + 1));
}); });
assertScoreState(initialScore, true); assertScoreState(initialScore, true);
@ -156,8 +157,8 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestSelectMultipleScores() public void TestSelectMultipleScores()
{ {
var firstScore = new TestScoreInfo(new OsuRuleset().RulesetInfo); var firstScore = TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo);
var secondScore = new TestScoreInfo(new OsuRuleset().RulesetInfo); var secondScore = TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo);
firstScore.UserString = "A"; firstScore.UserString = "A";
secondScore.UserString = "B"; secondScore.UserString = "B";
@ -190,7 +191,7 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestAddScoreImmediately() public void TestAddScoreImmediately()
{ {
var score = new TestScoreInfo(new OsuRuleset().RulesetInfo); var score = TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo);
createListStep(() => createListStep(() =>
{ {
@ -206,9 +207,14 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestKeyboardNavigation() public void TestKeyboardNavigation()
{ {
var lowestScore = new TestScoreInfo(new OsuRuleset().RulesetInfo) { MaxCombo = 100 }; var lowestScore = TestResources.CreateTestScoreInfo();
var middleScore = new TestScoreInfo(new OsuRuleset().RulesetInfo) { MaxCombo = 200 }; lowestScore.MaxCombo = 100;
var highestScore = new TestScoreInfo(new OsuRuleset().RulesetInfo) { MaxCombo = 300 };
var middleScore = TestResources.CreateTestScoreInfo();
middleScore.MaxCombo = 200;
var highestScore = TestResources.CreateTestScoreInfo();
highestScore.MaxCombo = 300;
createListStep(() => new ScorePanelList()); createListStep(() => new ScorePanelList());
@ -270,6 +276,13 @@ namespace osu.Game.Tests.Visual.Ranking
assertExpandedPanelCentred(); assertExpandedPanelCentred();
} }
private ScoreInfo createScoreForTotalScore(long totalScore)
{
var score = TestResources.CreateTestScoreInfo();
score.TotalScore = totalScore;
return score;
}
private void createListStep(Func<ScorePanelList> creationFunc) private void createListStep(Func<ScorePanelList> creationFunc)
{ {
AddStep("create list", () => Child = list = creationFunc().With(d => AddStep("create list", () => Child = list = creationFunc().With(d =>

View File

@ -11,6 +11,7 @@ using osu.Game.Scoring;
using osu.Game.Screens.Ranking.Statistics; using osu.Game.Screens.Ranking.Statistics;
using osu.Game.Rulesets.Osu.Objects; using osu.Game.Rulesets.Osu.Objects;
using osu.Game.Rulesets.Scoring; using osu.Game.Rulesets.Scoring;
using osu.Game.Tests.Resources;
using osuTK; using osuTK;
namespace osu.Game.Tests.Visual.Ranking namespace osu.Game.Tests.Visual.Ranking
@ -20,10 +21,8 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestScoreWithTimeStatistics() public void TestScoreWithTimeStatistics()
{ {
var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) var score = TestResources.CreateTestScoreInfo();
{ score.HitEvents = TestSceneHitEventTimingDistributionGraph.CreateDistributedHitEvents();
HitEvents = TestSceneHitEventTimingDistributionGraph.CreateDistributedHitEvents()
};
loadPanel(score); loadPanel(score);
} }
@ -31,10 +30,8 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestScoreWithPositionStatistics() public void TestScoreWithPositionStatistics()
{ {
var score = new TestScoreInfo(new OsuRuleset().RulesetInfo) var score = TestResources.CreateTestScoreInfo();
{ score.HitEvents = createPositionDistributedHitEvents();
HitEvents = createPositionDistributedHitEvents()
};
loadPanel(score); loadPanel(score);
} }
@ -42,7 +39,7 @@ namespace osu.Game.Tests.Visual.Ranking
[Test] [Test]
public void TestScoreWithoutStatistics() public void TestScoreWithoutStatistics()
{ {
loadPanel(new TestScoreInfo(new OsuRuleset().RulesetInfo)); loadPanel(TestResources.CreateTestScoreInfo(new OsuRuleset().RulesetInfo));
} }
[Test] [Test]

View File

@ -1,66 +0,0 @@
// 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.
using System;
using System.Linq;
using osu.Game.Online.API.Requests.Responses;
using osu.Game.Rulesets;
using osu.Game.Rulesets.Mods;
using osu.Game.Rulesets.Scoring;
using osu.Game.Scoring;
using osu.Game.Tests.Beatmaps;
namespace osu.Game.Tests
{
public class TestScoreInfo : ScoreInfo
{
public TestScoreInfo(RulesetInfo ruleset, bool excessMods = false)
{
User = new APIUser
{
Id = 2,
Username = "peppy",
CoverUrl = "https://osu.ppy.sh/images/headers/profile-covers/c3.jpg",
};
BeatmapInfo = new TestBeatmap(ruleset).BeatmapInfo;
Ruleset = ruleset;
RulesetID = ruleset.ID ?? 0;
Mods = excessMods
? ruleset.CreateInstance().CreateAllMods().ToArray()
: new Mod[] { new TestModHardRock(), new TestModDoubleTime() };
TotalScore = 2845370;
Accuracy = 0.95;
MaxCombo = 999;
Rank = ScoreRank.S;
Date = DateTimeOffset.Now;
Statistics[HitResult.Miss] = 1;
Statistics[HitResult.Meh] = 50;
Statistics[HitResult.Ok] = 100;
Statistics[HitResult.Good] = 200;
Statistics[HitResult.Great] = 300;
Statistics[HitResult.Perfect] = 320;
Statistics[HitResult.SmallTickHit] = 50;
Statistics[HitResult.SmallTickMiss] = 25;
Statistics[HitResult.LargeTickHit] = 100;
Statistics[HitResult.LargeTickMiss] = 50;
Statistics[HitResult.SmallBonus] = 10;
Statistics[HitResult.SmallBonus] = 50;
Position = 1;
}
private class TestModHardRock : ModHardRock
{
public override double ScoreMultiplier => 1;
}
private class TestModDoubleTime : ModDoubleTime
{
public override double ScoreMultiplier => 1;
}
}
}