adding Light Events tests - don't run this, it's a copy-paste of the proximity one
authorMarcos Caceres <w3c@marcosc.com>
Fri, 13 Jul 2012 09:04:47 +0100
changeset 155 9a98820c77fd
parent 154 18a64f226ce2
child 156 1e5571daf449
adding Light Events tests - don't run this, it's a copy-paste of the proximity one
light/tests/submissions/marcosc/DeviceLight_tests.js
light/tests/submissions/marcosc/index.html
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/light/tests/submissions/marcosc/DeviceLight_tests.js	Fri Jul 13 09:04:47 2012 +0100
@@ -0,0 +1,325 @@
+/**
+* W3C 3-clause BSD License
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are
+* met:
+* o Redistributions of works must retain the original copyright notice,
+*     this list of conditions and the following disclaimer.
+*
+* o Redistributions in binary form must reproduce the original copyright
+*     notice, this list of conditions and the following disclaimer in the
+*     documentation and/or other materials provided with the distribution.
+*
+* o Neither the name of the W3C nor the names of its contributors may be
+*     used to endorse or promote products derived from this work without
+*     specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+**/
+(function() {
+    //inheritance tests
+    test(function() {
+        var event = new DeviceLightEvent('');
+        assert_true(event instanceof window.DeviceLightEvent);
+    }, 'the event is an instance of DeviceLightEvent');
+
+    test(function() {
+        var event = new DeviceLightEvent('');
+        assert_true(event instanceof window.Event);
+    }, 'the event inherits from Event');
+
+    //Type attribute tests
+    test(function() {
+        assert_throws(TypeError(), function() {
+            new DeviceLightEvent();
+        }, 'First argument is required, so was expecting a TypeError.');
+    }, 'Missing type argument');
+
+    test(function() {
+        var event = new DeviceLightEvent(undefined);
+        assert_equals(event.type, 'undefined');
+    }, 'Event type set to undefined');
+
+    test(function() {
+        var event = new DeviceLightEvent(null);
+        assert_equals(event.type, 'null');
+    }, 'type argument is null');
+
+    test(function() {
+        var event = new DeviceLightEvent(123);
+        assert_equals(event.type, '123');
+    }, 'type argument is number');
+
+    test(function() {
+        var event = new DeviceLightEvent(new Number(123));
+        assert_equals(event.type, '123');
+    }, 'type argument is Number');
+
+    test(function() {
+        var event = new DeviceLightEvent([]);
+        assert_equals(event.type, '');
+    }, 'type argument is array');
+
+    test(function() {
+        var event = new DeviceLightEvent(new Array());
+        assert_equals(event.type, '');
+    }, 'type argument is instance of Array');
+
+    test(function() {
+        var event = new DeviceLightEvent(['t', ['e', ['s', ['t']]]]);
+        assert_equals(event.type, 't,e,s,t');
+    }, 'type argument is nested array');
+
+    test(function() {
+        var event = new DeviceLightEvent(Math);
+        assert_equals(event.type, '[object Math]');
+    }, 'type argument is host object');
+
+    test(function() {
+        var event = new DeviceLightEvent(true);
+        assert_equals(event.type, 'true');
+    }, 'type argument is boolean (true)');
+
+    test(function() {
+        var event = new DeviceLightEvent(new Boolean(true));
+        assert_equals(event.type, 'true');
+    }, 'type argument is instance of boolean');
+
+    test(function() {
+        var event = new DeviceLightEvent(false);
+        assert_equals(event.type, 'false');
+    }, 'type argument is boolean (false)');
+
+    test(function() {
+        var event = new DeviceLightEvent(new Boolean(false));
+        assert_equals(event.type, 'false');
+    }, '');
+
+    test(function() {
+        var event = new DeviceLightEvent('test');
+        assert_equals(event.type, 'test');
+    }, 'type argument is instance of boolean (false)');
+
+    test(function() {
+        var event = new DeviceLightEvent(new String('test'));
+        assert_equals(event.type, 'test');
+    }, 'type argument is string');
+
+    test(function() {
+        var event = new DeviceLightEvent(function test() {});
+        assert_equals(event.type, 'function test() {}');
+    }, 'type argument is function');
+
+    test(function() {
+        var event = new DeviceLightEvent({
+            toString: function() {
+                return '123';
+            }
+        });
+        assert_equals(event.type, '123');
+    }, 'type argument is complext object, with toString method');
+
+    test(function() {
+        assert_throws(TypeError(), function() {
+            new DeviceLightEvent({
+                toString: function() {
+                    return function() {}
+                }
+            });
+        });
+    }, 'toString is of type function');
+
+    //test readonly attribute boolean value;
+    test(function() {
+        var event = new DeviceLightEvent('test');
+        assert_readonly(event, 'value', 'readonly attribute value');
+    }, 'value is readonly');
+
+    test(function() {
+        var event = new DeviceLightEvent('test', {
+            value: false
+        });
+        assert_equals(event.value, false, 'value set to false');
+    }, 'value set to false');
+
+    test(function() {
+        var event = new DeviceLightEvent('test', {
+            value: true
+        });
+        assert_equals(event.value, true, 'value set to true');
+    }, 'value set to true');
+
+    test(function() {
+        var event = new DeviceLightEvent('test', {
+            value: undefined
+        });
+        assert_equals(event.value, false, 'argument is truthy');
+    }, 'value set to a falsy object');
+
+    test(function() {
+        var event = new DeviceLightEvent('test', {
+            value: null
+        });
+        assert_equals(event.value, false, 'argument is flasy');
+    }, 'value set to a falsy object');
+
+    test(function() {
+        var event = new DeviceLightEvent('test', {
+            value: 0
+        });
+        assert_equals(event.value, false, 'argument is flasy');
+    }, 'value set to a falsy object');
+
+    test(function() {
+        var event = new DeviceLightEvent('test', {
+            value: ''
+        });
+        assert_equals(event.value, false, 'argument is flasy');
+    }, 'value set to a falsy object');
+
+    test(function() {
+        var event = new DeviceLightEvent('test', {
+            value: '\u0020'
+        });
+        assert_equals(event.value, true, 'argument is truthy');
+    }, 'value set to a truthy object');
+
+    test(function() {
+        var event = new DeviceLightEvent('test', {
+            value: 1
+        });
+        assert_equals(event.value, true, 'argument is truthy');
+    }, 'value set to a truthy object');
+
+    test(function() {
+        var event = new DeviceLightEvent('test', {
+            value: []
+        });
+        assert_equals(event.value, true, 'argument is truthy');
+    }, 'value set to a truthy object');
+
+    test(function() {
+        var event = new DeviceLightEvent('test', {
+            value: {}
+        });
+        assert_equals(event.value, true, 'argument is truthy');
+    }, 'value set to a truthy object');
+
+    test(function() {
+        var dict = {
+            get test() {
+                return false;
+            }
+        };
+        var event = new DeviceLightEvent('test', {
+            value: dict.test
+        });
+        assert_equals(event.value, false, 'explict false');
+    }, 'value set to object that resolves to false');
+
+    test(function() {
+        var desc = 'Expected to find ondevicelight attribute on window object';
+        assert_own_property(window, 'ondevicelight', desc);
+    }, 'ondevicelight exists');
+
+    test(function() {
+        var desc = 'window.ondevicelight must be null';
+        assert_equals(window.ondevicelight, null, desc);
+    }, 'ondevicelight is null');
+
+    test(function() {
+        var desc = 'window.ondevicelight did not accept callable object',
+            func = function() {}
+        window.ondevicelight = func;
+        assert_equals(window.ondevicelight, func, desc);
+    }, 'ondevicelight is set to function');
+
+    test(function() {
+        var desc = 'window.ondevicelight did not treat noncallable as null';
+        window.ondevicelight = function() {};
+        window.ondevicelight = {};
+        assert_equals(window.ondevicelight, null, desc);
+    }, 'treat object as null');
+
+    test(function() {
+        var desc = 'window.ondevicelight did not treat noncallable as null';
+        window.ondevicelight = function() {};
+        window.ondevicelight = {
+            call: 'test'
+        };
+        assert_equals(window.ondevicelight, null, desc);
+    }, 'treat object with non-callable call property as null');
+
+    test(function() {
+        var desc = 'window.ondevicelight did not treat noncallable as null',
+            test = function() {};
+        test.call = 'test';
+        window.ondevicelight = function() {};
+        window.ondevicelight = test;
+        assert_equals(window.ondevicelight, null, desc);
+    }, 'treat object with non-callable call property as null');
+
+    test(function() {
+        var desc = 'window.ondevicelight did not treat noncallable (string) as null';
+        window.ondevicelight = function() {};
+        window.ondevicelight = 'string';
+        assert_equals(window.ondevicelight, null, desc);
+    }, 'treat string as null');
+
+    test(function() {
+        var desc = 'window.ondevicelight did not treat noncallable (number) as null';
+        window.ondevicelight = function() {};
+        window.ondevicelight = 123;
+        assert_equals(window.ondevicelight, null, desc);
+    }, 'treat number as null');
+
+    test(function() {
+        var desc = 'window.ondevicelight did not treat noncallable (undefined) as null';
+        window.ondevicelight = function() {};
+        window.ondevicelight = undefined;
+        assert_equals(window.ondevicelight, null, desc);
+    }, 'treat undefined as null');
+
+    test(function() {
+        var desc = 'window.ondevicelight did not treat noncallable (array) as null';
+        window.ondevicelight = function() {};
+        window.ondevicelight = [];
+        assert_equals(window.ondevicelight, null, desc);
+    }, 'treat array as null');
+
+    test(function() {
+        var desc = 'window.ondevicelight did not treat noncallable host object as null';
+        window.ondevicelight = function() {};
+        window.ondevicelight = Node;
+        assert_equals(window.ondevicelight, null, desc);
+    }, 'treat non-callable host object as null');
+
+    //Async tests
+    var t = async_test('test if user proximity event recieved');
+    window.addEventListener('userproximity', function(e) {
+        t.step(function() {
+            var msg = 'expected instance of DeviceLightEvent: ';
+            assert_true(e instanceof window.DeviceLightEvent, msg);
+        });
+        t.done();
+    });
+
+    var t2 = async_test('test if user proximity event recieved');
+    window.ondevicelight = function(e) {
+        t2.step(function() {
+            var msg = 'expected instance of DeviceLightEvent: ';
+            assert_true(e instanceof window.DeviceLightEvent, msg);
+        });
+        t2.done();
+    };
+})();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/light/tests/submissions/marcosc/index.html	Fri Jul 13 09:04:47 2012 +0100
@@ -0,0 +1,10 @@
+<!doctype html>
+<head>
+<title>Light Events Test Suite</title>
+<body> 
+<h1>Test Suite for Light Events</h1>
+<div id="log"></div>
+<hr>
+<p><small>Distributed under both the <a href="http://www.w3.org/Consortium/Legal/2008/04-testsuite-license">W3C Test Suite License</a> and the <a href="http://www.w3.org/Consortium/Legal/2008/03-bsd-license">W3C 3-clause BSD License</a>. To contribute to a W3C Test Suite, see the <a href="http://www.w3.org/2004/10/27-testcases">policies and contribution forms</a>.</small></p>
+<script src="http://www.w3c-test.org/resources/testharness.js"></script>
+<script src="DeviceLight_tests.js"></script>
\ No newline at end of file