| (function() { |
| //inheritance tests |
| test(function() { |
| var event = new UserProximityEvent(''); |
| assert_true(event instanceof window.UserProximityEvent); |
| }, 'the event is an instance of UserProximityEvent'); |
| |
| test(function() { |
| var event = new UserProximityEvent(''); |
| assert_true(event instanceof window.Event); |
| }, 'the event inherits from Event'); |
| |
| //Type attribute tests |
| test(function() { |
| assert_throws(new TypeError(), function() { |
| new UserProximityEvent(); |
| }, 'First argument is required, so was expecting a TypeError.'); |
| }, 'Missing type argument'); |
| |
| test(function() { |
| var event = new UserProximityEvent(undefined); |
| assert_equals(event.type, 'undefined'); |
| }, 'Event type set to undefined'); |
| |
| test(function() { |
| var event = new UserProximityEvent(null); |
| assert_equals(event.type, 'null'); |
| }, 'type argument is null'); |
| |
| test(function() { |
| var event = new UserProximityEvent(123); |
| assert_equals(event.type, '123'); |
| }, 'type argument is number'); |
| |
| test(function() { |
| var event = new UserProximityEvent(new Number(123)); |
| assert_equals(event.type, '123'); |
| }, 'type argument is Number'); |
| |
| test(function() { |
| var event = new UserProximityEvent([]); |
| assert_equals(event.type, ''); |
| }, 'type argument is array'); |
| |
| test(function() { |
| var event = new UserProximityEvent(new Array()); |
| assert_equals(event.type, ''); |
| }, 'type argument is instance of Array'); |
| |
| test(function() { |
| var event = new UserProximityEvent(['t', ['e', ['s', ['t']]]]); |
| assert_equals(event.type, 't,e,s,t'); |
| }, 'type argument is nested array'); |
| |
| test(function() { |
| var event = new UserProximityEvent(Math); |
| assert_equals(event.type, '[object Math]'); |
| }, 'type argument is host object'); |
| |
| test(function() { |
| var event = new UserProximityEvent(true); |
| assert_equals(event.type, 'true'); |
| }, 'type argument is boolean (true)'); |
| |
| test(function() { |
| var event = new UserProximityEvent(new Boolean(true)); |
| assert_equals(event.type, 'true'); |
| }, 'type argument is instance of Boolean (true)'); |
| |
| test(function() { |
| var event = new UserProximityEvent(false); |
| assert_equals(event.type, 'false'); |
| }, 'type argument is boolean (false)'); |
| |
| test(function() { |
| var event = new UserProximityEvent(new Boolean(false)); |
| assert_equals(event.type, 'false'); |
| }, 'type argument is instance of Boolean (false)'); |
| |
| test(function() { |
| var event = new UserProximityEvent('test'); |
| assert_equals(event.type, 'test'); |
| }, 'type argument is string'); |
| |
| test(function() { |
| var event = new UserProximityEvent(new String('test')); |
| assert_equals(event.type, 'test'); |
| }, 'type argument is instance of String'); |
| |
| test(function() { |
| var event = new UserProximityEvent(function test() {}); |
| assert_regexp_match(event.type, /function test.+{\s?}/); |
| }, 'type argument is function'); |
| |
| test(function() { |
| var event = new UserProximityEvent({ |
| 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 UserProximityEvent({ |
| toString: function() { |
| return function() {} |
| } |
| }); |
| }); |
| }, 'toString is of type function'); |
| |
| //eventInitDict attribute tests |
| test(function() { |
| var event = new UserProximityEvent('test', undefined); |
| assert_false(event.near); |
| }, 'eventInitDict argument sets to undefined'); |
| |
| test(function() { |
| var event = new UserProximityEvent('test', null); |
| assert_false(event.near); |
| }, 'eventInitDict argument is null'); |
| |
| test(function() { |
| var date = new Date(); |
| assert_throws(new TypeError(), function() { |
| new UserProximityEvent('test', date); |
| }); |
| }, 'eventInitDict argument is Date object'); |
| |
| test(function() { |
| var regexp = /abc/; |
| assert_throws(new TypeError(), function() { |
| new UserProximityEvent('test', regexp); |
| }); |
| }, 'eventInitDict argument is RegExp object'); |
| |
| test(function() { |
| assert_throws(new TypeError(), function() { |
| new UserProximityEvent('test', false); |
| }); |
| }, 'eventInitDict argument is boolean'); |
| |
| test(function() { |
| assert_throws(new TypeError(), function() { |
| new UserProximityEvent('test', 123); |
| }); |
| }, 'eventInitDict argument is number'); |
| |
| test(function() { |
| assert_throws(new TypeError(), function() { |
| new UserProximityEvent('test', 'hello'); |
| }); |
| }, 'eventInitDict argument is string'); |
| |
| //test readonly attribute boolean near; |
| test(function() { |
| var event = new UserProximityEvent('test'); |
| assert_idl_attribute(event, 'near', 'must have attribute near'); |
| }, 'must have attribute near'); |
| |
| test(function() { |
| var event = new UserProximityEvent('test'); |
| assert_readonly(event, 'near', 'readonly attribute near'); |
| }, 'near is readonly'); |
| |
| test(function() { |
| var event = new UserProximityEvent('test'); |
| assert_false(event.near, 'near initializes to false'); |
| }, 'near initializes to false'); |
| |
| test(function() { |
| var event = new UserProximityEvent('test', { |
| near: false |
| }); |
| assert_false(event.near, 'near set to false'); |
| }, 'near set to false'); |
| |
| test(function() { |
| var event = new UserProximityEvent('test', { |
| near: true |
| }); |
| assert_true(event.near, 'near set to true'); |
| }, 'near set to true'); |
| |
| test(function() { |
| var event = new UserProximityEvent('test', { |
| near: undefined |
| }); |
| assert_false(event.near, 'argument is truthy'); |
| }, 'near set to undefined'); |
| |
| test(function() { |
| var event = new UserProximityEvent('test', { |
| near: null |
| }); |
| assert_false(event.near, 'argument is flasy'); |
| }, 'near set to null'); |
| |
| test(function() { |
| var event = new UserProximityEvent('test', { |
| near: 0 |
| }); |
| assert_false(event.near, 'argument is flasy'); |
| }, 'near set to 0'); |
| |
| test(function() { |
| var event = new UserProximityEvent('test', { |
| near: '' |
| }); |
| assert_false(event.near, 'argument is flasy'); |
| }, 'near set to empty string'); |
| |
| test(function() { |
| var event = new UserProximityEvent('test', { |
| near: '\u0020' |
| }); |
| assert_true(event.near, 'argument is truthy'); |
| }, 'near set to U+0020'); |
| |
| test(function() { |
| var event = new UserProximityEvent('test', { |
| near: 1 |
| }); |
| assert_true(event.near, 'argument is truthy'); |
| }, 'near set to 1'); |
| |
| test(function() { |
| var event = new UserProximityEvent('test', { |
| near: [] |
| }); |
| assert_true(event.near, 'argument is truthy'); |
| }, 'near set to []'); |
| |
| test(function() { |
| var event = new UserProximityEvent('test', { |
| near: {} |
| }); |
| assert_true(event.near, 'argument is truthy'); |
| }, 'near set to {}'); |
| |
| test(function() { |
| var dict = { |
| get test() { |
| return false; |
| } |
| }; |
| var event = new UserProximityEvent('test', { |
| near: dict.test |
| }); |
| assert_false(event.near, 'explict false'); |
| }, 'near set to object that resolves to false'); |
| |
| test(function() { |
| var desc = 'Expected to find onuserproximity attribute on window object'; |
| assert_idl_attribute(window, 'onuserproximity', desc); |
| }, 'onuserproximity exists'); |
| |
| test(function() { |
| var desc = 'window.onuserproximity must be null'; |
| assert_equals(window.onuserproximity, null, desc); |
| }, 'onuserproximity is null'); |
| |
| test(function() { |
| var desc = 'window.onuserproximity did not accept callable object', |
| func = function() {}, |
| descidl = 'onuserproximity does not exist'; |
| window.onuserproximity = func; |
| assert_equals(window.onuserproximity, func, descidl); |
| }, 'onuserproximity exists and can be set to a function'); |
| |
| test(function() { |
| var desc = 'window.onuserproximity did not treat noncallable as null'; |
| window.onuserproximity = function() {}; |
| window.onuserproximity = {}; |
| assert_equals(window.onuserproximity, null, desc); |
| }, 'treat object as null'); |
| |
| test(function() { |
| var desc = 'window.onuserproximity did not treat noncallable as null'; |
| window.onuserproximity = function() {}; |
| window.onuserproximity = { |
| call: 'test' |
| }; |
| assert_equals(window.onuserproximity, null, desc); |
| }, 'treat object with non-callable call property as null'); |
| |
| test(function() { |
| var desc = 'window.onuserproximity did not treat noncallable (string) as null'; |
| window.onuserproximity = function() {}; |
| window.onuserproximity = 'string'; |
| assert_equals(window.onuserproximity, null, desc); |
| }, 'treat string as null'); |
| |
| test(function() { |
| var desc = 'window.onuserproximity did not treat noncallable (number) as null'; |
| window.onuserproximity = function() {}; |
| window.onuserproximity = 123; |
| assert_equals(window.onuserproximity, null, desc); |
| }, 'treat number as null'); |
| |
| test(function() { |
| var desc = 'window.onuserproximity did not treat noncallable (undefined) as null'; |
| window.onuserproximity = function() {}; |
| window.onuserproximity = undefined; |
| assert_equals(window.onuserproximity, null, desc); |
| }, 'treat undefined as null'); |
| |
| test(function() { |
| var desc = 'window.onuserproximity did not treat noncallable (array) as null'; |
| window.onuserproximity = function() {}; |
| window.onuserproximity = []; |
| assert_equals(window.onuserproximity, null, desc); |
| }, 'treat array as null'); |
| |
| test(function() { |
| var desc = 'window.onuserproximity did not treat noncallable host object as null'; |
| window.onuserproximity = function() {}; |
| window.onuserproximity = Node; |
| assert_equals(window.onuserproximity, null, desc); |
| }, 'treat non-callable host object as null'); |
| |
| //Async tests |
| var t = async_test('test if user proximity event received'); |
| window.addEventListener('userproximity', function(e) { |
| t.step(function() { |
| var msg = 'expected instance of UserProximityEvent: '; |
| assert_true(e instanceof window.UserProximityEvent, msg); |
| }); |
| t.done(); |
| }); |
| |
| var t2 = async_test('test if user proximity event received (idl attribute)'); |
| window.onuserproximity = function(e) { |
| t2.step(function() { |
| var msg = 'expected instance of UserProximityEvent: '; |
| assert_true(e instanceof window.UserProximityEvent, msg); |
| }); |
| t2.done(); |
| }; |
| })(); |