summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/proximity/UserProximityEvent_tests.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/proximity/UserProximityEvent_tests.js')
-rw-r--r--testing/web-platform/tests/proximity/UserProximityEvent_tests.js342
1 files changed, 342 insertions, 0 deletions
diff --git a/testing/web-platform/tests/proximity/UserProximityEvent_tests.js b/testing/web-platform/tests/proximity/UserProximityEvent_tests.js
new file mode 100644
index 000000000..cac5bd586
--- /dev/null
+++ b/testing/web-platform/tests/proximity/UserProximityEvent_tests.js
@@ -0,0 +1,342 @@
+(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();
+ };
+})();