- From: Mercurial notifier <cvsmail@w3.org>
- Date: Fri, 24 Aug 2012 20:37:14 +0000
- To: public-dap-commits@w3.org
changeset: 201:2527383d5cdc tag: tip user: Anssi Kostiainen <anssi.kostiainen@nokia.com> date: Fri Aug 24 23:36:10 2012 +0300 files: battery/tests/submissions/anssik/battery_tests.js battery/tests/submissions/anssik/index.html description: first stab at the Battery Status API tests, work in progress diff -r c60ceef808e9 -r 2527383d5cdc battery/tests/submissions/anssik/battery_tests.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/battery/tests/submissions/anssik/battery_tests.js Fri Aug 24 23:36:10 2012 +0300 @@ -0,0 +1,393 @@ +/** +* 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() { + + /** + * + * Navigator implements NavigatorBattery; + * + * [NoInterfaceObject] + * interface NavigatorBattery { + * readonly attribute BatteryManager battery; + * }; + * + */ + + test(function() { + assert_idl_attribute(navigator, 'battery', 'navigator must have battery attribute'); + }, 'battery is present on navigator'); + + test(function() { + assert_readonly(navigator, 'battery', 'battery must be readonly') + }, 'battery is readonly'); + + /** + * + * [NoInterfaceObject] + * interface BatteryManager : EventTarget { + * readonly attribute boolean charging; + * readonly attribute double chargingTime; + * readonly attribute double dischargingTime; + * readonly attribute double level; + * attribute EventHandler onchargingchange; + * attribute EventHandler onchargingtimechange; + * attribute EventHandler ondischargingtimechange; + * attribute EventHandler onlevelchange; + * }; + * + */ + + // interface BatteryManager : EventTarget { + + test(function() { + assert_true(navigator.battery instanceof EventTarget); + }, 'battery inherits from EventTarget'); + + // readonly attribute boolean charging; + + test(function() { + assert_idl_attribute(navigator.battery, 'charging', 'battery must have charging attribute'); + }, 'charging attribute exists'); + + test(function() { + assert_readonly(navigator.battery, 'charging', 'charging must be readonly') + }, 'charging attribute is readonly'); + + // readonly attribute double chargingTime; + + test(function() { + assert_idl_attribute(navigator.battery, 'chargingTime', 'battery must have chargingTime attribute'); + }, 'chargingTime attribute exists'); + + test(function() { + assert_readonly(navigator.battery, 'chargingTime', 'chargingTime must be readonly') + }, 'chargingTime attribute is readonly'); + + // readonly attribute double dischargingTime; + + test(function() { + assert_idl_attribute(navigator.battery, 'dischargingTime', 'battery must have dischargingTime attribute'); + }, 'dischargingTime attribute exists'); + + test(function() { + assert_readonly(navigator.battery, 'dischargingTime', 'dischargingTime must be readonly') + }, 'dischargingTime attribute is readonly'); + + // readonly attribute double level; + + test(function() { + assert_idl_attribute(navigator.battery, 'level', 'battery must have level attribute'); + }, 'level attribute exists'); + + test(function() { + assert_readonly(navigator.battery, 'level', 'level must be readonly') + }, 'level attribute is readonly'); + + // attribute EventHandler onchargingchange; + + test(function() { + assert_idl_attribute(navigator.battery, 'onchargingchange', 'battery must have onchargingchange attribute'); + }, 'onchargingchange attribute exists'); + + test(function() { + assert_equals(navigator.battery.onchargingchange, null, 'onchargingchange must be null') + }, 'onchargingchange is null'); + + test(function() { + var desc = 'onchargingchange did not accept callable object', + func = function() {}, + desc = 'Expected to find onchargingchange attribute on battery object'; + assert_idl_attribute(navigator.battery, 'onchargingchange', desc); + window.onchargingchange = func; + assert_equals(window.onchargingchange, func, desc); + }, 'onchargingchange is set to function'); + + test(function() { + var desc = 'onchargingchange did not treat noncallable as null'; + navigator.battery.onchargingchange = function() {}; + navigator.battery.onchargingchange = {}; + assert_equals(navigator.battery.onchargingchange, null, desc); + }, 'onchargingchange: treat object as null'); + + test(function() { + var desc = 'onchargingchange did not treat noncallable as null'; + navigator.battery.onchargingchange = function() {}; + navigator.battery.onchargingchange = { + call: 'test' + }; + assert_equals(navigator.battery.onchargingchange, null, desc); + }, 'onchargingchange: treat object with non-callable call property as null'); + + test(function() { + var desc = 'onchargingchange did not treat noncallable (string) as null'; + navigator.battery.onchargingchange = function() {}; + navigator.battery.onchargingchange = 'string'; + assert_equals(navigator.battery.onchargingchange, null, desc); + }, 'onchargingchange: treat string as null'); + + test(function() { + var desc = 'onchargingchange did not treat noncallable (number) as null'; + navigator.battery.onchargingchange = function() {}; + navigator.battery.onchargingchange = 123; + assert_equals(navigator.battery.onchargingchange, null, desc); + }, 'onchargingchange: treat number as null'); + + test(function() { + var desc = 'onchargingchange did not treat noncallable (undefined) as null'; + navigator.battery.onchargingchange = function() {}; + navigator.battery.onchargingchange = undefined; + assert_equals(navigator.battery.onchargingchange, null, desc); + }, 'onchargingchange: treat undefined as null'); + + test(function() { + var desc = 'onchargingchange did not treat noncallable (array) as null'; + navigator.battery.onchargingchange = function() {}; + navigator.battery.onchargingchange = []; + assert_equals(navigator.battery.onchargingchange, null, desc); + }, 'onchargingchange: treat array as null'); + + test(function() { + var desc = 'onchargingchange did not treat noncallable host object as null'; + navigator.battery.onchargingchange = function() {}; + navigator.battery.onchargingchange = Node; + assert_equals(navigator.battery.onchargingchange, null, desc); + }, 'onchargingchange: treat non-callable host object as null'); + + // attribute EventHandler onchargingtimechange; + + test(function() { + assert_idl_attribute(navigator.battery, 'onchargingtimechange', 'battery must have onchargingtimechange attribute'); + }, 'onchargingtimechange attribute exists'); + + test(function() { + assert_equals(navigator.battery.onchargingtimechange, null, 'onchargingtimechange must be null') + }, 'onchargingtimechange is null'); + + test(function() { + var desc = 'onchargingtimechange did not accept callable object', + func = function() {}, + desc = 'Expected to find onchargingtimechange attribute on battery object'; + assert_idl_attribute(navigator.battery, 'onchargingtimechange', desc); + window.onchargingtimechange = func; + assert_equals(window.onchargingtimechange, func, desc); + }, 'onchargingtimechange is set to function'); + + test(function() { + var desc = 'onchargingtimechange did not treat noncallable as null'; + navigator.battery.onchargingtimechange = function() {}; + navigator.battery.onchargingtimechange = {}; + assert_equals(navigator.battery.onchargingtimechange, null, desc); + }, 'onchargingtimechange: treat object as null'); + + test(function() { + var desc = 'onchargingtimechange did not treat noncallable as null'; + navigator.battery.onchargingtimechange = function() {}; + navigator.battery.onchargingtimechange = { + call: 'test' + }; + assert_equals(navigator.battery.onchargingtimechange, null, desc); + }, 'onchargingtimechange: treat object with non-callable call property as null'); + + test(function() { + var desc = 'onchargingtimechange did not treat noncallable (string) as null'; + navigator.battery.onchargingtimechange = function() {}; + navigator.battery.onchargingtimechange = 'string'; + assert_equals(navigator.battery.onchargingtimechange, null, desc); + }, 'onchargingtimechange: treat string as null'); + + test(function() { + var desc = 'onchargingtimechange did not treat noncallable (number) as null'; + navigator.battery.onchargingtimechange = function() {}; + navigator.battery.onchargingtimechange = 123; + assert_equals(navigator.battery.onchargingtimechange, null, desc); + }, 'onchargingtimechange: treat number as null'); + + test(function() { + var desc = 'onchargingtimechange did not treat noncallable (undefined) as null'; + navigator.battery.onchargingtimechange = function() {}; + navigator.battery.onchargingtimechange = undefined; + assert_equals(navigator.battery.onchargingtimechange, null, desc); + }, 'onchargingtimechange: treat undefined as null'); + + test(function() { + var desc = 'onchargingtimechange did not treat noncallable (array) as null'; + navigator.battery.onchargingtimechange = function() {}; + navigator.battery.onchargingtimechange = []; + assert_equals(navigator.battery.onchargingtimechange, null, desc); + }, 'onchargingtimechange: treat array as null'); + + test(function() { + var desc = 'onchargingtimechange did not treat noncallable host object as null'; + navigator.battery.onchargingtimechange = function() {}; + navigator.battery.onchargingtimechange = Node; + assert_equals(navigator.battery.onchargingtimechange, null, desc); + }, 'onchargingtimechange: treat non-callable host object as null'); + + // attribute EventHandler ondischargingtimechange; + + test(function() { + assert_idl_attribute(navigator.battery, 'ondischargingtimechange', 'battery must have ondischargingtimechange attribute'); + }, 'ondischargingtimechange attribute exists'); + + test(function() { + assert_equals(navigator.battery.ondischargingtimechange, null, 'ondischargingtimechange must be null') + }, 'ondischargingtimechange is null'); + + test(function() { + var desc = 'ondischargingtimechange did not accept callable object', + func = function() {}, + desc = 'Expected to find ondischargingtimechange attribute on battery object'; + assert_idl_attribute(navigator.battery, 'ondischargingtimechange', desc); + window.ondischargingtimechange = func; + assert_equals(window.ondischargingtimechange, func, desc); + }, 'ondischargingtimechange is set to function'); + + test(function() { + var desc = 'ondischargingtimechange did not treat noncallable as null'; + navigator.battery.ondischargingtimechange = function() {}; + navigator.battery.ondischargingtimechange = {}; + assert_equals(navigator.battery.ondischargingtimechange, null, desc); + }, 'ondischargingtimechange: treat object as null'); + + test(function() { + var desc = 'ondischargingtimechange did not treat noncallable as null'; + navigator.battery.ondischargingtimechange = function() {}; + navigator.battery.ondischargingtimechange = { + call: 'test' + }; + assert_equals(navigator.battery.ondischargingtimechange, null, desc); + }, 'ondischargingtimechange: treat object with non-callable call property as null'); + + test(function() { + var desc = 'ondischargingtimechange did not treat noncallable (string) as null'; + navigator.battery.ondischargingtimechange = function() {}; + navigator.battery.ondischargingtimechange = 'string'; + assert_equals(navigator.battery.ondischargingtimechange, null, desc); + }, 'ondischargingtimechange: treat string as null'); + + test(function() { + var desc = 'ondischargingtimechange did not treat noncallable (number) as null'; + navigator.battery.ondischargingtimechange = function() {}; + navigator.battery.ondischargingtimechange = 123; + assert_equals(navigator.battery.ondischargingtimechange, null, desc); + }, 'ondischargingtimechange: treat number as null'); + + test(function() { + var desc = 'ondischargingtimechange did not treat noncallable (undefined) as null'; + navigator.battery.ondischargingtimechange = function() {}; + navigator.battery.ondischargingtimechange = undefined; + assert_equals(navigator.battery.ondischargingtimechange, null, desc); + }, 'ondischargingtimechange: treat undefined as null'); + + test(function() { + var desc = 'ondischargingtimechange did not treat noncallable (array) as null'; + navigator.battery.ondischargingtimechange = function() {}; + navigator.battery.ondischargingtimechange = []; + assert_equals(navigator.battery.ondischargingtimechange, null, desc); + }, 'ondischargingtimechange: treat array as null'); + + test(function() { + var desc = 'ondischargingtimechange did not treat noncallable host object as null'; + navigator.battery.ondischargingtimechange = function() {}; + navigator.battery.ondischargingtimechange = Node; + assert_equals(navigator.battery.ondischargingtimechange, null, desc); + }, 'ondischargingtimechange: treat non-callable host object as null'); + + // attribute EventHandler onlevelchange; + + test(function() { + assert_idl_attribute(navigator.battery, 'onlevelchange', 'battery must have onlevelchange attribute'); + }, 'onlevelchange attribute exists'); + + test(function() { + assert_equals(navigator.battery.onlevelchange, null, 'onlevelchange must be null') + }, 'onlevelchange is null'); + + test(function() { + var desc = 'onlevelchange did not accept callable object', + func = function() {}, + desc = 'Expected to find onlevelchange attribute on battery object'; + assert_idl_attribute(navigator.battery, 'onlevelchange', desc); + window.onlevelchange = func; + assert_equals(window.onlevelchange, func, desc); + }, 'onlevelchange is set to function'); + + test(function() { + var desc = 'onlevelchange did not treat noncallable as null'; + navigator.battery.onlevelchange = function() {}; + navigator.battery.onlevelchange = {}; + assert_equals(navigator.battery.onlevelchange, null, desc); + }, 'onlevelchange: treat object as null'); + + test(function() { + var desc = 'onlevelchange did not treat noncallable as null'; + navigator.battery.onlevelchange = function() {}; + navigator.battery.onlevelchange = { + call: 'test' + }; + assert_equals(navigator.battery.onlevelchange, null, desc); + }, 'onlevelchange: treat object with non-callable call property as null'); + + test(function() { + var desc = 'onlevelchange did not treat noncallable (string) as null'; + navigator.battery.onlevelchange = function() {}; + navigator.battery.onlevelchange = 'string'; + assert_equals(navigator.battery.onlevelchange, null, desc); + }, 'onlevelchange: treat string as null'); + + test(function() { + var desc = 'onlevelchange did not treat noncallable (number) as null'; + navigator.battery.onlevelchange = function() {}; + navigator.battery.onlevelchange = 123; + assert_equals(navigator.battery.onlevelchange, null, desc); + }, 'onlevelchange: treat number as null'); + + test(function() { + var desc = 'onlevelchange did not treat noncallable (undefined) as null'; + navigator.battery.onlevelchange = function() {}; + navigator.battery.onlevelchange = undefined; + assert_equals(navigator.battery.onlevelchange, null, desc); + }, 'onlevelchange: treat undefined as null'); + + test(function() { + var desc = 'onlevelchange did not treat noncallable (array) as null'; + navigator.battery.onlevelchange = function() {}; + navigator.battery.onlevelchange = []; + assert_equals(navigator.battery.onlevelchange, null, desc); + }, 'onlevelchange: treat array as null'); + + test(function() { + var desc = 'onlevelchange did not treat noncallable host object as null'; + navigator.battery.onlevelchange = function() {}; + navigator.battery.onlevelchange = Node; + assert_equals(navigator.battery.onlevelchange, null, desc); + }, 'onlevelchange: treat non-callable host object as null'); + +})(); \ No newline at end of file diff -r c60ceef808e9 -r 2527383d5cdc battery/tests/submissions/anssik/index.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/battery/tests/submissions/anssik/index.html Fri Aug 24 23:36:10 2012 +0300 @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<html> +<head> +<title>Battery Status API Test Suite</title> +<script src="http://www.w3c-test.org/resources/testharness.js"></script> +<script src="battery_tests.js"></script> +</head> +<body> +<h1>Test Suite for Battery Status API (Work in Progress)</h1> +<div id="log"></div> +<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> +</body> +</html> \ No newline at end of file
Received on Friday, 24 August 2012 20:37:17 UTC