| <!DOCTYPE HTML> |
| <html> |
| <head> |
| <title>format_value utility function</title> |
| <meta charset="utf-8"> |
| </head> |
| <body> |
| <div id="log"></div> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script> |
| "use strict"; |
| |
| test(function() { |
| assert_equals(format_value(null), "null"); |
| }, "null"); |
| |
| test(function() { |
| assert_equals(format_value(undefined), "undefined"); |
| }, "undefined"); |
| |
| test(function() { |
| assert_equals(format_value(true), "true"); |
| assert_equals(format_value(false), "false"); |
| }, "boolean values"); |
| |
| test(function() { |
| assert_equals(format_value(0.4), "0.4"); |
| assert_equals(format_value(0), "0"); |
| assert_equals(format_value(-0), "-0"); |
| }, "number values"); |
| |
| test(function() { |
| assert_equals(format_value("a string"), "\"a string\""); |
| assert_equals(format_value("new\nline"), "\"new\\nline\""); |
| }, "string values"); |
| |
| test(function() { |
| var node = document.createElement("span"); |
| node.setAttribute("data-foo", "bar"); |
| assert_true( |
| /<span\b/i.test(format_value(node)), "element includes tag name" |
| ); |
| assert_true( |
| /data-foo=["']?bar["']?/i.test(format_value(node)), |
| "element includes attributes" |
| ); |
| }, "node value: element node"); |
| |
| test(function() { |
| var text = document.createTextNode("wpt"); |
| assert_equals(format_value(text), "Text node \"wpt\""); |
| }, "node value: text node"); |
| |
| test(function() { |
| var node = document.createProcessingInstruction("wpt1", "wpt2"); |
| assert_equals( |
| format_value(node), |
| "ProcessingInstruction node with target \"wpt1\" and data \"wpt2\"" |
| ); |
| }, "node value: ProcessingInstruction node"); |
| |
| test(function() { |
| var node = document.createComment("wpt"); |
| assert_equals(format_value(node), "Comment node <!--wpt-->"); |
| }, "node value: comment node"); |
| |
| test(function() { |
| var node = document.implementation.createDocument( |
| "application/xhtml+xml", "", null |
| ); |
| |
| assert_equals(format_value(node), "Document node with 0 children"); |
| |
| node.appendChild(document.createElement('html')); |
| |
| assert_equals(format_value(node), "Document node with 1 child"); |
| }, "node value: document node"); |
| |
| test(function() { |
| var node = document.implementation.createDocumentType("foo", "baz", "baz"); |
| |
| assert_equals(format_value(node), "DocumentType node"); |
| }, "node value: DocumentType node"); |
| |
| test(function() { |
| var node = document.createDocumentFragment(); |
| |
| assert_equals(format_value(node), "DocumentFragment node with 0 children"); |
| |
| node.appendChild(document.createElement("span")); |
| |
| assert_equals(format_value(node), "DocumentFragment node with 1 child"); |
| |
| node.appendChild(document.createElement("span")); |
| |
| assert_equals(format_value(node), "DocumentFragment node with 2 children"); |
| }, "node value: DocumentFragment node"); |
| |
| test(function() { |
| assert_equals(format_value(Symbol("wpt")), "symbol \"Symbol(wpt)\""); |
| }, "symbol value"); |
| |
| test(function() { |
| assert_equals(format_value([]), "[]"); |
| assert_equals(format_value(["one"]), "[\"one\"]"); |
| assert_equals(format_value(["one", "two"]), "[\"one\", \"two\"]"); |
| }, "array values"); |
| |
| test(function() { |
| var obj = { |
| toString: function() { |
| throw "wpt"; |
| } |
| }; |
| |
| assert_equals( |
| format_value(obj), "[stringifying object threw wpt with type string]" |
| ); |
| }, "object value with faulty `toString`"); |
| </script> |
| </body> |
| </html> |