mirror of
https://github.com/osukey/osukey.git
synced 2025-07-01 16:29:58 +09:00
Fix another test scene
This commit is contained in:
@ -1,10 +1,13 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
// 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.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
|
using System;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Online.Rooms;
|
using osu.Game.Online.Rooms;
|
||||||
|
using osu.Game.Screens.OnlinePlay.Components;
|
||||||
|
using osu.Game.Tests.Beatmaps;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Multiplayer
|
namespace osu.Game.Tests.Visual.Multiplayer
|
||||||
{
|
{
|
||||||
@ -21,15 +24,15 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
createRoomManager().With(d => d.OnLoadComplete += _ =>
|
createRoomManager().With(d => d.OnLoadComplete += _ =>
|
||||||
{
|
{
|
||||||
roomManager.CreateRoom(new Room { Name = { Value = "1" } });
|
roomManager.CreateRoom(createRoom(r => r.Name.Value = "1"));
|
||||||
roomManager.PartRoom();
|
roomManager.PartRoom();
|
||||||
roomManager.CreateRoom(new Room { Name = { Value = "2" } });
|
roomManager.CreateRoom(createRoom(r => r.Name.Value = "2"));
|
||||||
roomManager.PartRoom();
|
roomManager.PartRoom();
|
||||||
roomManager.ClearRooms();
|
roomManager.ClearRooms();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
AddAssert("manager polled for rooms", () => roomManager.Rooms.Count == 2);
|
AddAssert("manager polled for rooms", () => ((RoomManager)roomManager).Rooms.Count == 2);
|
||||||
AddAssert("initial rooms received", () => roomManager.InitialRoomsReceived.Value);
|
AddAssert("initial rooms received", () => roomManager.InitialRoomsReceived.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -40,16 +43,16 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
createRoomManager().With(d => d.OnLoadComplete += _ =>
|
createRoomManager().With(d => d.OnLoadComplete += _ =>
|
||||||
{
|
{
|
||||||
roomManager.CreateRoom(new Room());
|
roomManager.CreateRoom(createRoom());
|
||||||
roomManager.PartRoom();
|
roomManager.PartRoom();
|
||||||
roomManager.CreateRoom(new Room());
|
roomManager.CreateRoom(createRoom());
|
||||||
roomManager.PartRoom();
|
roomManager.PartRoom();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
AddStep("disconnect", () => roomContainer.Client.Disconnect());
|
AddStep("disconnect", () => roomContainer.Client.Disconnect());
|
||||||
|
|
||||||
AddAssert("rooms cleared", () => roomManager.Rooms.Count == 0);
|
AddAssert("rooms cleared", () => ((RoomManager)roomManager).Rooms.Count == 0);
|
||||||
AddAssert("initial rooms not received", () => !roomManager.InitialRoomsReceived.Value);
|
AddAssert("initial rooms not received", () => !roomManager.InitialRoomsReceived.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,9 +63,9 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
createRoomManager().With(d => d.OnLoadComplete += _ =>
|
createRoomManager().With(d => d.OnLoadComplete += _ =>
|
||||||
{
|
{
|
||||||
roomManager.CreateRoom(new Room());
|
roomManager.CreateRoom(createRoom());
|
||||||
roomManager.PartRoom();
|
roomManager.PartRoom();
|
||||||
roomManager.CreateRoom(new Room());
|
roomManager.CreateRoom(createRoom());
|
||||||
roomManager.PartRoom();
|
roomManager.PartRoom();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -70,7 +73,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
AddStep("disconnect", () => roomContainer.Client.Disconnect());
|
AddStep("disconnect", () => roomContainer.Client.Disconnect());
|
||||||
AddStep("connect", () => roomContainer.Client.Connect());
|
AddStep("connect", () => roomContainer.Client.Connect());
|
||||||
|
|
||||||
AddAssert("manager polled for rooms", () => roomManager.Rooms.Count == 2);
|
AddAssert("manager polled for rooms", () => ((RoomManager)roomManager).Rooms.Count == 2);
|
||||||
AddAssert("initial rooms received", () => roomManager.InitialRoomsReceived.Value);
|
AddAssert("initial rooms received", () => roomManager.InitialRoomsReceived.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,12 +84,12 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
createRoomManager().With(d => d.OnLoadComplete += _ =>
|
createRoomManager().With(d => d.OnLoadComplete += _ =>
|
||||||
{
|
{
|
||||||
roomManager.CreateRoom(new Room());
|
roomManager.CreateRoom(createRoom());
|
||||||
roomManager.ClearRooms();
|
roomManager.ClearRooms();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
AddAssert("manager not polled for rooms", () => roomManager.Rooms.Count == 0);
|
AddAssert("manager not polled for rooms", () => ((RoomManager)roomManager).Rooms.Count == 0);
|
||||||
AddAssert("initial rooms not received", () => !roomManager.InitialRoomsReceived.Value);
|
AddAssert("initial rooms not received", () => !roomManager.InitialRoomsReceived.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,7 +100,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
createRoomManager().With(d => d.OnLoadComplete += _ =>
|
createRoomManager().With(d => d.OnLoadComplete += _ =>
|
||||||
{
|
{
|
||||||
roomManager.CreateRoom(new Room());
|
roomManager.CreateRoom(createRoom());
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -111,7 +114,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
createRoomManager().With(d => d.OnLoadComplete += _ =>
|
createRoomManager().With(d => d.OnLoadComplete += _ =>
|
||||||
{
|
{
|
||||||
roomManager.CreateRoom(new Room());
|
roomManager.CreateRoom(createRoom());
|
||||||
roomManager.PartRoom();
|
roomManager.PartRoom();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -126,7 +129,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
createRoomManager().With(d => d.OnLoadComplete += _ =>
|
createRoomManager().With(d => d.OnLoadComplete += _ =>
|
||||||
{
|
{
|
||||||
var r = new Room();
|
var r = createRoom();
|
||||||
roomManager.CreateRoom(r);
|
roomManager.CreateRoom(r);
|
||||||
roomManager.PartRoom();
|
roomManager.PartRoom();
|
||||||
roomManager.JoinRoom(r);
|
roomManager.JoinRoom(r);
|
||||||
@ -136,6 +139,21 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
AddUntilStep("multiplayer room joined", () => roomContainer.Client.Room != null);
|
AddUntilStep("multiplayer room joined", () => roomContainer.Client.Room != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Room createRoom(Action<Room> initFunc = null)
|
||||||
|
{
|
||||||
|
var room = new Room();
|
||||||
|
|
||||||
|
room.Name.Value = "test room";
|
||||||
|
room.Playlist.Add(new PlaylistItem
|
||||||
|
{
|
||||||
|
Beatmap = { Value = new TestBeatmap(Ruleset.Value).BeatmapInfo },
|
||||||
|
Ruleset = { Value = Ruleset.Value }
|
||||||
|
});
|
||||||
|
|
||||||
|
initFunc?.Invoke(room);
|
||||||
|
return room;
|
||||||
|
}
|
||||||
|
|
||||||
private TestMultiplayerRoomManager createRoomManager()
|
private TestMultiplayerRoomManager createRoomManager()
|
||||||
{
|
{
|
||||||
Child = roomContainer = new TestMultiplayerRoomContainer
|
Child = roomContainer = new TestMultiplayerRoomContainer
|
||||||
|
@ -28,12 +28,16 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
[Resolved]
|
[Resolved]
|
||||||
private IAPIProvider api { get; set; } = null!;
|
private IAPIProvider api { get; set; } = null!;
|
||||||
|
|
||||||
[Resolved]
|
|
||||||
private Room apiRoom { get; set; } = null!;
|
|
||||||
|
|
||||||
[Resolved]
|
[Resolved]
|
||||||
private BeatmapManager beatmaps { get; set; } = null!;
|
private BeatmapManager beatmaps { get; set; } = null!;
|
||||||
|
|
||||||
|
private readonly TestMultiplayerRoomManager roomManager;
|
||||||
|
|
||||||
|
public TestMultiplayerClient(TestMultiplayerRoomManager roomManager)
|
||||||
|
{
|
||||||
|
this.roomManager = roomManager;
|
||||||
|
}
|
||||||
|
|
||||||
public void Connect() => isConnected.Value = true;
|
public void Connect() => isConnected.Value = true;
|
||||||
|
|
||||||
public void Disconnect() => isConnected.Value = false;
|
public void Disconnect() => isConnected.Value = false;
|
||||||
@ -98,7 +102,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
|
|
||||||
protected override Task<MultiplayerRoom> JoinRoom(long roomId)
|
protected override Task<MultiplayerRoom> JoinRoom(long roomId)
|
||||||
{
|
{
|
||||||
Debug.Assert(apiRoom != null);
|
var apiRoom = roomManager.Rooms.Single(r => r.RoomID.Value == roomId);
|
||||||
|
|
||||||
var user = new MultiplayerRoomUser(api.LocalUser.Value.Id)
|
var user = new MultiplayerRoomUser(api.LocalUser.Value.Id)
|
||||||
{
|
{
|
||||||
@ -178,8 +182,8 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
protected override Task<BeatmapSetInfo> GetOnlineBeatmapSet(int beatmapId, CancellationToken cancellationToken = default)
|
protected override Task<BeatmapSetInfo> GetOnlineBeatmapSet(int beatmapId, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
Debug.Assert(Room != null);
|
Debug.Assert(Room != null);
|
||||||
Debug.Assert(apiRoom != null);
|
|
||||||
|
|
||||||
|
var apiRoom = roomManager.Rooms.Single(r => r.RoomID.Value == Room.RoomID);
|
||||||
var set = apiRoom.Playlist.FirstOrDefault(p => p.BeatmapID == beatmapId)?.Beatmap.Value.BeatmapSet
|
var set = apiRoom.Playlist.FirstOrDefault(p => p.BeatmapID == beatmapId)?.Beatmap.Value.BeatmapSet
|
||||||
?? beatmaps.QueryBeatmap(b => b.OnlineBeatmapID == beatmapId)?.BeatmapSet;
|
?? beatmaps.QueryBeatmap(b => b.OnlineBeatmapID == beatmapId)?.BeatmapSet;
|
||||||
|
|
||||||
|
@ -32,11 +32,15 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both;
|
RelativeSizeAxes = Axes.Both;
|
||||||
|
|
||||||
|
RoomManager = new TestMultiplayerRoomManager();
|
||||||
|
Client = new TestMultiplayerClient(RoomManager);
|
||||||
|
OngoingOperationTracker = new OngoingOperationTracker();
|
||||||
|
|
||||||
AddRangeInternal(new Drawable[]
|
AddRangeInternal(new Drawable[]
|
||||||
{
|
{
|
||||||
Client = new TestMultiplayerClient(),
|
Client,
|
||||||
RoomManager = new TestMultiplayerRoomManager(),
|
RoomManager,
|
||||||
OngoingOperationTracker = new OngoingOperationTracker(),
|
OngoingOperationTracker,
|
||||||
content = new Container { RelativeSizeAxes = Axes.Both }
|
content = new Container { RelativeSizeAxes = Axes.Both }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
[Cached]
|
[Cached]
|
||||||
public readonly Bindable<FilterCriteria> Filter = new Bindable<FilterCriteria>(new FilterCriteria());
|
public readonly Bindable<FilterCriteria> Filter = new Bindable<FilterCriteria>(new FilterCriteria());
|
||||||
|
|
||||||
private readonly List<Room> rooms = new List<Room>();
|
public new readonly List<Room> Rooms = new List<Room>();
|
||||||
|
|
||||||
protected override void LoadComplete()
|
protected override void LoadComplete()
|
||||||
{
|
{
|
||||||
@ -50,7 +50,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
for (int i = 0; i < createdRoom.Playlist.Count; i++)
|
for (int i = 0; i < createdRoom.Playlist.Count; i++)
|
||||||
createdRoom.Playlist[i].ID = currentPlaylistItemId++;
|
createdRoom.Playlist[i].ID = currentPlaylistItemId++;
|
||||||
|
|
||||||
rooms.Add(createdRoom);
|
Rooms.Add(createdRoom);
|
||||||
createRoomRequest.TriggerSuccess(createdRoom);
|
createRoomRequest.TriggerSuccess(createdRoom);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
case GetRoomsRequest getRoomsRequest:
|
case GetRoomsRequest getRoomsRequest:
|
||||||
var roomsWithoutParticipants = new List<Room>();
|
var roomsWithoutParticipants = new List<Room>();
|
||||||
|
|
||||||
foreach (var r in rooms)
|
foreach (var r in Rooms)
|
||||||
{
|
{
|
||||||
var newRoom = new Room();
|
var newRoom = new Room();
|
||||||
|
|
||||||
@ -79,7 +79,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case GetRoomRequest getRoomRequest:
|
case GetRoomRequest getRoomRequest:
|
||||||
getRoomRequest.TriggerSuccess(rooms.Single(r => r.RoomID.Value == getRoomRequest.RoomId));
|
getRoomRequest.TriggerSuccess(Rooms.Single(r => r.RoomID.Value == getRoomRequest.RoomId));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GetBeatmapSetRequest getBeatmapSetRequest:
|
case GetBeatmapSetRequest getBeatmapSetRequest:
|
||||||
|
Reference in New Issue
Block a user