142 lines
6.4 KiB
C#
142 lines
6.4 KiB
C#
using NUnit.Framework;
|
|
using UnityEngine.InputSystem;
|
|
|
|
namespace SepCore.InputModule.Runtime.Tests
|
|
{
|
|
public class InputModuleDefaultActionsTests
|
|
{
|
|
[Test]
|
|
public void CreateBuildsExpectedActionMaps()
|
|
{
|
|
InputActionAsset asset = InputModuleDefaultActions.Create();
|
|
|
|
Assert.That(asset.FindActionMap(nameof(InputContextId.Global), throwIfNotFound: false), Is.Not.Null);
|
|
Assert.That(asset.FindActionMap(nameof(InputContextId.UI), throwIfNotFound: false), Is.Not.Null);
|
|
Assert.That(asset.FindActionMap(nameof(InputContextId.GameplayExplore), throwIfNotFound: false), Is.Not.Null);
|
|
Assert.That(asset.FindActionMap(nameof(InputContextId.Dialog), throwIfNotFound: false), Is.Not.Null);
|
|
}
|
|
|
|
[Test]
|
|
public void CreateBuildsCoreActions()
|
|
{
|
|
InputActionAsset asset = InputModuleDefaultActions.Create();
|
|
|
|
Assert.That(asset.FindAction($"{nameof(InputContextId.Global)}/{nameof(InputActionId.Pause)}", throwIfNotFound: false), Is.Not.Null);
|
|
Assert.That(asset.FindAction($"{nameof(InputContextId.UI)}/{nameof(InputActionId.Confirm)}", throwIfNotFound: false), Is.Not.Null);
|
|
|
|
InputAction moveAction = asset.FindAction($"{nameof(InputContextId.GameplayExplore)}/{nameof(InputActionId.Move)}", throwIfNotFound: false);
|
|
Assert.That(moveAction, Is.Not.Null);
|
|
Assert.That(moveAction.expectedControlType, Is.EqualTo("Vector2"));
|
|
}
|
|
|
|
[Test]
|
|
public void GlobalMapContainsPauseAction()
|
|
{
|
|
InputActionAsset asset = InputModuleDefaultActions.Create();
|
|
InputActionMap globalMap = asset.FindActionMap(nameof(InputContextId.Global));
|
|
Assert.That(globalMap, Is.Not.Null);
|
|
InputAction pause = globalMap.FindAction(nameof(InputActionId.Pause));
|
|
Assert.That(pause, Is.Not.Null);
|
|
Assert.That(pause.type, Is.EqualTo(InputActionType.Button));
|
|
}
|
|
|
|
[Test]
|
|
public void UIMapContainsExpectedActions()
|
|
{
|
|
InputActionAsset asset = InputModuleDefaultActions.Create();
|
|
InputActionMap uiMap = asset.FindActionMap(nameof(InputContextId.UI));
|
|
Assert.That(uiMap, Is.Not.Null);
|
|
Assert.That(uiMap.FindAction(nameof(InputActionId.Navigate)), Is.Not.Null);
|
|
Assert.That(uiMap.FindAction(nameof(InputActionId.Confirm)), Is.Not.Null);
|
|
Assert.That(uiMap.FindAction(nameof(InputActionId.Cancel)), Is.Not.Null);
|
|
}
|
|
|
|
[Test]
|
|
public void GameplayExploreMapContainsExpectedActions()
|
|
{
|
|
InputActionAsset asset = InputModuleDefaultActions.Create();
|
|
InputActionMap geMap = asset.FindActionMap(nameof(InputContextId.GameplayExplore));
|
|
Assert.That(geMap, Is.Not.Null);
|
|
Assert.That(geMap.FindAction(nameof(InputActionId.Move)), Is.Not.Null);
|
|
Assert.That(geMap.FindAction(nameof(InputActionId.Sprint)), Is.Not.Null);
|
|
Assert.That(geMap.FindAction(nameof(InputActionId.Interact)), Is.Not.Null);
|
|
}
|
|
|
|
[Test]
|
|
public void DialogMapContainsExpectedActions()
|
|
{
|
|
InputActionAsset asset = InputModuleDefaultActions.Create();
|
|
InputActionMap dialogMap = asset.FindActionMap(nameof(InputContextId.Dialog));
|
|
Assert.That(dialogMap, Is.Not.Null);
|
|
Assert.That(dialogMap.FindAction(nameof(InputActionId.Navigate)), Is.Not.Null);
|
|
Assert.That(dialogMap.FindAction(nameof(InputActionId.Confirm)), Is.Not.Null);
|
|
Assert.That(dialogMap.FindAction(nameof(InputActionId.Cancel)), Is.Not.Null);
|
|
}
|
|
|
|
[Test]
|
|
public void DialogConfirmHasKeyboardAndGamepadBindings()
|
|
{
|
|
InputActionAsset asset = InputModuleDefaultActions.Create();
|
|
InputAction confirm = asset.FindAction($"{nameof(InputContextId.Dialog)}/{nameof(InputActionId.Confirm)}");
|
|
Assert.That(confirm.bindings.Count, Is.GreaterThanOrEqualTo(3));
|
|
}
|
|
|
|
[Test]
|
|
public void ConfirmHasKeyboardAndGamepadBindings()
|
|
{
|
|
InputActionAsset asset = InputModuleDefaultActions.Create();
|
|
InputAction confirm = asset.FindAction($"{nameof(InputContextId.UI)}/{nameof(InputActionId.Confirm)}");
|
|
Assert.That(confirm.bindings.Count, Is.GreaterThanOrEqualTo(3));
|
|
}
|
|
|
|
[Test]
|
|
public void MoveIsVector2ValueType()
|
|
{
|
|
InputActionAsset asset = InputModuleDefaultActions.Create();
|
|
InputAction move = asset.FindAction($"{nameof(InputContextId.GameplayExplore)}/{nameof(InputActionId.Move)}");
|
|
Assert.That(move.expectedControlType, Is.EqualTo("Vector2"));
|
|
Assert.That(move.type, Is.EqualTo(InputActionType.Value));
|
|
}
|
|
|
|
[Test]
|
|
public void NavigateIsVector2ValueType()
|
|
{
|
|
InputActionAsset asset = InputModuleDefaultActions.Create();
|
|
InputAction navigate = asset.FindAction($"{nameof(InputContextId.UI)}/{nameof(InputActionId.Navigate)}");
|
|
Assert.That(navigate.expectedControlType, Is.EqualTo("Vector2"));
|
|
Assert.That(navigate.type, Is.EqualTo(InputActionType.Value));
|
|
}
|
|
|
|
[Test]
|
|
public void AllMapsHaveAtLeastOneAction()
|
|
{
|
|
InputActionAsset asset = InputModuleDefaultActions.Create();
|
|
foreach (InputActionMap map in asset.actionMaps)
|
|
{
|
|
// Rebind map is intentionally empty — it serves only as a context stack placeholder.
|
|
if (map.name == nameof(InputContextId.Rebind))
|
|
continue;
|
|
|
|
Assert.That(map.actions.Count, Is.GreaterThanOrEqualTo(1), $"Map '{map.name}' has no actions.");
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void SaveAndLoadBindingOverridesRoundTrips()
|
|
{
|
|
InputActionAsset asset = InputModuleDefaultActions.Create();
|
|
string json = asset.SaveBindingOverridesAsJson();
|
|
|
|
InputAction pause = asset.FindAction($"{nameof(InputContextId.Global)}/{nameof(InputActionId.Pause)}");
|
|
pause.ApplyBindingOverride("<Keyboard>/space");
|
|
string modifiedJson = asset.SaveBindingOverridesAsJson();
|
|
Assert.That(modifiedJson, Is.Not.EqualTo(json));
|
|
|
|
asset.LoadBindingOverridesFromJson(json);
|
|
string restoredJson = asset.SaveBindingOverridesAsJson();
|
|
Assert.That(restoredJson, Is.EqualTo(json));
|
|
}
|
|
}
|
|
}
|
|
|