Skip to content

Commit a3d8078

Browse files
committed
Added more Keyboard tests.
1 parent 230667f commit a3d8078

File tree

3 files changed

+89
-23
lines changed

3 files changed

+89
-23
lines changed

Assets/Tests/InputSystem/CoreTests_Devices.cs

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2849,15 +2849,6 @@ public void Devices_CanGetNameOfCurrentKeyboardLayout()
28492849
Assert.That(keyboard.keyboardLayout, Is.EqualTo("new"));
28502850
}
28512851

2852-
[Test]
2853-
[Category("Devices")]
2854-
public void Devices_CanGetKeyCodeFromKeyboardKey()
2855-
{
2856-
var keyboard = InputSystem.AddDevice<Keyboard>();
2857-
2858-
Assert.That(keyboard.aKey.keyCode, Is.EqualTo(Key.A));
2859-
}
2860-
28612852
[Test]
28622853
[Category("Devices")]
28632854
public void Devices_CanLookUpKeyFromKeyboardUsingKeyCode()
@@ -5894,18 +5885,4 @@ public unsafe void Devices_DoesntErrorOutOnMaxTouchCount()
58945885
BeginTouch(i, new Vector2(i * 1.0f, i * 2.0f), time: 0);
58955886
}, Throws.Nothing);
58965887
}
5897-
5898-
// Note: Tested inside this class for now since there are no dedicated device test classes for built-in devices,
5899-
// only for plugin devices.
5900-
[Test, Description("https://issuetracker.unity3d.com/product/unity/issues/guid/ISXB-1541")]
5901-
[Category("Devices")]
5902-
public void Devices_KeyboardAllKeys_EnumeratesAllKeyControls()
5903-
{
5904-
var keyboard = InputSystem.AddDevice<Keyboard>();
5905-
int index = 0;
5906-
foreach (var key in keyboard.allKeys)
5907-
{
5908-
Assert.NotNull(key, $"Key at index {index++} was null");
5909-
}
5910-
}
59115888
}
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
using System;
2+
using System.Linq;
3+
using NUnit.Framework;
4+
using UnityEngine;
5+
using UnityEngine.InputSystem;
6+
7+
// Functional testing of built-in device UnityEngine.InputSystem.Keyboard.
8+
9+
partial class CoreTests
10+
{
11+
[Test]
12+
[Category("Devices")]
13+
public void Devices_Keyboard_CanGetKeyCodeFromKeyboardKey()
14+
{
15+
var keyboard = InputSystem.AddDevice<Keyboard>();
16+
17+
Assert.That(keyboard.aKey.keyCode, Is.EqualTo(Key.A));
18+
Assert.That(keyboard.bKey.keyCode, Is.EqualTo(Key.B));
19+
Assert.That(keyboard.cKey.keyCode, Is.EqualTo(Key.C));
20+
Assert.That(keyboard.dKey.keyCode, Is.EqualTo(Key.D));
21+
Assert.That(keyboard.eKey.keyCode, Is.EqualTo(Key.E));
22+
Assert.That(keyboard.fKey.keyCode, Is.EqualTo(Key.F));
23+
Assert.That(keyboard.gKey.keyCode, Is.EqualTo(Key.G));
24+
// TODO Make this complete
25+
}
26+
27+
[Test, Description("https://issuetracker.unity3d.com/product/unity/issues/guid/ISXB-1541")]
28+
[Category("Devices")]
29+
public void Devices_Keyboard_AllKeysEnumeratesAllKeyControls()
30+
{
31+
var keyboard = InputSystem.AddDevice<Keyboard>();
32+
var index = 0;
33+
foreach (var key in keyboard.allKeys)
34+
{
35+
if (index == 109)
36+
Debug.Log("TEMP");
37+
Assert.NotNull(key, $"Key at index {index++} was null");
38+
}
39+
}
40+
41+
[Test]
42+
[Category("Devices")]
43+
public void Devices_Keyboard_AllKeysShouldContainKeyControlsCorrespondingToAllKeys()
44+
{
45+
var keyboard = InputSystem.AddDevice<Keyboard>();
46+
var allKeys = keyboard.allKeys;
47+
foreach (var key in Enum.GetValues(typeof(Key)).Cast<Key>())
48+
{
49+
Assert.That(allKeys.Contains(keyboard.spaceKey), Is.True);
50+
}
51+
}
52+
53+
[Test]
54+
[Category("Devices")]
55+
public void Devices_Keyboard_SubscriptOperatorCanLookupKeyControlOfCorrespondingKey()
56+
{
57+
var keyboard = InputSystem.AddDevice<Keyboard>();
58+
foreach (var key in Enum.GetValues(typeof(Key)).Cast<Key>())
59+
{
60+
// Key.None is documented as an invalid key so skip it in this test and instead we verify in test below
61+
// that exception is thrown if attempting to lookup key-control using it.
62+
if (key == Key.None)
63+
continue;
64+
if (key == Key.IMESelected)
65+
continue;
66+
67+
var keyControl = keyboard[key];
68+
Assert.That(keyControl, Is.Not.Null);
69+
Assert.That(keyControl.keyCode, Is.EqualTo(key));
70+
}
71+
}
72+
73+
[Test]
74+
[Category("Devices")]
75+
public void Devices_Keyboard_SubscriptOperatorThrowsForInvalidOrOutOfRangeKey()
76+
{
77+
var keyboard = InputSystem.AddDevice<Keyboard>();
78+
var minKey = Enum.GetValues(typeof(Key)).Cast<Key>().Min();
79+
var invalidMin = (Key)((int)minKey)-1;
80+
var maxKey = Enum.GetValues(typeof(Key)).Cast<Key>().Max();
81+
var invalidMax = (Key)((int)maxKey)+1;
82+
Assert.Throws<ArgumentOutOfRangeException>(() => { _ = keyboard[Key.None]; });
83+
Assert.Throws<ArgumentOutOfRangeException>(() => { _ = keyboard[invalidMin]; });
84+
Assert.Throws<ArgumentOutOfRangeException>(() => { _ = keyboard[invalidMax]; });
85+
}
86+
}

Assets/Tests/InputSystem/CoreTests_Devices_Keyboard.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)