Index: third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/Comment-Text-constructor.js |
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/Comment-Text-constructor.js b/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/Comment-Text-constructor.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..360b9760e3e2650453f13f03ced8695c78b28e8e |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/Comment-Text-constructor.js |
@@ -0,0 +1,77 @@ |
+function test_constructor(ctor) { |
+ test(function() { |
+ var object = new window[ctor](); |
+ assert_equals(Object.getPrototypeOf(object), |
+ window[ctor].prototype, "Prototype chain: " + ctor); |
+ assert_equals(Object.getPrototypeOf(Object.getPrototypeOf(object)), |
+ CharacterData.prototype, "Prototype chain: CharacterData"); |
+ assert_equals(Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(object))), |
+ Node.prototype, "Prototype chain: Node"); |
+ }, "new " + ctor + "(): prototype chain"); |
+ |
+ test(function() { |
+ var object = new window[ctor](); |
+ assert_true(object instanceof Node, "Should be a Node"); |
+ assert_true(object instanceof CharacterData, "Should be a CharacterData"); |
+ assert_true(object instanceof window[ctor], "Should be a " + ctor); |
+ }, "new " + ctor + "(): instanceof"); |
+ |
+ test(function() { |
+ var object = new window[ctor](); |
+ assert_equals(object.data, ""); |
+ assert_equals(object.nodeValue, ""); |
+ assert_equals(object.ownerDocument, document); |
+ }, "new " + ctor + "(): no arguments"); |
+ |
+ var arguments = [ |
+ [undefined, ""], |
+ [null, "null"], |
+ [42, "42"], |
+ ["", ""], |
+ ["-", "-"], |
+ ["--", "--"], |
+ ["-->", "-->"], |
+ ["<!--", "<!--"], |
+ ["\u0000", "\u0000"], |
+ ["\u0000test", "\u0000test"], |
+ ["&", "&"], |
+ ]; |
+ |
+ arguments.forEach(function(a) { |
+ var argument = a[0], expected = a[1]; |
+ test(function() { |
+ var object = new window[ctor](argument); |
+ assert_equals(object.data, expected); |
+ assert_equals(object.nodeValue, expected); |
+ assert_equals(object.ownerDocument, document); |
+ }, "new " + ctor + "(): " + format_value(argument)); |
+ }); |
+ |
+ test(function() { |
+ var called = []; |
+ var object = new window[ctor]({ |
+ toString: function() { |
+ called.push("first"); |
+ return "text"; |
+ } |
+ }, { |
+ toString: function() { |
+ called.push("second"); |
+ assert_unreached("Should not look at the second argument."); |
+ } |
+ }); |
+ assert_equals(object.data, "text"); |
+ assert_equals(object.nodeValue, "text"); |
+ assert_equals(object.ownerDocument, document); |
+ assert_array_equals(called, ["first"]); |
+ }, "new " + ctor + "(): two arguments") |
+ |
+ async_test("new " + ctor + "() should get the correct ownerDocument across globals").step(function() { |
+ var iframe = document.createElement("iframe"); |
+ iframe.onload = this.step_func_done(function() { |
+ var object = new iframe.contentWindow[ctor](); |
+ assert_equals(object.ownerDocument, iframe.contentDocument); |
+ }); |
+ document.body.appendChild(iframe); |
+ }); |
+} |