Add tests.

This commit is contained in:
Lucas A 2020-08-03 16:00:10 +02:00
parent fe97d472df
commit 25ebb8619d
2 changed files with 62 additions and 3 deletions

View File

@ -0,0 +1,54 @@
// 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 NUnit.Framework;
using osu.Framework.Allocation;
using osu.Game.Configuration;
using osu.Game.Overlays;
using osu.Game.Rulesets;
namespace osu.Game.Tests.Visual.Gameplay
{
public class TestSceneOverlayActivation : OsuPlayerTestScene
{
private OverlayTestPlayer testPlayer;
[Resolved]
private OsuConfigManager mng { get; set; }
public override void SetUpSteps()
{
AddStep("disable overlay activation during gameplay", () => mng.Set(OsuSetting.GameplayDisableOverlayActivation, true));
base.SetUpSteps();
}
[Test]
public void TestGameplayOverlayActivationSetting()
{
AddAssert("activation mode is disabled", () => testPlayer.OverlayActivationMode == OverlayActivation.Disabled);
}
[Test]
public void TestGameplayOverlayActivationPaused()
{
AddUntilStep("activation mode is disabled", () => testPlayer.OverlayActivationMode == OverlayActivation.Disabled);
AddStep("pause gameplay", () => testPlayer.Pause());
AddUntilStep("activation mode is user triggered", () => testPlayer.OverlayActivationMode == OverlayActivation.UserTriggered);
}
[Test]
public void TestGameplayOverlayActivationReplayLoaded()
{
AddAssert("activation mode is disabled", () => testPlayer.OverlayActivationMode == OverlayActivation.Disabled);
AddStep("load a replay", () => testPlayer.DrawableRuleset.HasReplayLoaded.Value = true);
AddAssert("activation mode is user triggered", () => testPlayer.OverlayActivationMode == OverlayActivation.UserTriggered);
}
protected override TestPlayer CreatePlayer(Ruleset ruleset) => testPlayer = new OverlayTestPlayer();
private class OverlayTestPlayer : TestPlayer
{
public new OverlayActivation OverlayActivationMode => base.OverlayActivationMode.Value;
}
}
}

View File

@ -79,7 +79,7 @@ public class Player : ScreenWithBeatmapBackground
[Resolved]
private IAPIProvider api { get; set; }
[Resolved]
[Resolved(CanBeNull = true)]
private OsuGame game { get; set; }
private SampleChannel sampleRestart;
@ -90,6 +90,8 @@ public class Player : ScreenWithBeatmapBackground
private SkipOverlay skipOverlay;
protected readonly Bindable<OverlayActivation> OverlayActivationMode = new Bindable<OverlayActivation>(OverlayActivation.Disabled);
protected ScoreProcessor ScoreProcessor { get; private set; }
protected HealthProcessor HealthProcessor { get; private set; }
@ -203,12 +205,15 @@ private void load(AudioManager audio, OsuConfigManager config)
skipOverlay.Hide();
}
if (game != null)
OverlayActivationMode.BindTo(game.OverlayActivationMode);
gameplayOverlaysDisabled.ValueChanged += disabled =>
{
if (DrawableRuleset.HasReplayLoaded.Value)
game.OverlayActivationMode.Value = OverlayActivation.UserTriggered;
OverlayActivationMode.Value = OverlayActivation.UserTriggered;
else
game.OverlayActivationMode.Value = disabled.NewValue && !DrawableRuleset.IsPaused.Value ? OverlayActivation.Disabled : OverlayActivation.UserTriggered;
OverlayActivationMode.Value = disabled.NewValue && !DrawableRuleset.IsPaused.Value ? OverlayActivation.Disabled : OverlayActivation.UserTriggered;
};
DrawableRuleset.IsPaused.BindValueChanged(_ => gameplayOverlaysDisabled.TriggerChange());
DrawableRuleset.HasReplayLoaded.BindValueChanged(_ => gameplayOverlaysDisabled.TriggerChange());