summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/proximity/DeviceProximityEvent_tests.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/proximity/DeviceProximityEvent_tests.js')
-rw-r--r--testing/web-platform/tests/proximity/DeviceProximityEvent_tests.js439
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();
+ };
+})();