diff options
Diffstat (limited to 'testing/web-platform/tests/dom/xslt/functions.tentative.window.js')
-rw-r--r-- | testing/web-platform/tests/dom/xslt/functions.tentative.window.js | 252 |
1 files changed, 252 insertions, 0 deletions
diff --git a/testing/web-platform/tests/dom/xslt/functions.tentative.window.js b/testing/web-platform/tests/dom/xslt/functions.tentative.window.js new file mode 100644 index 0000000000..81240022dc --- /dev/null +++ b/testing/web-platform/tests/dom/xslt/functions.tentative.window.js @@ -0,0 +1,252 @@ +const xslt_functions = [ + "QName", + "abs", + "accumulator-after", + "accumulator-before", + "adjust-date-to-timezone", + "adjust-dateTime-to-timezone", + "adjust-time-to-timezone", + "analyze-string", + "apply", + "available-environment-variables", + "available-system-properties", + "avg", + "base-uri", + "boolean", + "ceiling", + "codepoint-equal", + "codepoints-to-string", + "collation-key", + "collection", + "compare", + "concat", + "contains", + "contains-token", + "copy-of", + "count", + "current", + "current-date", + "current-dateTime", + "current-group", + "current-grouping-key", + "current-merge-group", + "current-merge-key", + "current-output-uri", + "current-time", + "data", + "dateTime", + "day-from-date", + "day-from-dateTime", + "days-from-duration", + "deep-equal", + "default-collation", + "default-language", + "distinct-values", + "doc", + "doc-available", + "document", + "document-uri", + "element-available", + "element-with-id", + "empty", + "encode-for-uri", + "ends-with", + "environment-variable", + "error", + "escape-html-uri", + "exactly-one", + "exists", + "false", + "filter", + "floor", + "fold-left", + "fold-right", + "for-each", + "for-each-pair", + "format-date", + "format-dateTime", + "format-integer", + "format-number", + "format-time", + "function-arity", + "function-available", + "function-lookup", + "function-name", + "generate-id", + "has-children", + "head", + "hours-from-dateTime", + "hours-from-duration", + "hours-from-time", + "id", + "idref", + "implicit-timezone", + "in-scope-prefixes", + "index-of", + "innermost", + "insert-before", + "iri-to-uri", + "json-doc", + "json-to-xml", + "key", + "lang", + "last", + "load-xquery-module", + "local-name", + "local-name-from-QName", + "lower-case", + "matches", + "max", + "min", + "minutes-from-dateTime", + "minutes-from-duration", + "minutes-from-time", + "month-from-date", + "month-from-dateTime", + "months-from-duration", + "name", + "namespace-uri", + "namespace-uri-for-prefix", + "namespace-uri-from-QName", + "nilled", + "node-name", + "normalize-space", + "normalize-unicode", + "not", + "number", + "one-or-more", + "outermost", + "parse-ietf-date", + "parse-json", + "parse-xml", + "parse-xml-fragment", + "path", + "position", + "prefix-from-QName", + "put", + "random-number-generator", + "regex-group", + "remove", + "replace", + "resolve-QName", + "resolve-uri", + "reverse", + "root", + "round", + "round-half-to-even", + "seconds-from-dateTime", + "seconds-from-duration", + "seconds-from-time", + "serialize", + "snapshot", + "sort", + "starts-with", + "static-base-uri", + "stream-available", + "string", + "string-join", + "string-length", + "string-to-codepoints", + "subsequence", + "substring", + "substring-after", + "substring-before", + "sum", + "system-property", + "tail", + "timezone-from-date", + "timezone-from-dateTime", + "timezone-from-time", + "tokenize", + "trace", + "transform", + "translate", + "true", + "type-available", + "unordered", + "unparsed-entity-public-id", + "unparsed-entity-uri", + "unparsed-text", + "unparsed-text-available", + "unparsed-text-lines", + "upper-case", + "uri-collection", + "xml-to-json", + "year-from-date", + "year-from-dateTime", + "years-from-duration", + "zero-or-one", +]; + +const xslt1_functions = [ + "boolean", + "ceiling", + "concat", + "contains", + "count", + "current", + "document", + "element-available", + "false", + "floor", + "format-number", + "function-available", + "generate-id", + "id", + "key", + "lang", + "last", + "local-name", + "name", + "namespace-uri", + "normalize-space", + "not", + "number", + "position", + "round", + "starts-with", + "string", + "string-length", + "substring", + "substring-after", + "substring-before", + "sum", + "system-property", + "translate", + "true", + "unparsed-entity-uri", +]; + +for (const fn of xslt_functions) { + test(() => { + const xsltSrc = `<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> +<xsl:output method="html" encoding="utf-8" version="5"/> +<xsl:template match="/"> + <xsl:choose> + <xsl:when test='function-available("${fn}")'> + <div>available</div> + </xsl:when> + <xsl:otherwise> + <div>unavailable</div> + </xsl:otherwise> + </xsl:choose> +</xsl:template> +</xsl:stylesheet>`; + + const processor = new XSLTProcessor(); + const parser = new DOMParser(); + processor.importStylesheet( + parser.parseFromString(xsltSrc, "application/xml") + ); + const output = processor.transformToFragment( + parser.parseFromString("<x/>", "application/xml"), + document + ); + + // Note we only expect functions defined in XSLT 1.0 to be defined. + assert_equals( + output.textContent.trim(), + xslt1_functions.indexOf(fn) >= 0 ? "available" : "unavailable" + ); + }, fn); +} |