<!DOCTYPE HTML> <html> <head> <title>Sample HTML5 API Tests</title> <meta name="timeout" content="6000"> </head> <body onload="load_test_attr.done()"> <h1>Sample HTML5 API Tests</h1> <div id="log"></div> <script src="../testharness.js"></script> <script src="../testharnessreport.js"></script> <script> setup_run = false; setup(function() { setup_run = true; }); test(function() {assert_true(setup_run)}, "Setup function ran"); // Two examples for testing events from handler and attributes var load_test_event = async_test("window onload event fires when set from the handler"); function windowLoad() { load_test_event.done(); } on_event(window, "load", windowLoad); // see the body onload below var load_test_attr = async_test("body element fires the onload event set from the attribute"); </script> <script> function bodyElement() { assert_equals(document.body, document.getElementsByTagName("body")[0]); } test(bodyElement, "document.body should be the first body element in the document"); test(function() { assert_equals(1,1); assert_equals(NaN, NaN, "NaN case"); assert_equals(0, 0, "Zero case"); }, "assert_equals tests") test(function() { assert_equals(-0, 0, "Zero case"); }, "assert_equals tests expected to fail") test(function() { assert_not_equals({}, {}, "object case"); assert_not_equals(-0, 0, "Zero case"); }, "assert_not_equals tests") function testAssertPass() { assert_true(true); } test(testAssertPass, "assert_true expected to pass"); function testAssertFalse() { assert_true(false, "false should not be true"); } test(testAssertFalse, "assert_true expected to fail"); function basicAssertArrayEquals() { assert_array_equals([1, NaN], [1, NaN], "[1, NaN] is equal to [1, NaN]"); } test(basicAssertArrayEquals, "basic assert_array_equals test"); function basicAssertObjectEquals() { assert_object_equals([1, 2, [1, 2]], { 0: 1, 1: 2, 2: { 0: 1, 1: 2} }, "array is equal to object") } test(basicAssertObjectEquals, "basic assert_object_equals test"); function basicAssertApproxEquals() { assert_approx_equals(10, 11, 1, "10 is approximately (+/- 1) 11") } test(basicAssertApproxEquals, "basic assert_approx_equals test"); function basicAssertLessThan() { assert_less_than(10, 11, "10 is less than 11") } test(basicAssertApproxEquals, "basic assert_less_than test"); function basicAssertGreaterThan() { assert_greater_than(10, 11, "10 is not greater than 11"); } test(basicAssertGreaterThan, "assert_greater_than expected to fail"); function basicAssertGreaterThanEqual() { assert_greater_than_equal(10, 10, "10 is greater than or equal to 10") } test(basicAssertGreaterThanEqual, "basic assert_greater_than_equal test"); function basicAssertLessThanEqual() { assert_greater_than_equal('10', 10, "'10' is not a number") } test(basicAssertLessThanEqual, "assert_less_than_equal expected to fail"); function testAssertInherits() { var A = function(){this.a = "a"} A.prototype = {b:"b"} var a = new A(); assert_exists(a, "a"); assert_not_exists(a, "b"); assert_inherits(a, "b"); } test(testAssertInherits, "test for assert[_not]_exists and insert_inherits") test(function() { var a = document.createElement("a") var b = document.createElement("b") assert_throws("NOT_FOUND_ERR", function(){a.removeChild(b)}); }, "Test throw DOM exception") test(function() { var a = document.createTextNode("a") var b = document.createElement("b") assert_throws("NOT_FOUND_ERR", function(){a.appendChild(b)}); }, "Test throw DOM exception expected to fail") test(function() { var e = {code:0, name:"TEST_ERR", TEST_ERR:0} assert_throws("TEST_ERR", function() {throw e}); }, "Test assert_throws with non-DOM-exception expected to Fail"); var t = async_test("Test step_func") setTimeout( t.step_func( function () { assert_true(true); t.done(); }), 0); async_test(function(t) { setTimeout(t.step_func(function (){assert_true(true); t.done();}), 0); }, "Test async test with callback"); async_test(function() { setTimeout(this.step_func(function (){assert_true(true); this.done();}), 0); }, "Test async test with callback and `this` obj."); async_test("test should timeout (fail) with the default of 2 seconds").step(function(){}); async_test("test should timeout (fail) with a custom set timeout value of 1 second", {timeout:1000}).step(function(){}); async_test("async test that is never started, should have status Not Run", {timeout:1000}); test(function(t) { window.global = 1; t.add_cleanup(function() {delete window.global}); assert_equals(window.global, 1); }, "Test that defines a global and cleans it up"); test(function() {assert_equals(window.global, undefined)}, "Test that cleanup handlers from previous test ran"); </script> </body> </html>