Remove RoomTestScene inheritance from simple test scenes

This commit is contained in:
smoogipoo 2021-06-24 00:28:39 +09:00
parent b6555c10f8
commit c9ec4b9da4
9 changed files with 190 additions and 128 deletions

View File

@ -10,28 +10,28 @@ using osu.Game.Users;
namespace osu.Game.Tests.Visual.Multiplayer namespace osu.Game.Tests.Visual.Multiplayer
{ {
public class TestSceneLoungeRoomInfo : RoomTestScene public class TestSceneLoungeRoomInfo : OsuTestScene
{ {
private TestRoomContainer roomContainer;
[SetUp] [SetUp]
public new void Setup() => Schedule(() => public void Setup() => Schedule(() =>
{
Child = roomContainer = new TestRoomContainer
{ {
Child = new RoomInfo Child = new RoomInfo
{ {
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
Origin = Anchor.Centre, Origin = Anchor.Centre,
Width = 500 Width = 500
}
}; };
}); });
public override void SetUpSteps()
{
// Todo: Temp
}
[Test] [Test]
public void TestNonSelectedRoom() public void TestNonSelectedRoom()
{ {
AddStep("set null room", () => Room.RoomID.Value = null); AddStep("set null room", () => roomContainer.Room.RoomID.Value = null);
} }
[Test] [Test]
@ -39,11 +39,11 @@ namespace osu.Game.Tests.Visual.Multiplayer
{ {
AddStep("set open room", () => AddStep("set open room", () =>
{ {
Room.RoomID.Value = 0; roomContainer.Room.RoomID.Value = 0;
Room.Name.Value = "Room 0"; roomContainer.Room.Name.Value = "Room 0";
Room.Host.Value = new User { Username = "peppy", Id = 2 }; roomContainer.Room.Host.Value = new User { Username = "peppy", Id = 2 };
Room.EndDate.Value = DateTimeOffset.Now.AddMonths(1); roomContainer.Room.EndDate.Value = DateTimeOffset.Now.AddMonths(1);
Room.Status.Value = new RoomStatusOpen(); roomContainer.Room.Status.Value = new RoomStatusOpen();
}); });
} }
} }

View File

@ -15,7 +15,7 @@ using osuTK;
namespace osu.Game.Tests.Visual.Multiplayer namespace osu.Game.Tests.Visual.Multiplayer
{ {
public class TestSceneMatchBeatmapDetailArea : RoomTestScene public class TestSceneMatchBeatmapDetailArea : OsuTestScene
{ {
[Resolved] [Resolved]
private BeatmapManager beatmapManager { get; set; } private BeatmapManager beatmapManager { get; set; }
@ -23,8 +23,12 @@ namespace osu.Game.Tests.Visual.Multiplayer
[Resolved] [Resolved]
private RulesetStore rulesetStore { get; set; } private RulesetStore rulesetStore { get; set; }
private TestRoomContainer roomContainer;
[SetUp] [SetUp]
public new void Setup() => Schedule(() => public void Setup() => Schedule(() =>
{
Child = roomContainer = new TestRoomContainer
{ {
Child = new MatchBeatmapDetailArea Child = new MatchBeatmapDetailArea
{ {
@ -32,14 +36,15 @@ namespace osu.Game.Tests.Visual.Multiplayer
Origin = Anchor.Centre, Origin = Anchor.Centre,
Size = new Vector2(500), Size = new Vector2(500),
CreateNewItem = createNewItem CreateNewItem = createNewItem
}
}; };
}); });
private void createNewItem() private void createNewItem()
{ {
Room.Playlist.Add(new PlaylistItem roomContainer.Room.Playlist.Add(new PlaylistItem
{ {
ID = Room.Playlist.Count, ID = roomContainer.Room.Playlist.Count,
Beatmap = { Value = new TestBeatmap(new OsuRuleset().RulesetInfo).BeatmapInfo }, Beatmap = { Value = new TestBeatmap(new OsuRuleset().RulesetInfo).BeatmapInfo },
Ruleset = { Value = new OsuRuleset().RulesetInfo }, Ruleset = { Value = new OsuRuleset().RulesetInfo },
RequiredMods = RequiredMods =

View File

@ -11,17 +11,25 @@ using osu.Game.Users;
namespace osu.Game.Tests.Visual.Multiplayer namespace osu.Game.Tests.Visual.Multiplayer
{ {
public class TestSceneMatchHeader : RoomTestScene public class TestSceneMatchHeader : OsuTestScene
{ {
public TestSceneMatchHeader() private TestRoomContainer roomContainer;
{
Child = new Header();
}
[SetUp] [SetUp]
public new void Setup() => Schedule(() => public void Setup() => Schedule(() =>
{ {
Room.Playlist.Add(new PlaylistItem Child = roomContainer = new TestRoomContainer
{
Child = new Header()
};
});
[Test]
public void TestBasicRoom()
{
AddStep("set basic room", () =>
{
roomContainer.Room.Playlist.Add(new PlaylistItem
{ {
Beatmap = Beatmap =
{ {
@ -45,8 +53,9 @@ namespace osu.Game.Tests.Visual.Multiplayer
} }
}); });
Room.Name.Value = "A very awesome room"; roomContainer.Room.Name.Value = "A very awesome room";
Room.Host.Value = new User { Id = 2, Username = "peppy" }; roomContainer.Room.Host.Value = new User { Id = 2, Username = "peppy" };
}); });
} }
} }
}

View File

@ -2,72 +2,75 @@
// 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.Collections.Generic; using System.Collections.Generic;
using Newtonsoft.Json;
using NUnit.Framework; using NUnit.Framework;
using osu.Framework.Allocation; using osu.Framework.Allocation;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Game.Online.API; using osu.Game.Online.API;
using osu.Game.Online.API.Requests.Responses;
using osu.Game.Online.Rooms;
using osu.Game.Screens.OnlinePlay.Match.Components; using osu.Game.Screens.OnlinePlay.Match.Components;
using osu.Game.Users; using osu.Game.Users;
using osuTK; using osuTK;
namespace osu.Game.Tests.Visual.Multiplayer namespace osu.Game.Tests.Visual.Multiplayer
{ {
public class TestSceneMatchLeaderboard : RoomTestScene public class TestSceneMatchLeaderboard : OsuTestScene
{ {
protected override bool UseOnlineAPI => true; [BackgroundDependencyLoader]
private void load()
{
((DummyAPIAccess)API).HandleRequest = r =>
{
switch (r)
{
case GetRoomLeaderboardRequest leaderboardRequest:
leaderboardRequest.TriggerSuccess(new APILeaderboard
{
Leaderboard = new List<APIUserScoreAggregate>
{
new APIUserScoreAggregate
{
UserID = 2,
User = new User { Id = 2, Username = "peppy" },
TotalScore = 995533,
RoomID = 3,
CompletedBeatmaps = 1,
TotalAttempts = 6,
Accuracy = 0.9851
},
new APIUserScoreAggregate
{
UserID = 1040328,
User = new User { Id = 1040328, Username = "smoogipoo" },
TotalScore = 981100,
RoomID = 3,
CompletedBeatmaps = 1,
TotalAttempts = 9,
Accuracy = 0.937
}
}
});
return true;
}
public TestSceneMatchLeaderboard() return false;
};
}
[SetUp]
public void Setup() => Schedule(() =>
{ {
Add(new MatchLeaderboard Child = new TestRoomContainer
{
Room = { RoomID = { Value = 3 } },
Child = new MatchLeaderboard
{ {
Origin = Anchor.Centre, Origin = Anchor.Centre,
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
Size = new Vector2(550f, 450f), Size = new Vector2(550f, 450f),
Scope = MatchLeaderboardScope.Overall, Scope = MatchLeaderboardScope.Overall,
}
};
}); });
} }
[BackgroundDependencyLoader]
private void load(IAPIProvider api)
{
var req = new GetRoomScoresRequest();
req.Success += v => { };
req.Failure += _ => { };
api.Queue(req);
}
[SetUp]
public new void Setup() => Schedule(() =>
{
Room.RoomID.Value = 3;
});
private class GetRoomScoresRequest : APIRequest<List<RoomScore>>
{
protected override string Target => "rooms/3/leaderboard";
}
private class RoomScore
{
[JsonProperty("user")]
public User User { get; set; }
[JsonProperty("accuracy")]
public double Accuracy { get; set; }
[JsonProperty("total_score")]
public int TotalScore { get; set; }
[JsonProperty("pp")]
public double PP { get; set; }
[JsonProperty("attempts")]
public int TotalAttempts { get; set; }
[JsonProperty("completed")]
public int CompletedAttempts { get; set; }
}
}
} }

View File

@ -29,7 +29,7 @@ using osu.Game.Screens.Select;
namespace osu.Game.Tests.Visual.Multiplayer namespace osu.Game.Tests.Visual.Multiplayer
{ {
public class TestSceneMultiplayerMatchSongSelect : RoomTestScene public class TestSceneMultiplayerMatchSongSelect : ScreenTestScene
{ {
private BeatmapManager manager; private BeatmapManager manager;
private RulesetStore rulesets; private RulesetStore rulesets;

View File

@ -12,7 +12,7 @@ using osu.Game.Tests.Beatmaps;
namespace osu.Game.Tests.Visual.Multiplayer namespace osu.Game.Tests.Visual.Multiplayer
{ {
[HeadlessTest] [HeadlessTest]
public class TestSceneMultiplayerRoomManager : RoomTestScene public class TestSceneMultiplayerRoomManager : OsuTestScene
{ {
private TestMultiplayerRoomContainer roomContainer; private TestMultiplayerRoomContainer roomContainer;
private TestMultiplayerRoomManager roomManager => roomContainer.RoomManager; private TestMultiplayerRoomManager roomManager => roomContainer.RoomManager;

View File

@ -15,23 +15,25 @@ using osu.Game.Screens.OnlinePlay.Playlists;
namespace osu.Game.Tests.Visual.Playlists namespace osu.Game.Tests.Visual.Playlists
{ {
public class TestScenePlaylistsMatchSettingsOverlay : RoomTestScene public class TestScenePlaylistsMatchSettingsOverlay : OsuTestScene
{ {
[Cached(Type = typeof(IRoomManager))] [Cached(Type = typeof(IRoomManager))]
private TestRoomManager roomManager = new TestRoomManager(); private TestRoomManager roomManager = new TestRoomManager();
private TestRoomContainer roomContainer;
private TestRoomSettings settings; private TestRoomSettings settings;
[SetUp] [SetUp]
public new void Setup() => Schedule(() => public void Setup() => Schedule(() =>
{ {
settings = new TestRoomSettings Child = roomContainer = new TestRoomContainer
{
Child = settings = new TestRoomSettings
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
State = { Value = Visibility.Visible } State = { Value = Visibility.Visible }
}
}; };
Child = settings;
}); });
[Test] [Test]
@ -39,19 +41,19 @@ namespace osu.Game.Tests.Visual.Playlists
{ {
AddStep("clear name and beatmap", () => AddStep("clear name and beatmap", () =>
{ {
Room.Name.Value = ""; roomContainer.Room.Name.Value = "";
Room.Playlist.Clear(); roomContainer.Room.Playlist.Clear();
}); });
AddAssert("button disabled", () => !settings.ApplyButton.Enabled.Value); AddAssert("button disabled", () => !settings.ApplyButton.Enabled.Value);
AddStep("set name", () => Room.Name.Value = "Room name"); AddStep("set name", () => roomContainer.Room.Name.Value = "Room name");
AddAssert("button disabled", () => !settings.ApplyButton.Enabled.Value); AddAssert("button disabled", () => !settings.ApplyButton.Enabled.Value);
AddStep("set beatmap", () => Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = CreateBeatmap(Ruleset.Value).BeatmapInfo } })); AddStep("set beatmap", () => roomContainer.Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = CreateBeatmap(Ruleset.Value).BeatmapInfo } }));
AddAssert("button enabled", () => settings.ApplyButton.Enabled.Value); AddAssert("button enabled", () => settings.ApplyButton.Enabled.Value);
AddStep("clear name", () => Room.Name.Value = ""); AddStep("clear name", () => roomContainer.Room.Name.Value = "");
AddAssert("button disabled", () => !settings.ApplyButton.Enabled.Value); AddAssert("button disabled", () => !settings.ApplyButton.Enabled.Value);
} }
@ -67,7 +69,7 @@ namespace osu.Game.Tests.Visual.Playlists
{ {
settings.NameField.Current.Value = expected_name; settings.NameField.Current.Value = expected_name;
settings.DurationField.Current.Value = expectedDuration; settings.DurationField.Current.Value = expectedDuration;
Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = CreateBeatmap(Ruleset.Value).BeatmapInfo } }); roomContainer.Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = CreateBeatmap(Ruleset.Value).BeatmapInfo } });
roomManager.CreateRequested = r => roomManager.CreateRequested = r =>
{ {
@ -88,8 +90,8 @@ namespace osu.Game.Tests.Visual.Playlists
AddStep("setup", () => AddStep("setup", () =>
{ {
Room.Name.Value = "Test Room"; roomContainer.Room.Name.Value = "Test Room";
Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = CreateBeatmap(Ruleset.Value).BeatmapInfo } }); roomContainer.Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = CreateBeatmap(Ruleset.Value).BeatmapInfo } });
fail = true; fail = true;
roomManager.CreateRequested = _ => !fail; roomManager.CreateRequested = _ => !fail;

View File

@ -8,16 +8,21 @@ using osu.Game.Users;
namespace osu.Game.Tests.Visual.Playlists namespace osu.Game.Tests.Visual.Playlists
{ {
public class TestScenePlaylistsParticipantsList : RoomTestScene public class TestScenePlaylistsParticipantsList : OsuTestScene
{ {
private TestRoomContainer roomContainer;
[SetUp] [SetUp]
public new void Setup() => Schedule(() => public void Setup() => Schedule(() =>
{ {
Room.RoomID.Value = 7; Child = roomContainer = new TestRoomContainer
{
Room = { RoomID = { Value = 7 } }
};
for (int i = 0; i < 50; i++) for (int i = 0; i < 50; i++)
{ {
Room.RecentParticipants.Add(new User roomContainer.Room.RecentParticipants.Add(new User
{ {
Username = "peppy", Username = "peppy",
Statistics = new UserStatistics { GlobalRank = 1234 }, Statistics = new UserStatistics { GlobalRank = 1234 },
@ -31,7 +36,7 @@ namespace osu.Game.Tests.Visual.Playlists
{ {
AddStep("create component", () => AddStep("create component", () =>
{ {
Child = new ParticipantsDisplay(Direction.Horizontal) roomContainer.Child = new ParticipantsDisplay(Direction.Horizontal)
{ {
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
Origin = Anchor.Centre, Origin = Anchor.Centre,
@ -45,7 +50,7 @@ namespace osu.Game.Tests.Visual.Playlists
{ {
AddStep("create component", () => AddStep("create component", () =>
{ {
Child = new ParticipantsDisplay(Direction.Vertical) roomContainer.Child = new ParticipantsDisplay(Direction.Vertical)
{ {
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
Origin = Anchor.Centre, Origin = Anchor.Centre,

View File

@ -0,0 +1,38 @@
// 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 osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Online.Rooms;
namespace osu.Game.Tests.Visual
{
/// <summary>
/// Contains a <see cref="Room"/> that is resolvable by components in test scenes.
/// </summary>
public class TestRoomContainer : Container
{
/// <summary>
/// The cached <see cref="Room"/>.
/// </summary>
public readonly Room Room = new Room();
[Cached]
private readonly Bindable<Room> roomBindable;
public TestRoomContainer()
{
RelativeSizeAxes = Axes.Both;
roomBindable = new Bindable<Room>(Room);
}
protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent)
{
var dependencies = new CachedModelDependencyContainer<Room>(base.CreateChildDependencies(parent));
dependencies.Model.Value = Room;
return dependencies;
}
}
}