Index: LayoutTests/gamepad/gamepad-api.html |
diff --git a/LayoutTests/gamepad/gamepad-api.html b/LayoutTests/gamepad/gamepad-api.html |
index cac387458fd9b2b3557679591b14e090ed6d366a..17feb666ca70818fa7e017f98f640d9d91eaccf6 100644 |
--- a/LayoutTests/gamepad/gamepad-api.html |
+++ b/LayoutTests/gamepad/gamepad-api.html |
@@ -2,8 +2,75 @@ |
<body> |
<script src="../resources/js-test.js"></script> |
<script> |
+ description("Validates the exposed Gamepad API.") |
+ |
shouldBeDefined("navigator.webkitGetGamepads"); |
shouldBeDefined("navigator.getGamepads"); |
+ shouldBeDefined("GamepadEvent"); |
+ |
+ webkitGamepads = navigator.webkitGetGamepads(); |
+ shouldBeEqualToString("Object.prototype.toString.call(webkitGamepads)", "[object WebKitGamepadList]"); |
+ shouldBe("webkitGamepads.length", "4"); |
+ shouldBeUndefined("webkitGamepads[0]"); |
+ shouldBeEqualToString("Object.prototype.toString.call(webkitGamepads.item)", "[object Function]") |
+ shouldBeNull("webkitGamepads.item(0)"); |
+ |
+ gamepads = navigator.getGamepads(); |
+ shouldBeEqualToString("Object.prototype.toString.call(gamepads)", "[object GamepadList]"); |
+ shouldBe("gamepads.length", "4"); |
+ shouldBeUndefined("gamepads[0]"); |
+ shouldBeEqualToString("Object.prototype.toString.call(gamepads.item)", "[object Function]"); |
+ shouldBeNull("gamepads.item(0)"); |
+ |
+ if (window.gamepadController) |
+ { |
+ shouldNotThrow("window.addEventListener('gamepadconnected', function(){}, false)"); |
Inactive
2014/03/27 13:27:24
I don't believe addEventListener can ever throw.
kbalazs
2014/03/28 23:24:12
No, not really. Removed the events from this test.
|
+ shouldNotThrow("window.addEventListener('gamepaddisconnected', function(){}, false)"); |
Inactive
2014/03/27 13:27:24
Ditto.
kbalazs
2014/03/28 23:24:12
Done.
|
+ |
+ gamepadController.connect(0); |
+ gamepadController.setId(0, "MockStick 3000"); |
+ gamepadController.setButtonCount(0, 1); |
+ gamepadController.setAxisCount(0, 1); |
+ |
+ function checkProperties(isPrefixed) { |
+ if (isPrefixed) |
+ shouldBeEqualToString("Object.prototype.toString.call(gamepad)", "[object WebKitGamepad]"); |
Inactive
2014/03/27 13:27:24
This test relies a lot on the String serialization
kbalazs
2014/03/28 23:24:12
Using __proto__ where possible and not checking no
|
+ else |
+ shouldBeEqualToString("Object.prototype.toString.call(gamepad)", "[object Gamepad]"); |
+ |
+ shouldBeEqualToString("Object.prototype.toString.call(gamepad.id)", "[object String]"); |
+ shouldBeEqualToString("Object.prototype.toString.call(gamepad.connected)", "[object Boolean]"); |
+ shouldBeEqualToString("Object.prototype.toString.call(gamepad.index)", "[object Number]"); |
+ shouldBeEqualToString("Object.prototype.toString.call(gamepad.timestamp)", "[object Number]"); |
+ shouldBeEqualToString("Object.prototype.toString.call(gamepad.axes)", "[object Array]"); |
+ shouldBeEqualToString("Object.prototype.toString.call(gamepad.axes[0])", "[object Number]"); |
+ |
+ shouldBeEqualToString("Object.prototype.toString.call(gamepad.buttons)", "[object Array]"); |
+ if (isPrefixed) { |
+ shouldBeEqualToString("Object.prototype.toString.call(gamepad.buttons[0])", "[object Number]"); |
+ } else { |
+ shouldBeEqualToString("Object.prototype.toString.call(gamepad.buttons[0])", "[object GamepadButton]"); |
+ shouldBeEqualToString("Object.prototype.toString.call(gamepad.buttons[0].pressed)", "[object Boolean]"); |
+ shouldBeEqualToString("Object.prototype.toString.call(gamepad.buttons[0].value)", "[object Number]"); |
+ } |
+ |
+ if (!isPrefixed) |
+ shouldBeEqualToString("Object.prototype.toString.call(gamepad.mapping)", "[object String]"); |
+ } |
+ |
+ gamepad = navigator.webkitGetGamepads()[0]; |
+ shouldBeNonNull("gamepad"); |
+ shouldBeTrue("gamepad.connected") |
+ checkProperties(true); |
+ |
+ gamepad = navigator.getGamepads()[0]; |
+ shouldBeNonNull("gamepad"); |
+ shouldBeTrue("gamepad.connected"); |
+ checkProperties(false); |
+ } |
+ else |
+ { |
+ testFailed("no gamepadController available."); |
+ } |
</script> |
-<p>Make sure the main polling access point exists on navigator.</p> |
</body> |