1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-07 03:17:28 +08:00
osu-lazer/osu.Game.Tests/Visual/TestCaseRoomSettings.cs

118 lines
4.2 KiB
C#
Raw Normal View History

2018-06-06 11:29:52 +08:00
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using NUnit.Framework;
using osu.Framework.Graphics;
2018-06-07 10:30:17 +08:00
using osu.Game.Graphics.UserInterface;
using osu.Game.Online.Multiplayer;
2018-06-07 10:30:17 +08:00
using osu.Game.Screens.Multi.Screens.Match.Settings;
using OpenTK.Input;
2018-06-06 11:29:52 +08:00
namespace osu.Game.Tests.Visual
{
[TestFixture]
2018-06-07 10:30:17 +08:00
public class TestCaseRoomSettings : ManualInputManagerTestCase
2018-06-06 11:29:52 +08:00
{
2018-06-07 10:30:17 +08:00
private readonly Room room;
private readonly TestRoomSettingsOverlay overlay;
2018-06-06 11:29:52 +08:00
public TestCaseRoomSettings()
{
2018-06-07 10:30:17 +08:00
room = new Room
{
Name = { Value = "One Testing Room" },
Availability = { Value = RoomAvailability.Public },
Type = { Value = new GameTypeTeamVersus() },
MaxParticipants = { Value = 10 },
};
2018-06-06 11:29:52 +08:00
2018-06-07 10:30:17 +08:00
Add(overlay = new TestRoomSettingsOverlay(room)
2018-06-06 11:29:52 +08:00
{
RelativeSizeAxes = Axes.Both,
Height = 0.75f,
});
2018-06-07 10:30:17 +08:00
AddStep(@"show", overlay.Show);
assertAll();
AddStep(@"set name", () => overlay.CurrentName = @"Two Testing Room");
AddStep(@"set max", () => overlay.CurrentMaxParticipants = null);
AddStep(@"set availability", () => overlay.CurrentAvailability = RoomAvailability.InviteOnly);
AddStep(@"set type", () => overlay.CurrentType = new GameTypeTagTeam());
apply();
assertAll();
AddStep(@"show", overlay.Show);
AddStep(@"set room name", () => room.Name.Value = @"Room Changed Name!");
AddStep(@"set room availability", () => room.Availability.Value = RoomAvailability.Public);
AddStep(@"set room type", () => room.Type.Value = new GameTypeTag());
AddStep(@"set room max", () => room.MaxParticipants.Value = 100);
assertAll();
AddStep(@"set name", () => overlay.CurrentName = @"Unsaved Testing Room");
AddStep(@"set max", () => overlay.CurrentMaxParticipants = 20);
AddStep(@"set availability", () => overlay.CurrentAvailability = RoomAvailability.FriendsOnly);
AddStep(@"set type", () => overlay.CurrentType = new GameTypeVersus());
AddStep(@"hide", overlay.Hide);
AddWaitStep(5);
AddStep(@"show", overlay.Show);
assertAll();
AddStep(@"hide", overlay.Hide);
}
private void apply()
{
AddStep(@"apply", () =>
{
InputManager.MoveMouseTo(overlay.ApplyButton);
InputManager.Click(MouseButton.Left);
});
}
private void assertAll()
{
AddAssert(@"name == room name", () => overlay.CurrentName == room.Name.Value);
AddAssert(@"max == room max", () => overlay.CurrentMaxParticipants == room.MaxParticipants.Value);
AddAssert(@"availability == room availability", () => overlay.CurrentAvailability == room.Availability.Value);
AddAssert(@"type == room type", () => Equals(overlay.CurrentType, room.Type.Value));
}
private class TestRoomSettingsOverlay : RoomSettingsOverlay
{
public string CurrentName
{
get => Name.Text;
set => Name.Text = value;
}
public int? CurrentMaxParticipants
{
get
{
int max;
if (int.TryParse(MaxParticipants.Text, out max))
return max;
return null;
}
set => MaxParticipants.Text = value?.ToString();
}
public RoomAvailability CurrentAvailability
{
get => Availability.Current.Value;
set => Availability.Current.Value = value;
}
public GameType CurrentType
{
get => Type.Current.Value;
set => Type.Current.Value = value;
}
public TriangleButton ApplyButton => Apply;
public TestRoomSettingsOverlay(Room room) : base(room)
{
}
2018-06-06 11:29:52 +08:00
}
}
}