266 lines
8.9 KiB
C#
266 lines
8.9 KiB
C#
using NUnit.Framework;
|
|
using SepCore.InputModule;
|
|
using SepCore.InputModule.Runtime;
|
|
using UnityEngine;
|
|
using UnityEngine.InputSystem;
|
|
|
|
namespace SepCore.InputModule.Tests
|
|
{
|
|
public class InputModuleComponentContextTests
|
|
{
|
|
private GameObject _gameObject;
|
|
private InputModuleComponent _component;
|
|
private InputActionAsset _asset;
|
|
|
|
[SetUp]
|
|
public void SetUp()
|
|
{
|
|
_gameObject = new GameObject("InputModuleTest");
|
|
_component = _gameObject.AddComponent<InputModuleComponent>();
|
|
}
|
|
|
|
[TearDown]
|
|
public void TearDown()
|
|
{
|
|
Object.DestroyImmediate(_gameObject);
|
|
}
|
|
|
|
private void InitializeWithDefaultActions()
|
|
{
|
|
_component.OnInit();
|
|
_asset = _component.RuntimeActions;
|
|
}
|
|
|
|
private InputActionMap FindMap(InputContextId contextId)
|
|
{
|
|
return _asset.FindActionMap(contextId.ToString(), throwIfNotFound: false);
|
|
}
|
|
|
|
[Test]
|
|
public void AfterInitOnlyGlobalMapIsEnabled()
|
|
{
|
|
InitializeWithDefaultActions();
|
|
|
|
InputActionMap globalMap = FindMap(InputContextId.Global);
|
|
InputActionMap uiMap = FindMap(InputContextId.UI);
|
|
InputActionMap geMap = FindMap(InputContextId.GameplayExplore);
|
|
|
|
Assert.That(globalMap, Is.Not.Null);
|
|
Assert.That(uiMap, Is.Not.Null);
|
|
Assert.That(geMap, Is.Not.Null);
|
|
|
|
Assert.That(globalMap.enabled, Is.True);
|
|
Assert.That(uiMap.enabled, Is.False);
|
|
Assert.That(geMap.enabled, Is.False);
|
|
}
|
|
|
|
[Test]
|
|
public void SetContextEnablesTargetMapAndGlobal()
|
|
{
|
|
InitializeWithDefaultActions();
|
|
_component.SetContext(InputContextId.UI);
|
|
|
|
InputActionMap globalMap = FindMap(InputContextId.Global);
|
|
InputActionMap uiMap = FindMap(InputContextId.UI);
|
|
InputActionMap geMap = FindMap(InputContextId.GameplayExplore);
|
|
|
|
Assert.That(globalMap.enabled, Is.True);
|
|
Assert.That(uiMap.enabled, Is.True);
|
|
Assert.That(geMap.enabled, Is.False);
|
|
}
|
|
|
|
[Test]
|
|
public void SetContextSwitchDisablesPreviousMap()
|
|
{
|
|
InitializeWithDefaultActions();
|
|
_component.SetContext(InputContextId.UI);
|
|
|
|
InputActionMap uiMap = FindMap(InputContextId.UI);
|
|
Assert.That(uiMap.enabled, Is.True);
|
|
|
|
_component.SetContext(InputContextId.GameplayExplore);
|
|
|
|
InputActionMap geMap = FindMap(InputContextId.GameplayExplore);
|
|
Assert.That(uiMap.enabled, Is.False);
|
|
Assert.That(geMap.enabled, Is.True);
|
|
}
|
|
|
|
[Test]
|
|
public void PushContextOnlyEnablesTopmostMap()
|
|
{
|
|
InitializeWithDefaultActions();
|
|
_component.SetContext(InputContextId.UI);
|
|
_component.PushContext(InputContextId.GameplayExplore);
|
|
|
|
InputActionMap globalMap = FindMap(InputContextId.Global);
|
|
InputActionMap uiMap = FindMap(InputContextId.UI);
|
|
InputActionMap geMap = FindMap(InputContextId.GameplayExplore);
|
|
|
|
Assert.That(globalMap.enabled, Is.True);
|
|
Assert.That(uiMap.enabled, Is.False);
|
|
Assert.That(geMap.enabled, Is.True);
|
|
}
|
|
|
|
[Test]
|
|
public void PopContextRestoresPreviousMapState()
|
|
{
|
|
InitializeWithDefaultActions();
|
|
_component.SetContext(InputContextId.UI);
|
|
_component.PushContext(InputContextId.GameplayExplore);
|
|
|
|
InputActionMap geMap = FindMap(InputContextId.GameplayExplore);
|
|
Assert.That(geMap.enabled, Is.True);
|
|
|
|
_component.PopContext();
|
|
|
|
InputActionMap uiMap = FindMap(InputContextId.UI);
|
|
Assert.That(geMap.enabled, Is.False);
|
|
Assert.That(uiMap.enabled, Is.True);
|
|
}
|
|
|
|
[Test]
|
|
public void ClearContextsOnlyGlobalRemainsEnabled()
|
|
{
|
|
InitializeWithDefaultActions();
|
|
_component.SetContext(InputContextId.UI);
|
|
_component.PushContext(InputContextId.GameplayExplore);
|
|
|
|
_component.ClearContexts();
|
|
|
|
InputActionMap globalMap = FindMap(InputContextId.Global);
|
|
InputActionMap uiMap = FindMap(InputContextId.UI);
|
|
InputActionMap geMap = FindMap(InputContextId.GameplayExplore);
|
|
|
|
Assert.That(globalMap.enabled, Is.True);
|
|
Assert.That(uiMap.enabled, Is.False);
|
|
Assert.That(geMap.enabled, Is.False);
|
|
}
|
|
|
|
[Test]
|
|
public void OnDisableDisablesAllMaps()
|
|
{
|
|
InitializeWithDefaultActions();
|
|
_component.SetContext(InputContextId.UI);
|
|
|
|
_gameObject.SetActive(false);
|
|
|
|
InputActionMap globalMap = FindMap(InputContextId.Global);
|
|
InputActionMap uiMap = FindMap(InputContextId.UI);
|
|
|
|
Assert.That(globalMap.enabled, Is.False);
|
|
Assert.That(uiMap.enabled, Is.False);
|
|
}
|
|
|
|
[Test]
|
|
public void OnEnableRestoresContextState()
|
|
{
|
|
InitializeWithDefaultActions();
|
|
_component.SetContext(InputContextId.UI);
|
|
|
|
_gameObject.SetActive(false);
|
|
_gameObject.SetActive(true);
|
|
|
|
InputActionMap globalMap = FindMap(InputContextId.Global);
|
|
InputActionMap uiMap = FindMap(InputContextId.UI);
|
|
|
|
Assert.That(globalMap.enabled, Is.True);
|
|
Assert.That(uiMap.enabled, Is.True);
|
|
}
|
|
|
|
[Test]
|
|
public void DialogOverlayOnGameplayExplore_DisablesGameplayAndRestoresOnPop()
|
|
{
|
|
InitializeWithDefaultActions();
|
|
_component.SetContext(InputContextId.GameplayExplore);
|
|
|
|
InputActionMap globalMap = FindMap(InputContextId.Global);
|
|
InputActionMap geMap = FindMap(InputContextId.GameplayExplore);
|
|
InputActionMap dialogMap = FindMap(InputContextId.Dialog);
|
|
|
|
Assert.That(geMap.enabled, Is.True);
|
|
Assert.That(dialogMap.enabled, Is.False);
|
|
|
|
_component.PushContext(InputContextId.Dialog);
|
|
|
|
Assert.That(globalMap.enabled, Is.True);
|
|
Assert.That(geMap.enabled, Is.False);
|
|
Assert.That(dialogMap.enabled, Is.True);
|
|
|
|
_component.PopContext();
|
|
|
|
Assert.That(globalMap.enabled, Is.True);
|
|
Assert.That(geMap.enabled, Is.True);
|
|
Assert.That(dialogMap.enabled, Is.False);
|
|
}
|
|
|
|
[Test]
|
|
public void DialogOverlayOnUI_DisablesUIAndRestoresOnPop()
|
|
{
|
|
InitializeWithDefaultActions();
|
|
_component.SetContext(InputContextId.UI);
|
|
|
|
InputActionMap uiMap = FindMap(InputContextId.UI);
|
|
InputActionMap dialogMap = FindMap(InputContextId.Dialog);
|
|
|
|
Assert.That(uiMap.enabled, Is.True);
|
|
Assert.That(dialogMap.enabled, Is.False);
|
|
|
|
_component.PushContext(InputContextId.Dialog);
|
|
|
|
Assert.That(uiMap.enabled, Is.False);
|
|
Assert.That(dialogMap.enabled, Is.True);
|
|
|
|
_component.PopContext();
|
|
|
|
Assert.That(uiMap.enabled, Is.True);
|
|
Assert.That(dialogMap.enabled, Is.False);
|
|
}
|
|
|
|
[Test]
|
|
public void FullWorkflow_SetGameplay_PushDialog_Pop_SetUI_PushDialog_Clear()
|
|
{
|
|
InitializeWithDefaultActions();
|
|
|
|
InputActionMap globalMap = FindMap(InputContextId.Global);
|
|
InputActionMap geMap = FindMap(InputContextId.GameplayExplore);
|
|
InputActionMap uiMap = FindMap(InputContextId.UI);
|
|
InputActionMap dialogMap = FindMap(InputContextId.Dialog);
|
|
|
|
_component.SetContext(InputContextId.GameplayExplore);
|
|
Assert.That(geMap.enabled, Is.True);
|
|
Assert.That(uiMap.enabled, Is.False);
|
|
Assert.That(dialogMap.enabled, Is.False);
|
|
|
|
_component.PushContext(InputContextId.Dialog);
|
|
Assert.That(geMap.enabled, Is.False);
|
|
Assert.That(dialogMap.enabled, Is.True);
|
|
|
|
_component.PopContext();
|
|
Assert.That(geMap.enabled, Is.True);
|
|
Assert.That(dialogMap.enabled, Is.False);
|
|
|
|
_component.SetContext(InputContextId.UI);
|
|
Assert.That(geMap.enabled, Is.False);
|
|
Assert.That(uiMap.enabled, Is.True);
|
|
Assert.That(dialogMap.enabled, Is.False);
|
|
|
|
_component.PushContext(InputContextId.Dialog);
|
|
Assert.That(uiMap.enabled, Is.False);
|
|
Assert.That(dialogMap.enabled, Is.True);
|
|
|
|
_component.ClearContexts();
|
|
Assert.That(globalMap.enabled, Is.True);
|
|
Assert.That(geMap.enabled, Is.False);
|
|
Assert.That(uiMap.enabled, Is.False);
|
|
Assert.That(dialogMap.enabled, Is.False);
|
|
}
|
|
|
|
[Test]
|
|
public void PopEmptyStackReturnsFalse()
|
|
{
|
|
InitializeWithDefaultActions();
|
|
Assert.That(_component.PopContext(), Is.False);
|
|
}
|
|
}
|
|
}
|