diff options
Diffstat (limited to 'testing/web-platform/tests/proximity/DeviceProximityEvent_tests.js')
-rw-r--r-- | testing/web-platform/tests/proximity/DeviceProximityEvent_tests.js | 439 |
1 files changed, 439 insertions, 0 deletions
diff --git a/testing/web-platform/tests/proximity/DeviceProximityEvent_tests.js b/testing/web-platform/tests/proximity/DeviceProximityEvent_tests.js new file mode 100644 index 000000000..4d3c00c0a --- /dev/null +++ b/testing/web-platform/tests/proximity/DeviceProximityEvent_tests.js @@ -0,0 +1,439 @@ +(function() { + //inheritance tests + test(function() { + var event = new DeviceProximityEvent(''); + assert_true(event instanceof window.DeviceProximityEvent); + }, 'the event is an instance of DeviceProximityEvent'); + + test(function() { + var event = new DeviceProximityEvent(''); + assert_true(event instanceof window.Event); + }, 'the event inherits from Event'); + + //Type attribute tests + test(function() { + assert_throws(new TypeError(), function() { + new DeviceProximityEvent(); + }, 'First argument is required, so was expecting a TypeError.'); + }, 'Missing type argument'); + + test(function() { + var event = new DeviceProximityEvent(undefined); + assert_equals(event.type, 'undefined'); + }, 'Event type set to undefined'); + + test(function() { + var event = new DeviceProximityEvent(null); + assert_equals(event.type, 'null'); + }, 'type argument is null'); + + test(function() { + var event = new DeviceProximityEvent(123); + assert_equals(event.type, '123'); + }, 'type argument is number'); + + test(function() { + var event = new DeviceProximityEvent(new Number(123)); + assert_equals(event.type, '123'); + }, 'type argument is Number'); + + test(function() { + var event = new DeviceProximityEvent([]); + assert_equals(event.type, ''); + }, 'type argument is array'); + + test(function() { + var event = new DeviceProximityEvent(new Array()); + assert_equals(event.type, ''); + }, 'type argument is instance of Array'); + + test(function() { + var event = new DeviceProximityEvent(['t', ['e', ['s', ['t']]]]); + assert_equals(event.type, 't,e,s,t'); + }, 'type argument is nested array'); + + test(function() { + var event = new DeviceProximityEvent(Math); + assert_equals(event.type, '[object Math]'); + }, 'type argument is host object'); + + test(function() { + var event = new DeviceProximityEvent(true); + assert_equals(event.type, 'true'); + }, 'type argument is boolean (true)'); + + test(function() { + var event = new DeviceProximityEvent(new Boolean(true)); + assert_equals(event.type, 'true'); + }, 'type argument is instance of Boolean (true)'); + + test(function() { + var event = new DeviceProximityEvent(false); + assert_equals(event.type, 'false'); + }, 'type argument is boolean (false)'); + + test(function() { + var event = new DeviceProximityEvent(new Boolean(false)); + assert_equals(event.type, 'false'); + }, 'type argument is instance of Boolean (false)'); + + test(function() { + var event = new DeviceProximityEvent('test'); + assert_equals(event.type, 'test'); + }, 'type argument is string'); + + test(function() { + var event = new DeviceProximityEvent(new String('test')); + assert_equals(event.type, 'test'); + }, 'type argument is instance of String'); + + test(function() { + var event = new DeviceProximityEvent(function test() {}); + assert_regexp_match(event.type, /function test.+{\s?}/); + }, 'type argument is function'); + + test(function() { + var event = new DeviceProximityEvent({ + toString: function() { + return '123'; + } + }); + assert_equals(event.type, '123'); + }, 'type argument is complext object, with toString method'); + + test(function() { + assert_throws(new TypeError(), function() { + new DeviceProximityEvent({ + toString: function() { + return function() {} + } + }); + }); + }, 'toString is of type function'); + + //eventInitDict attribute tests + test(function() { + var event = new DeviceProximityEvent('test', undefined); + assert_equals(event.value, Infinity); + assert_equals(event.min, -Infinity); + assert_equals(event.max, Infinity); + }, 'eventInitDict argument sets to undefined'); + + test(function() { + var event = new DeviceProximityEvent('test', null); + assert_equals(event.value, Infinity); + assert_equals(event.min, -Infinity); + assert_equals(event.max, Infinity); + }, 'eventInitDict argument is null'); + + test(function() { + var date = new Date(); + assert_throws(new TypeError(), function() { + new DeviceProximityEvent('test', date); + }); + }, 'eventInitDict argument is Date object'); + + test(function() { + var regexp = /abc/; + assert_throws(new TypeError(), function() { + new DeviceProximityEvent('test', regexp); + }); + }, 'eventInitDict argument is RegExp object'); + + test(function() { + assert_throws(new TypeError(), function() { + new DeviceProximityEvent('test', false); + }); + }, 'eventInitDict argument is boolean'); + + test(function() { + assert_throws(new TypeError(), function() { + new DeviceProximityEvent('test', 123); + }); + }, 'eventInitDict argument is number'); + + test(function() { + assert_throws(new TypeError(), function() { + new DeviceProximityEvent('test', 'hello'); + }); + }, 'eventInitDict argument is string'); + + //test readonly attribute unrestricted double value; + test(function() { + var event = new DeviceProximityEvent('test'); + assert_idl_attribute(event, 'value', 'must have attribute value'); + }, 'value attribute exist'); + + test(function() { + var event = new DeviceProximityEvent('test'); + assert_readonly(event, 'value', 'readonly attribute value'); + }, 'value attribute is readonly'); + + test(function() { + var event = new DeviceProximityEvent('test'); + assert_equals(event.value, Infinity); + }, 'value initializes to positive Infinity'); + + test(function() { + var event = new DeviceProximityEvent('test', { + value: Infinity + }); + assert_equals(event.value, Infinity); + }, 'value set to positive Infinity'); + + test(function() { + var event = new DeviceProximityEvent('test', { + value: -Infinity + }); + assert_equals(event.value, -Infinity); + }, 'value set to negative Infinity'); + + test(function() { + var event = new DeviceProximityEvent('test', { + value: 0 + }); + assert_equals(event.value, 0); + }, 'value set to 0'); + + test(function() { + var event = new DeviceProximityEvent('test', { + value: 1 + }); + assert_equals(event.value, 1); + }, 'value set to 1'); + + test(function() { + var event = new DeviceProximityEvent('test', { + value: 0.5 + }); + assert_equals(event.value, 0.5); + }, 'value set to 0.5'); + + test(function() { + var event = new DeviceProximityEvent('test', { + value: false + }); + assert_equals(event.value, 0, 'value set to false, converts to 0.'); + }, 'value set to false'); + + test(function() { + var event = new DeviceProximityEvent('test', { + value: true + }); + assert_equals(event.value, 1, 'value set to true, converts to 1.'); + }, 'value set to true'); + + + test(function() { + var prop = { + value: undefined + }; + try { + var event = new DeviceProximityEvent('test', prop); + assert_true(isNaN(event.value)); + } catch(e) { + assert_unreached('error message: ' + e.message); + } + }, 'value of undefined resolves to NaN'); + + test(function() { + var event = new DeviceProximityEvent('test', { + value: null + }); + assert_equals(event.value, 0, 'value resolves to 0'); + }, 'value of null resolves to 0'); + + test(function() { + var event = new DeviceProximityEvent('test', { + value: '' + }); + assert_equals(event.value, 0, 'value must resolve to 0'); + }, 'value of empty string must resolve to 0'); + + test(function() { + var event = new DeviceProximityEvent('test', { + value: '\u0020' + }); + assert_equals(event.value, 0, 'value must resolve to 0'); + }, 'value of U+0020 must resolve to 0'); + + test(function() { + var event = new DeviceProximityEvent('test', { + value: '\u0020\u0020\u0020\u0020\u0020\u0020' + }); + assert_equals(event.value, 0, 'value must resolve to 0'); + }, 'value of multiple U+0020 must resolve to 0'); + + test(function() { + var event = new DeviceProximityEvent('test', { + value: '\u0020\u0020\u00201234\u0020\u0020\u0020' + }); + assert_equals(event.value, 1234, 'converts to 1234'); + }, 'value converts to 1234'); + + test(function() { + var event = new DeviceProximityEvent('test', { + value: [] + }); + assert_equals(event.value, 0, 'converts to 0'); + }, 'value converts to 0'); + + + test(function() { + var prop = { + value: {} + }; + try { + var event = new DeviceProximityEvent('test', prop); + assert_true(isNaN(event.value)); + } catch(e) { + assert_unreached('error message: ' + e.message); + } + }, 'value of {} resolves to NaN'); + + test(function() { + var prop = { + get value() { + return NaN; + } + }; + try { + var event = new DeviceProximityEvent('test', prop); + assert_true(isNaN(event.value)); + } catch(e) { + assert_unreached('error message: ' + e.message); + } + }, 'value resolves to NaN'); + + test(function() { + var prop = { + get value() { + return '123'; + } + }; + var event = new DeviceProximityEvent('test', prop); + assert_equals(event.value, 123, 'converts to 123'); + }, 'value resolves 123'); + + //test readonly attribute unrestricted double min + test(function() { + var event = new DeviceProximityEvent('test'); + assert_idl_attribute(event, 'min', 'must have attribute min'); + }, 'min attribute exist'); + + test(function() { + var event = new DeviceProximityEvent('test'); + assert_readonly(event, 'min', 'readonly attribute min'); + }, 'min attribute is readonly'); + + test(function() { + var event = new DeviceProximityEvent('test'); + assert_equals(event.min, -Infinity); + }, 'min initializes to negative Infinity'); + + //test readonly attribute unrestricted double max; + test(function() { + var event = new DeviceProximityEvent('test'); + assert_idl_attribute(event, 'max', 'must have attribute max'); + }, 'max attribute exist'); + + test(function() { + var event = new DeviceProximityEvent('test'); + assert_readonly(event, 'max', 'readonly attribute max'); + }, 'max attribute is readonly'); + + test(function() { + var event = new DeviceProximityEvent('test'); + assert_equals(event.max, Infinity); + }, 'max initializes to positive Infinity'); + + //test attribute EventHandler ondeviceproximity; + test(function() { + var desc = 'Expected to find ondeviceproximity attribute on window object'; + assert_idl_attribute(window, 'ondeviceproximity', desc); + }, 'ondeviceproximity exists'); + + test(function() { + var desc = 'window.ondeviceproximity must be null'; + assert_equals(window.ondeviceproximity, null, desc); + }, 'ondeviceproximity is null'); + + test(function() { + var desc = 'window.ondeviceproximity did not accept callable object', + func = function() {}, + descidl = 'Expected to find ondeviceproximity attribute on window object'; + assert_idl_attribute(window, 'ondeviceproximity', descidl); + window.ondeviceproximity = func; + assert_equals(window.ondeviceproximity, func, desc); + }, 'ondeviceproximity is set to function'); + + test(function() { + var desc = 'window.ondeviceproximity did not treat noncallable as null'; + window.ondeviceproximity = function() {}; + window.ondeviceproximity = {}; + assert_equals(window.ondeviceproximity, null, desc); + }, 'treat object as null'); + + test(function() { + var desc = 'window.ondeviceproximity did not treat noncallable as null'; + window.ondeviceproximity = function() {}; + window.ondeviceproximity = { + call: 'test' + }; + assert_equals(window.ondeviceproximity, null, desc); + }, 'treat object with non-callable call property as null'); + + test(function() { + var desc = 'window.ondeviceproximity did not treat noncallable (string) as null'; + window.ondeviceproximity = function() {}; + window.ondeviceproximity = 'string'; + assert_equals(window.ondeviceproximity, null, desc); + }, 'treat string as null'); + + test(function() { + var desc = 'window.ondeviceproximity did not treat noncallable (number) as null'; + window.ondeviceproximity = function() {}; + window.ondeviceproximity = 123; + assert_equals(window.ondeviceproximity, null, desc); + }, 'treat number as null'); + + test(function() { + var desc = 'window.ondeviceproximity did not treat noncallable (undefined) as null'; + window.ondeviceproximity = function() {}; + window.ondeviceproximity = undefined; + assert_equals(window.ondeviceproximity, null, desc); + }, 'treat undefined as null'); + + test(function() { + var desc = 'window.ondeviceproximity did not treat noncallable (array) as null'; + window.ondeviceproximity = function() {}; + window.ondeviceproximity = []; + assert_equals(window.ondeviceproximity, null, desc); + }, 'treat array as null'); + + test(function() { + var desc = 'window.ondeviceproximity did not treat noncallable host object as null'; + window.ondeviceproximity = function() {}; + window.ondeviceproximity = Node; + assert_equals(window.ondeviceproximity, null, desc); + }, 'treat non-callable host object as null'); + + //Async tests + var t = async_test('test if device proximity event received'); + window.addEventListener('deviceproximity', function(e) { + t.step(function() { + var msg = 'expected instance of DeviceProximityEvent: '; + assert_true(e instanceof window.DeviceProximityEvent, msg); + }); + t.done(); + }); + + var t2 = async_test('test if user proximity event received'); + window.ondeviceproximity = function(e) { + t2.step(function() { + var msg = 'expected instance of DeviceProximityEvent: '; + assert_true(e instanceof window.DeviceProximityEvent, msg); + }); + t2.done(); + }; +})(); |