diff options
Diffstat (limited to '')
-rw-r--r-- | testing/web-platform/tests/webmessaging/with-ports/010.html | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webmessaging/with-ports/010.html b/testing/web-platform/tests/webmessaging/with-ports/010.html new file mode 100644 index 0000000000..05080e3f7a --- /dev/null +++ b/testing/web-platform/tests/webmessaging/with-ports/010.html @@ -0,0 +1,113 @@ +<!doctype html> +<title>message clone</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../support/compare.js"></script> +<div id=log></div> +<script> + var err = new Error('foo'); + var date = new Date(); + + var test_array = [ undefined, + null, + false, + true, + 1, + NaN, + Infinity, + 'foo', + date, + /foo/, + null/*self*/, + null/*err*/]; + + var cloned_array = [ undefined, + null, + false, + true, + 1, + NaN, + Infinity, + 'foo', + date, + /foo/, + null/*self*/, + null/*err*/]; + + var test_object = {a: undefined, + b: null, + c: false, + d: true, + e: 1, + f: NaN, + g: Infinity, + h: 'foo', + i: date, + j: /foo/, + k: null/*self*/, + l: [], + m: {}, + n: null /*err*/}; + + var cloned_object = {a:undefined, b:null, c:false, d:true, e:1, f:NaN, g:Infinity, h:'foo', i: date, j: /foo/, k:null, l: [], m: {}, n:null}; + + var tests = [undefined, null, + false, true, + 1, NaN, Infinity, + 'foo', + date, + /foo/, + /* ImageData, File, FileData, FileList, */ + null /*self*/, + test_array, + test_object, + null /*err*/]; + + for (var i = 0; i < tests.length; ++i) { + postMessage(tests[i], '*', []); + } + + var test_undefined = async_test('undefined'); + var test_null = async_test('null'); + var test_false = async_test('false'); + var test_true = async_test('true'); + var test_1 = async_test('1'); + var test_NaN = async_test('NaN'); + var test_Infinity = async_test('Infinity'); + var test_string = async_test('string'); + var test_date = async_test('date'); + var test_regex = async_test('regex'); + var test_self = async_test('self'); + var test_array = async_test('array'); + var test_object = async_test('object'); + var test_error = async_test('error'); + var test_unreached = async_test('unreached'); + + var j = 0; + onmessage = function(e) { + switch (j) { + case 0: test_undefined.step(function() { assert_equals(e.data, undefined); this.done(); }); break; + case 1: test_null.step(function() { assert_equals(e.data, null); this.done(); }); break; + case 2: test_false.step(function() { assert_false(e.data); this.done(); }); break; + case 3: test_true.step(function() { assert_true(e.data); this.done(); }); break; + case 4: test_1.step(function() { assert_equals(e.data, 1); this.done(); }); break; + case 5: test_NaN.step(function() { assert_equals(e.data, NaN); this.done(); }); break; + case 6: test_Infinity.step(function() { assert_equals(e.data, Infinity); this.done(); }); break; + case 7: test_string.step(function() { assert_equals(e.data, 'foo'); this.done(); }); break; + case 8: test_date.step(function() { assert_true(sameDate(e.data, date)); this.done(); }); break; + case 9: test_regex.step(function() { assert_equals('' + e.data, '/foo/'); assert_equals(e.data instanceof RegExp, true, 'e.data instanceof RegExp'); this.done(); }); break; + // not testing it any more, as cloning host objects will now raise exceptions. TODO: add (exceptional) tests for these. + case 10: test_self.step(function() { assert_equals(e.data, null); this.done(); }); break; + case 11: test_array.step(function() { assert_array_equals_(e.data, cloned_array, 'array'); this.done(); }); break; + case 12: test_object.step(function() { assert_object_equals_(e.data, cloned_object, 'object'); this.done(); }); break; + case 13: + test_error.step(function() { assert_equals(e.data, null, 'new Error()'); this.done(); }); + setTimeout(test_unreached.step_func(function() { assert_equals(j, 14); this.done(); }), 50); + break; + default: test_unreached.step(function() { assert_unreached('got an unexpected message event ('+j+')'); }); + }; + j++; + } + + +</script> |