diff options
77 files changed, 4531 insertions, 274 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini index 3a3d15b8406..6a3af4e2ece 100644 --- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini +++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini @@ -37,6 +37,3 @@ [Revoke blob URL after creating Request, will fetch] expected: FAIL - [Revoke blob URL after calling fetch, fetch should succeed] - expected: FAIL - diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 8daaa8c3c8c..f5ac825eb8d 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -325363,6 +325363,12 @@ {} ] ], + "css/css-writing-modes/bidi-line-break-001.html": [ + [ + "css/css-writing-modes/bidi-line-break-001.html", + {} + ] + ], "css/css-writing-modes/inheritance.html": [ [ "css/css-writing-modes/inheritance.html", @@ -398891,6 +398897,308 @@ {} ] ], + "svg/animations/svgenum-animation-3.html": [ + [ + "svg/animations/svgenum-animation-3.html", + {} + ] + ], + "svg/animations/svgenum-animation-4.html": [ + [ + "svg/animations/svgenum-animation-4.html", + {} + ] + ], + "svg/animations/svgenum-animation-5.html": [ + [ + "svg/animations/svgenum-animation-5.html", + {} + ] + ], + "svg/animations/svgenum-animation-6.html": [ + [ + "svg/animations/svgenum-animation-6.html", + {} + ] + ], + "svg/animations/svgenum-animation-7.html": [ + [ + "svg/animations/svgenum-animation-7.html", + {} + ] + ], + "svg/animations/svgenum-animation-8.html": [ + [ + "svg/animations/svgenum-animation-8.html", + {} + ] + ], + "svg/animations/svgenum-animation-9.html": [ + [ + "svg/animations/svgenum-animation-9.html", + {} + ] + ], + "svg/animations/svginteger-animation-1.html": [ + [ + "svg/animations/svginteger-animation-1.html", + {} + ] + ], + "svg/animations/svginteger-animation-2.html": [ + [ + "svg/animations/svginteger-animation-2.html", + {} + ] + ], + "svg/animations/svglength-additive-by-1.html": [ + [ + "svg/animations/svglength-additive-by-1.html", + {} + ] + ], + "svg/animations/svglength-additive-by-2.html": [ + [ + "svg/animations/svglength-additive-by-2.html", + {} + ] + ], + "svg/animations/svglength-additive-by-3.html": [ + [ + "svg/animations/svglength-additive-by-3.html", + {} + ] + ], + "svg/animations/svglength-additive-by-4.html": [ + [ + "svg/animations/svglength-additive-by-4.html", + {} + ] + ], + "svg/animations/svglength-additive-by-6.html": [ + [ + "svg/animations/svglength-additive-by-6.html", + {} + ] + ], + "svg/animations/svglength-additive-by-7.html": [ + [ + "svg/animations/svglength-additive-by-7.html", + {} + ] + ], + "svg/animations/svglength-additive-by-8.html": [ + [ + "svg/animations/svglength-additive-by-8.html", + {} + ] + ], + "svg/animations/svglength-additive-from-by-1.html": [ + [ + "svg/animations/svglength-additive-from-by-1.html", + {} + ] + ], + "svg/animations/svglength-additive-from-by-2.html": [ + [ + "svg/animations/svglength-additive-from-by-2.html", + {} + ] + ], + "svg/animations/svglength-additive-from-by-3.html": [ + [ + "svg/animations/svglength-additive-from-by-3.html", + {} + ] + ], + "svg/animations/svglength-additive-from-by-4.html": [ + [ + "svg/animations/svglength-additive-from-by-4.html", + {} + ] + ], + "svg/animations/svglength-animation-LengthModeHeight.html": [ + [ + "svg/animations/svglength-animation-LengthModeHeight.html", + {} + ] + ], + "svg/animations/svglength-animation-LengthModeOther.html": [ + [ + "svg/animations/svglength-animation-LengthModeOther.html", + {} + ] + ], + "svg/animations/svglength-animation-LengthModeWidth.html": [ + [ + "svg/animations/svglength-animation-LengthModeWidth.html", + {} + ] + ], + "svg/animations/svglength-animation-invalid-value-1.html": [ + [ + "svg/animations/svglength-animation-invalid-value-1.html", + {} + ] + ], + "svg/animations/svglength-animation-invalid-value-2.html": [ + [ + "svg/animations/svglength-animation-invalid-value-2.html", + {} + ] + ], + "svg/animations/svglength-animation-invalid-value-3.html": [ + [ + "svg/animations/svglength-animation-invalid-value-3.html", + {} + ] + ], + "svg/animations/svglength-animation-number-to-number.html": [ + [ + "svg/animations/svglength-animation-number-to-number.html", + {} + ] + ], + "svg/animations/svglength-animation-px-to-cm.html": [ + [ + "svg/animations/svglength-animation-px-to-cm.html", + {} + ] + ], + "svg/animations/svglength-animation-px-to-ems.html": [ + [ + "svg/animations/svglength-animation-px-to-ems.html", + {} + ] + ], + "svg/animations/svglength-animation-px-to-in.html": [ + [ + "svg/animations/svglength-animation-px-to-in.html", + {} + ] + ], + "svg/animations/svglength-animation-px-to-number.html": [ + [ + "svg/animations/svglength-animation-px-to-number.html", + {} + ] + ], + "svg/animations/svglength-animation-px-to-pc.html": [ + [ + "svg/animations/svglength-animation-px-to-pc.html", + {} + ] + ], + "svg/animations/svglength-animation-px-to-pt.html": [ + [ + "svg/animations/svglength-animation-px-to-pt.html", + {} + ] + ], + "svg/animations/svglength-animation-px-to-px.html": [ + [ + "svg/animations/svglength-animation-px-to-px.html", + {} + ] + ], + "svg/animations/svglength-animation-unitType.html": [ + [ + "svg/animations/svglength-animation-unitType.html", + {} + ] + ], + "svg/animations/svglength-animation-values.html": [ + [ + "svg/animations/svglength-animation-values.html", + {} + ] + ], + "svg/animations/svglengthlist-animation-1.html": [ + [ + "svg/animations/svglengthlist-animation-1.html", + {} + ] + ], + "svg/animations/svglengthlist-animation-2.html": [ + [ + "svg/animations/svglengthlist-animation-2.html", + {} + ] + ], + "svg/animations/svglengthlist-animation-3.html": [ + [ + "svg/animations/svglengthlist-animation-3.html", + { + "timeout": "long" + } + ] + ], + "svg/animations/svglengthlist-animation-4.html": [ + [ + "svg/animations/svglengthlist-animation-4.html", + {} + ] + ], + "svg/animations/svglengthlist-animation-5.html": [ + [ + "svg/animations/svglengthlist-animation-5.html", + {} + ] + ], + "svg/animations/svgnumber-animation-1.html": [ + [ + "svg/animations/svgnumber-animation-1.html", + {} + ] + ], + "svg/animations/svgnumber-animation-2.html": [ + [ + "svg/animations/svgnumber-animation-2.html", + {} + ] + ], + "svg/animations/svgnumber-animation-3.html": [ + [ + "svg/animations/svgnumber-animation-3.html", + {} + ] + ], + "svg/animations/svgnumber-animation-4.html": [ + [ + "svg/animations/svgnumber-animation-4.html", + {} + ] + ], + "svg/animations/svgnumberlist-animation-1.html": [ + [ + "svg/animations/svgnumberlist-animation-1.html", + {} + ] + ], + "svg/animations/svgnumberlist-animation-2.html": [ + [ + "svg/animations/svgnumberlist-animation-2.html", + {} + ] + ], + "svg/animations/svgnumberoptionalnumber-animation-1.html": [ + [ + "svg/animations/svgnumberoptionalnumber-animation-1.html", + {} + ] + ], + "svg/animations/svgnumberoptionalnumber-animation-2.html": [ + [ + "svg/animations/svgnumberoptionalnumber-animation-2.html", + {} + ] + ], + "svg/animations/svgnumberoptionalnumber-animation-3.html": [ + [ + "svg/animations/svgnumberoptionalnumber-animation-3.html", + {} + ] + ], "svg/animations/svgnumberoptionalnumber-animation-4.html": [ [ "svg/animations/svgnumberoptionalnumber-animation-4.html", @@ -590580,6 +590888,10 @@ "2e93f34363748585836a28ac86581dbcd8863d7e", "reftest" ], + "css/css-writing-modes/bidi-line-break-001.html": [ + "f46b56b76cc011126055bd7327edb4ec4963f9ad", + "testharness" + ], "css/css-writing-modes/bidi-normal-001.html": [ "59479c538ce2114bfdec8bf3a6b91af8be2b8735", "reftest" @@ -642853,7 +643165,7 @@ "support" ], "mathml/support/box-comparison.js": [ - "77d145b36324d1ac4f06b97a49f8609d6202c9bc", + "c46808f7fee6f72ec9e7ffd4946239d9dcaad25b", "support" ], "mathml/support/feature-detection.js": [ @@ -665429,7 +665741,7 @@ "support" ], "resources/SVGAnimationTestCase-testharness.js": [ - "8fabc9a8c110ac6210a298ed08cbb33d8ecd9266", + "59febda86d63f3109e74901620d1c1562554c754", "support" ], "resources/check-layout-th.js": [ @@ -671584,6 +671896,206 @@ "86a0a40fa2de116c5b2076641180b24688d56f9b", "testharness" ], + "svg/animations/svgenum-animation-3.html": [ + "5ed9f5aa8819510f8a7701e5edb7d00fb716aa70", + "testharness" + ], + "svg/animations/svgenum-animation-4.html": [ + "652e49655e1027ce7a6a8c3d6ad29d76eb6fc85b", + "testharness" + ], + "svg/animations/svgenum-animation-5.html": [ + "1487918bde23a642fd5a49de844b5e880d662f27", + "testharness" + ], + "svg/animations/svgenum-animation-6.html": [ + "e60c93bbbf67cbfbe0bfe7a7f655ac3cb2feb44e", + "testharness" + ], + "svg/animations/svgenum-animation-7.html": [ + "4e2d27e581c687106d3056f825ad11b2efaefdd4", + "testharness" + ], + "svg/animations/svgenum-animation-8.html": [ + "cd00e46d56d7133b565adebad45aa4efe341313f", + "testharness" + ], + "svg/animations/svgenum-animation-9.html": [ + "8aa9d6a761803b726c4de7f8a6eee1df31c2a55c", + "testharness" + ], + "svg/animations/svginteger-animation-1.html": [ + "7803541691858ddf64f63c7486ad369254572220", + "testharness" + ], + "svg/animations/svginteger-animation-2.html": [ + "25ef7ff08effb49c9953981756d482846b590aaf", + "testharness" + ], + "svg/animations/svglength-additive-by-1.html": [ + "67549890cff56769c3df9973266b76e128f90c6d", + "testharness" + ], + "svg/animations/svglength-additive-by-2.html": [ + "e08c99cb63eebf462bcd037ad0219145b291aa9f", + "testharness" + ], + "svg/animations/svglength-additive-by-3.html": [ + "b5ac7a033ec2524e9bd8119227dcc88f63924254", + "testharness" + ], + "svg/animations/svglength-additive-by-4.html": [ + "10e8bd7b491a9083141dd4d260db951046096fe2", + "testharness" + ], + "svg/animations/svglength-additive-by-6.html": [ + "43beafe220e4c02d312da9fe4a653054d40d3d0d", + "testharness" + ], + "svg/animations/svglength-additive-by-7.html": [ + "7c1dde4a7c6262d64130ef84e4fa0b05b360b154", + "testharness" + ], + "svg/animations/svglength-additive-by-8.html": [ + "c61cb65ebd923f82d3c44ae00328e4712d214019", + "testharness" + ], + "svg/animations/svglength-additive-from-by-1.html": [ + "ce458e0266c68665a68adab94aa706ed4ccb4a84", + "testharness" + ], + "svg/animations/svglength-additive-from-by-2.html": [ + "1ac7eed4e1b3d03b5b44dde6fad6209f21ab0aa4", + "testharness" + ], + "svg/animations/svglength-additive-from-by-3.html": [ + "1c22f351da43b6723a360706c23ed6f351844e70", + "testharness" + ], + "svg/animations/svglength-additive-from-by-4.html": [ + "998c37458f98538333395d74e1f89a21ac7f0548", + "testharness" + ], + "svg/animations/svglength-animation-LengthModeHeight.html": [ + "2bb409e8e10ea7ba72fdf882e8c7a300e822c1ce", + "testharness" + ], + "svg/animations/svglength-animation-LengthModeOther.html": [ + "1fd9e0a3b9b0f2093f35769dc91a1badea5b4a86", + "testharness" + ], + "svg/animations/svglength-animation-LengthModeWidth.html": [ + "9481d434b9a11f8f2753497924a762a5c1e95662", + "testharness" + ], + "svg/animations/svglength-animation-invalid-value-1.html": [ + "9b45c5a8ca0dd1fec4aad07c02e6bbc7caad0a3a", + "testharness" + ], + "svg/animations/svglength-animation-invalid-value-2.html": [ + "64d5884df44bc1334da2750b0c23ce52e0ad5028", + "testharness" + ], + "svg/animations/svglength-animation-invalid-value-3.html": [ + "0fb1794eaa2c738e17ba42a63c478d877e52de29", + "testharness" + ], + "svg/animations/svglength-animation-number-to-number.html": [ + "0b4fca52ec0f878023ce6ba62fcde0e7426bbc8d", + "testharness" + ], + "svg/animations/svglength-animation-px-to-cm.html": [ + "f51beed02b3df9382df78d5ba211c9555bfd5d87", + "testharness" + ], + "svg/animations/svglength-animation-px-to-ems.html": [ + "e65125303e10d3572cc53abef54d8cad4a781df2", + "testharness" + ], + "svg/animations/svglength-animation-px-to-in.html": [ + "a55b357187aa01dc9eaace04a89eb17cd2ad6557", + "testharness" + ], + "svg/animations/svglength-animation-px-to-number.html": [ + "8eab444caa3eda56eda3f5600f5f031d68b8d60e", + "testharness" + ], + "svg/animations/svglength-animation-px-to-pc.html": [ + "62d9d9964f1dc9a1952cf45417572fc6a13a99cc", + "testharness" + ], + "svg/animations/svglength-animation-px-to-pt.html": [ + "d86e09075788d37c05f418252686fe3d8c56b87a", + "testharness" + ], + "svg/animations/svglength-animation-px-to-px.html": [ + "fdeb773375a290d6f925d42be90dd0401222947f", + "testharness" + ], + "svg/animations/svglength-animation-unitType.html": [ + "4cd6d2d3af5e94e259195cc1d5599132dd8a69b6", + "testharness" + ], + "svg/animations/svglength-animation-values.html": [ + "a3e485320b0e76b9e6cc5c176c4e114d939f56bb", + "testharness" + ], + "svg/animations/svglengthlist-animation-1.html": [ + "198fc8a6fef879ea9397f6668b38a10a9b4d755a", + "testharness" + ], + "svg/animations/svglengthlist-animation-2.html": [ + "c1c91b83f0f652d3d04e277c3a13d116af291147", + "testharness" + ], + "svg/animations/svglengthlist-animation-3.html": [ + "d26e67a8a05a049378bda86cc15ff2e5dbedc2fa", + "testharness" + ], + "svg/animations/svglengthlist-animation-4.html": [ + "0e890ab5f5a16e53ce10a3f7c68e99a25e764989", + "testharness" + ], + "svg/animations/svglengthlist-animation-5.html": [ + "5d0bc2b4836fcc934b4676eb1d79e23e15b5e148", + "testharness" + ], + "svg/animations/svgnumber-animation-1.html": [ + "72c2d736771868b615d723958324307a6f96be66", + "testharness" + ], + "svg/animations/svgnumber-animation-2.html": [ + "1654480ffced7d79bf28595664bc6dc8d524ba07", + "testharness" + ], + "svg/animations/svgnumber-animation-3.html": [ + "255eeb0a94c66f6337af8079f6eef8e6416586e4", + "testharness" + ], + "svg/animations/svgnumber-animation-4.html": [ + "758138d6678a2afa778c766b9072e47307e5341d", + "testharness" + ], + "svg/animations/svgnumberlist-animation-1.html": [ + "aabb7d7daa159409706ad2ff59e54220218f25a2", + "testharness" + ], + "svg/animations/svgnumberlist-animation-2.html": [ + "e62bbf68602dbe439b2659aac3727f8f6c40e2d0", + "testharness" + ], + "svg/animations/svgnumberoptionalnumber-animation-1.html": [ + "b20855140ffcd398778d3375aa9ac395aa221776", + "testharness" + ], + "svg/animations/svgnumberoptionalnumber-animation-2.html": [ + "db2576533ce22a0a4aa68d8113ae858bf1cf17aa", + "testharness" + ], + "svg/animations/svgnumberoptionalnumber-animation-3.html": [ + "974c1d7034a86e585c84cf9576fb231db7601fc3", + "testharness" + ], "svg/animations/svgnumberoptionalnumber-animation-4.html": [ "4c734b5373762e9844511f5ac7b550743a50f0b2", "testharness" diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini index 01614c846e7..5f4df6b4ebe 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -312,12 +312,6 @@ [<iframe>: separate response Content-Type: */* text/html] expected: FAIL - [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html] - expected: FAIL - - [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] - expected: FAIL - [<iframe>: separate response Content-Type: text/html */*] expected: FAIL @@ -336,6 +330,9 @@ [<iframe>: separate response Content-Type: text/html */*;charset=gbk] expected: FAIL - [<iframe>: combined response Content-Type: text/html;x=" text/plain] + [<iframe>: separate response Content-Type: text/html;" text/plain] + expected: FAIL + + [<iframe>: combined response Content-Type: text/html */*;charset=gbk] expected: FAIL diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini index 5406e8fa8fb..b2ffc8abf78 100644 --- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini @@ -53,9 +53,6 @@ [combined text/javascript ] expected: FAIL - [separate text/javascript;charset=windows-1252 text/javascript] - expected: FAIL - [separate text/javascript x/x] expected: FAIL diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini index 87c807a49ff..d4ba399b762 100644 --- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini +++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini @@ -11,3 +11,6 @@ [X-Content-Type-Options%3A%20nosniff%0C] expected: FAIL + [X-Content-Type-Options%3A%20'NosniFF'] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini deleted file mode 100644 index 87b07c3e670..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_1.html] - [Multiple history traversals from the same task] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini index 51f8272a6de..dc2e45516de 100644 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini @@ -1,4 +1,4 @@ -[traverse_the_history_3.html] +[traverse_the_history_5.html] [Multiple history traversals, last would be aborted] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini deleted file mode 100644 index 16fa2c5cfc1..00000000000 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[creating_browsing_context_test_01.html] - [first argument: absolute url] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini index e02f179ec25..bf50d59df41 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini @@ -1,24 +1,5 @@ [open-features-negative-innerwidth-innerheight.html] type: testharness - expected: TIMEOUT [HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`] expected: FAIL - [features "innerheight=-404.5" should NOT set "height=404"] - expected: TIMEOUT - - [features "innerwidth=-404.5" should NOT set "width=404"] - expected: TIMEOUT - - [features "innerwidth=-404" should NOT set "width=404"] - expected: TIMEOUT - - [features "innerheight=-404e1" should NOT set "height=404"] - expected: TIMEOUT - - [features "innerheight=-404" should NOT set "height=404"] - expected: TIMEOUT - - [features "innerwidth=-404e1" should NOT set "width=404"] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini index 23eefb8eaf9..e150c9d848f 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini @@ -1,24 +1,5 @@ [open-features-negative-screenx-screeny.html] type: testharness - expected: TIMEOUT [HTML: window.open `features`: negative values for legacy `screenx`, `screeny`] expected: FAIL - [features "screenx=-204" should NOT set "left=204"] - expected: TIMEOUT - - [features "screeny=-204" should NOT set "top=204"] - expected: TIMEOUT - - [features "screeny=-204.5" should NOT set "top=204"] - expected: TIMEOUT - - [features "screeny=-0" should NOT set "top=204"] - expected: TIMEOUT - - [features "screenx=-0" should NOT set "left=204"] - expected: TIMEOUT - - [features "screenx=-204.5" should NOT set "left=204"] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini index 940516ddd33..ad8840fbb68 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini @@ -1,24 +1,5 @@ [open-features-negative-top-left.html] type: testharness - expected: TIMEOUT [HTML: window.open `features`: negative values for `top`, `left`] expected: FAIL - [features "top=-204" should NOT set "top=204"] - expected: TIMEOUT - - [features "top=-204.5" should NOT set "top=204"] - expected: TIMEOUT - - [features "left=-204" should NOT set "left=204"] - expected: TIMEOUT - - [features "top=-0" should NOT set "top=204"] - expected: TIMEOUT - - [features "left=-204.5" should NOT set "left=204"] - expected: TIMEOUT - - [features "left=-0" should NOT set "left=204"] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini index 9027336b453..d1ed9088b2b 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini @@ -1,24 +1,5 @@ [open-features-negative-width-height.html] type: testharness - expected: TIMEOUT [HTML: window.open `features`: negative values for `width`, `height`] expected: FAIL - [features "height=-404" should NOT set "height=404"] - expected: TIMEOUT - - [features "height=-404e1" should NOT set "height=404"] - expected: TIMEOUT - - [features "height=-404.5" should NOT set "height=404"] - expected: TIMEOUT - - [features "width=-404" should NOT set "width=404"] - expected: TIMEOUT - - [features "width=-404e1" should NOT set "width=404"] - expected: TIMEOUT - - [features "width=-404.5" should NOT set "width=404"] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini index 4e44584b123..a70e9dbad4d 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini @@ -1,48 +1,32 @@ [open-features-non-integer-height.html] type: testharness - expected: TIMEOUT [HTML: window.open `features`: non-integer values for feature `height`] expected: FAIL [features "height=405*3" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "height=405.32" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "height=405e1" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "height=405/5" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "height=405^4" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "height=405.5" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "height=405e-1" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "height=405 " should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "height=405LLl" should set "height=405"] - expected: TIMEOUT - - [features "height=/404" should NOT set "height=404"] - expected: TIMEOUT - - [top=0,left=0,width=401,: absence of feature "height" should be treated same as "height=0"] - expected: TIMEOUT - - [top=0,left=0: absence of feature "height" should be treated same as "height=0"] - expected: TIMEOUT - - [features "height=_404" should NOT set "height=404"] - expected: TIMEOUT - - [features "height=L404" should NOT set "height=404"] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini index fcaeae5336d..779531b4a98 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini @@ -1,42 +1,32 @@ [open-features-non-integer-innerheight.html] type: testharness - expected: TIMEOUT [HTML: window.open `features`: non-integer values for legacy feature `innerheight`] expected: FAIL [features "innerheight=405e-1" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "innerheight=405LLl" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "innerheight=405^4" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "innerheight=405e1" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "innerheight=405 " should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "innerheight=405/5" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "innerheight=405.32" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "innerheight=405.5" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "innerheight=405*3" should set "height=405"] - expected: TIMEOUT - - [features "innerheight=_404" should NOT set "height=404"] - expected: TIMEOUT - - [features "innerheight=L404" should NOT set "height=404"] - expected: TIMEOUT - - [features "innerheight=/404" should NOT set "height=404"] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini index 42327fedd27..7a1b258d52e 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini @@ -1,42 +1,32 @@ [open-features-non-integer-innerwidth.html] type: testharness - expected: TIMEOUT [HTML: window.open `features`: non-integer values for legacy feature `innerwidth`] expected: FAIL [features "innerwidth=405e-1" should set "width=405"] - expected: TIMEOUT + expected: FAIL [features "innerwidth=405*3" should set "width=405"] - expected: TIMEOUT + expected: FAIL [features "innerwidth=405.5" should set "width=405"] - expected: TIMEOUT + expected: FAIL [features "innerwidth=405e1" should set "width=405"] - expected: TIMEOUT + expected: FAIL [features "innerwidth=405.32" should set "width=405"] - expected: TIMEOUT + expected: FAIL [features "innerwidth=405 " should set "width=405"] - expected: TIMEOUT + expected: FAIL [features "innerwidth=405LLl" should set "width=405"] - expected: TIMEOUT + expected: FAIL [features "innerwidth=405/5" should set "width=405"] - expected: TIMEOUT + expected: FAIL [features "innerwidth=405^4" should set "width=405"] - expected: TIMEOUT - - [features "innerwidth=/404" should NOT set "width=404"] - expected: TIMEOUT - - [features "innerwidth=_404" should NOT set "width=404"] - expected: TIMEOUT - - [features "innerwidth=L404" should NOT set "width=404"] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini index a8e4fe06618..caba4124f0b 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini @@ -1,42 +1,32 @@ [open-features-non-integer-left.html] type: testharness - expected: TIMEOUT [HTML: window.open `features`: non-integer values for feature `left`] expected: FAIL [features "left=105e1" should set "left=105"] - expected: TIMEOUT + expected: FAIL [features "left=105 " should set "left=105"] - expected: TIMEOUT + expected: FAIL [features "left=105/5" should set "left=105"] - expected: TIMEOUT + expected: FAIL [features "left=105e-1" should set "left=105"] - expected: TIMEOUT + expected: FAIL [features "left=105^4" should set "left=105"] - expected: TIMEOUT + expected: FAIL [features "left=105LLl" should set "left=105"] - expected: TIMEOUT + expected: FAIL [features "left=105.32" should set "left=105"] - expected: TIMEOUT + expected: FAIL [features "left=105*3" should set "left=105"] - expected: TIMEOUT + expected: FAIL [features "left=105.5" should set "left=105"] - expected: TIMEOUT - - [features "left=L104" should NOT set "left=104"] - expected: TIMEOUT - - [features "left=/104" should NOT set "left=104"] - expected: TIMEOUT - - [features "left=_104" should NOT set "left=104"] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini index 64a08faf0e6..9ace8a4cbdb 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini @@ -1,42 +1,32 @@ [open-features-non-integer-screenx.html] type: testharness - expected: TIMEOUT [HTML: window.open `features`: non-integer values for legacy feature `screenx`] expected: FAIL [features "screenx=105.5" should set "left=105"] - expected: TIMEOUT + expected: FAIL [features "screenx=105e1" should set "left=105"] - expected: TIMEOUT + expected: FAIL [features "screenx=105 " should set "left=105"] - expected: TIMEOUT + expected: FAIL [features "screenx=105*3" should set "left=105"] - expected: TIMEOUT + expected: FAIL [features "screenx=105e-1" should set "left=105"] - expected: TIMEOUT + expected: FAIL [features "screenx=105^4" should set "left=105"] - expected: TIMEOUT + expected: FAIL [features "screenx=105LLl" should set "left=105"] - expected: TIMEOUT + expected: FAIL [features "screenx=105/5" should set "left=105"] - expected: TIMEOUT + expected: FAIL [features "screenx=105.32" should set "left=105"] - expected: TIMEOUT - - [features "screenx=_104" should NOT set "left=104"] - expected: TIMEOUT - - [features "screenx=L104" should NOT set "left=104"] - expected: TIMEOUT - - [features "screenx=/104" should NOT set "left=104"] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini index 4f22ef4ef29..a82bd0f981a 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini @@ -1,42 +1,32 @@ [open-features-non-integer-screeny.html] type: testharness - expected: TIMEOUT [HTML: window.open `features`: non-integer values for legacy feature `screeny`] expected: FAIL [features "screeny=405^4" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "screeny=405e-1" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "screeny=405LLl" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "screeny=405e1" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "screeny=405 " should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "screeny=405/5" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "screeny=405*3" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "screeny=405.32" should set "height=405"] - expected: TIMEOUT + expected: FAIL [features "screeny=405.5" should set "height=405"] - expected: TIMEOUT - - [features "screeny=_404" should NOT set "height=404"] - expected: TIMEOUT - - [features "screeny=L404" should NOT set "height=404"] - expected: TIMEOUT - - [features "screeny=/404" should NOT set "height=404"] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini index 8540f53d8d6..10f617db69e 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini @@ -1,42 +1,32 @@ [open-features-non-integer-top.html] type: testharness - expected: TIMEOUT [HTML: window.open `features`: non-integer values for feature `top`] expected: FAIL [features "top=105/5" should set "top=105"] - expected: TIMEOUT + expected: FAIL [features "top=105*3" should set "top=105"] - expected: TIMEOUT + expected: FAIL [features "top=105LLl" should set "top=105"] - expected: TIMEOUT + expected: FAIL [features "top=105e-1" should set "top=105"] - expected: TIMEOUT + expected: FAIL [features "top=105.32" should set "top=105"] - expected: TIMEOUT + expected: FAIL [features "top=105e1" should set "top=105"] - expected: TIMEOUT + expected: FAIL [features "top=105 " should set "top=105"] - expected: TIMEOUT + expected: FAIL [features "top=105^4" should set "top=105"] - expected: TIMEOUT + expected: FAIL [features "top=105.5" should set "top=105"] - expected: TIMEOUT - - [features "top=/104" should NOT set "top=104"] - expected: TIMEOUT - - [features "top=_104" should NOT set "top=104"] - expected: TIMEOUT - - [features "top=L104" should NOT set "top=104"] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini index 9d841e61bc0..28f93ee71b5 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini @@ -1,48 +1,32 @@ [open-features-non-integer-width.html] type: testharness - expected: TIMEOUT [HTML: window.open `features`: non-integer values for feature `width`] expected: FAIL [features "width=405^4" should set "width=405"] - expected: TIMEOUT + expected: FAIL [features "width=405.5" should set "width=405"] - expected: TIMEOUT + expected: FAIL [features "width=405e1" should set "width=405"] - expected: TIMEOUT + expected: FAIL [features "width=405 " should set "width=405"] - expected: TIMEOUT + expected: FAIL [features "width=405.32" should set "width=405"] - expected: TIMEOUT + expected: FAIL [features "width=405LLl" should set "width=405"] - expected: TIMEOUT + expected: FAIL [features "width=405*3" should set "width=405"] - expected: TIMEOUT + expected: FAIL [features "width=405e-1" should set "width=405"] - expected: TIMEOUT + expected: FAIL [features "width=405/5" should set "width=405"] - expected: TIMEOUT - - [top=0,left=0: absence of feature "width" should be treated same as "width=0"] - expected: TIMEOUT - - [features "width=_404" should NOT set "width=404"] - expected: TIMEOUT - - [top=0,left=0,height=401,: absence of feature "width" should be treated same as "width=0"] - expected: TIMEOUT - - [features "width=/404" should NOT set "width=404"] - expected: TIMEOUT - - [features "width=L404" should NOT set "width=404"] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini b/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini index 5c59982f790..5a549d938b6 100644 --- a/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini +++ b/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini @@ -11,6 +11,3 @@ [The iframe should have one resource timing entry.] expected: FAIL - [responseEnd should not be 0 in timing-allow cross-origin request.] - expected: FAIL - diff --git a/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini b/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini index aa36a14c6a6..494f0d4a752 100644 --- a/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini +++ b/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini @@ -20,6 +20,3 @@ [domainLookupStart should be 0 in cross-origin request.] expected: FAIL - [responseEnd should be greater than 0 in cross-origin request.] - expected: FAIL - diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini index a56bad443a2..66bd350083b 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini @@ -1,5 +1,4 @@ [realtimeanalyser-fft-scaling.html] - expected: TIMEOUT [X 2048-point FFT peak position is not equal to 64. Got 0.] expected: FAIL diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini index a7b4ab4cc85..5babc864bfd 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini @@ -164,3 +164,9 @@ [X SNR (-664.7665372056329 dB) is not greater than or equal to 65.737. Got -664.7665372056329.] expected: FAIL + [X SNR (-138.18041778733868 dB) is not greater than or equal to 65.737. Got -138.18041778733868.] + expected: FAIL + + [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t9.4836157560348511e-1\t9.5236867666244507e-1\t4.0071010589599609e-3\t4.2075103446311962e-3\t3.8985999999999999e-3\n\t[31\]\t9.2646563053131104e-1\t9.3139332532882690e-1\t4.9276947975158691e-3\t5.2906700783754857e-3\t3.8985999999999999e-3\n\t[32\]\t9.0087991952896118e-1\t9.0675884485244751e-1\t5.8789253234863281e-3\t6.4834496590358351e-3\t3.8985999999999999e-3\n\t[33\]\t8.7170630693435669e-1\t8.7856203317642212e-1\t6.8557262420654297e-3\t7.8033490899654511e-3\t3.8985999999999999e-3\n\t[34\]\t8.3906102180480957e-1\t8.4691369533538818e-1\t7.8526735305786133e-3\t9.2721059699818163e-3\t3.8985999999999999e-3\n\t...and 31037 more errors.\n\tMax AbsError of 8.8099737698276448e+8 at index of 39267.\n\t[39267\]\t8.8099737600000000e+8\t-9.8276454210281372e-1\t8.8099737698276448e+8\t8.9644806994939113e+8\t3.8985999999999999e-3\n\tMax RelError of 1.7257971997243075e+9 at index of 20238.\n\t[20238\]\t8.2104729600000000e+8\t-4.7574958205223083e-1\t8.2104729647574961e+8\t1.7257971997243075e+9\t3.8985999999999999e-3\n] + expected: FAIL + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/bidi-line-break-001.html b/tests/wpt/web-platform-tests/css/css-writing-modes/bidi-line-break-001.html new file mode 100644 index 00000000000..f46b56b76cc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/bidi-line-break-001.html @@ -0,0 +1,56 @@ +<!DOCTYPE html> +<title>Test implicit bidi controls do not affect line breaking</title> +<link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#unicode-bidi"> +<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org"> +<style> +html { + font-size: 10px; + line-height: 1; +} +.isolate { + unicode-bidi: isolate; +} +.embed { + unicode-bidi: embed; +} +</style> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<body> +<div id=log></div> +<div id="container"> + <div style="width: 4ch" data-expected-height="20"> + <span class="isolate" dir="ltr">00</span> <span class="isolate" dir="ltr">00</span> + </div> + <div style="width: 4ch" data-expected-height="20"> + <span class="embed" dir="ltr">00</span> <span class="embed" dir="ltr">00</span> + </div> + + <div style="width: 4ch" data-expected-height="20"> + <span dir="ltr">00</span> <span dir="ltr">00</span> + </div> + <div style="width: 4ch" data-expected-height="20"> + <bdi dir="ltr">00</bdi> <bdi dir="ltr">00</bdi> + </div> + <div style="width: 4ch" data-expected-height="20"> + <bdo dir="ltr">00</bdo> <bdo dir="ltr">00</bdo> + </div> + + <div style="width: 4ch" data-expected-height="20"> + <span class="isolate" dir="ltr">00 </span><span class="isolate" dir="ltr">00</span> + </div> + <div style="width: 4ch" data-expected-height="20"> + <span class="embed" dir="ltr">00 </span><span class="embed" dir="ltr">00</span> + </div> +</div> +<script> +run(); +function run() { + for (let node of document.getElementById('container').children) { + test(() => { + assert_approx_equals(node.offsetHeight, 20, 1); + }, node.innerHTML); + } +} +</script> +</body> diff --git a/tests/wpt/web-platform-tests/mathml/support/box-comparison.js b/tests/wpt/web-platform-tests/mathml/support/box-comparison.js index 77d145b3632..c46808f7fee 100644 --- a/tests/wpt/web-platform-tests/mathml/support/box-comparison.js +++ b/tests/wpt/web-platform-tests/mathml/support/box-comparison.js @@ -22,7 +22,7 @@ function compareSpaceWithAndWithoutStyle(tag, style, parentStyle, direction) { if (!direction) direction = "ltr"; - document.body.insertAdjacentHTML("beforeend", `<div>\ + document.body.insertAdjacentHTML("beforeend", `<div style="position: absolute;">\ <math><mrow dir="${direction}">${MathMLFragments[tag]}</mrow></math>\ <math><mrow dir="${direction}">${MathMLFragments[tag]}</mrow></math>\ </div>`); @@ -64,7 +64,7 @@ function compareSizeWithAndWithoutStyle(tag, style) { if (!FragmentHelper.isValidChildOfMrow(tag)) throw `Invalid argument: ${tag}`; - document.body.insertAdjacentHTML("beforeend", `<div>\ + document.body.insertAdjacentHTML("beforeend", `<div style="position: absolute;">\ <math>${MathMLFragments[tag]}</math>\ <math>${MathMLFragments[tag]}</math>\ </div>`); diff --git a/tests/wpt/web-platform-tests/resources/SVGAnimationTestCase-testharness.js b/tests/wpt/web-platform-tests/resources/SVGAnimationTestCase-testharness.js index 8fabc9a8c11..59febda86d6 100644 --- a/tests/wpt/web-platform-tests/resources/SVGAnimationTestCase-testharness.js +++ b/tests/wpt/web-platform-tests/resources/SVGAnimationTestCase-testharness.js @@ -1,5 +1,5 @@ // NOTE(edvardt): -// This file is a slimmed down wrapper for the Chromium SVGAnimationTestCase.js, +// This file is a slimmed down wrapper for the old SVGAnimationTestCase.js, // it has some convenience functions and should not be used for new tests. // New tests should not build on this API as it's just meant to keep things // working. @@ -32,6 +32,7 @@ function createSVGElement(type) { return document.createElementNS("http://www.w3.org/2000/svg", type); } +// Inspired by Layoutests/animations/animation-test-helpers.js function moveAnimationTimelineAndSample(index) { var animationId = expectedResults[index][0]; var time = expectedResults[index][1]; diff --git a/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-3.html b/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-3.html new file mode 100644 index 00000000000..5ed9f5aa881 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-3.html @@ -0,0 +1,62 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGLengthAdjustType enumeration animations</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Initiate the test by clicking at (1, 50) - the 'S'. +window.clickX = 1; + +// Setup test document +var text = createSVGElement("text"); +text.setAttribute("id", "text"); +text.setAttribute("y", "50"); +text.setAttribute("textLength", "200"); +text.textContent = "Stretched text"; +text.setAttribute("onclick", "executeTest()"); +rootSVGElement.appendChild(text); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "lengthAdjust"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "spacing"); +animate.setAttribute("to", "spacingAndGlyphs"); +animate.setAttribute("fill", "freeze"); +text.appendChild(animate); + +// Setup animation test +function sample1() { + assert_equals(text.lengthAdjust.animVal, SVGTextContentElement.LENGTHADJUST_SPACING); + assert_equals(text.lengthAdjust.baseVal, SVGTextContentElement.LENGTHADJUST_SPACING); +} + +function sample2() { + assert_equals(text.lengthAdjust.animVal, SVGTextContentElement.LENGTHADJUST_SPACINGANDGLYPHS); + assert_equals(text.lengthAdjust.baseVal, SVGTextContentElement.LENGTHADJUST_SPACING); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 1.999, sample1], + ["animation", 2.001, sample2], + ["animation", 3.999, sample2], + ["animation", 4.001, sample2] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-4.html b/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-4.html new file mode 100644 index 00000000000..652e49655e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-4.html @@ -0,0 +1,182 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test CompositeOperationType enumeration animations</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var defsElement = createSVGElement("defs"); +rootSVGElement.appendChild(defsElement); + +var off1 = createSVGElement("feOffset"); +off1.setAttribute("dx", "35"); +off1.setAttribute("dy", "25"); +off1.setAttribute("result", "off1"); + +var flood1 = createSVGElement("feFlood"); +flood1.setAttribute("flood-color", "#408067"); +flood1.setAttribute("flood-opacity", ".8"); +flood1.setAttribute("result", "F1"); + +var overComposite1 = createSVGElement("feComposite"); +overComposite1.setAttribute("in", "F1"); +overComposite1.setAttribute("in2", "off1"); +overComposite1.setAttribute("operator", "over"); +overComposite1.setAttribute("k1", ".5"); +overComposite1.setAttribute("k2", ".1"); +overComposite1.setAttribute("k3", ".5"); +overComposite1.setAttribute("k4", ".3"); + +overComposite1.setAttribute("result", "C1"); + +var off2 = createSVGElement("feOffset"); +off2.setAttribute("in", "SourceGraphic"); +off2.setAttribute("dx", "60"); +off2.setAttribute("dy", "50"); +off2.setAttribute("result", "off2"); + +var flood2 = createSVGElement("feFlood"); +flood2.setAttribute("flood-color", "#408067"); +flood2.setAttribute("flood-opacity", ".6"); +flood2.setAttribute("result", "F2"); + +var overComposite2 = createSVGElement("feComposite"); +overComposite2.setAttribute("in", "F2"); +overComposite2.setAttribute("in2", "off2"); +overComposite2.setAttribute("operator", "in"); +overComposite2.setAttribute("result", "C2"); + +var off3 = createSVGElement("feOffset"); +off3.setAttribute("in", "SourceGraphic"); +off3.setAttribute("dx", "85"); +off3.setAttribute("dy", "75"); +off3.setAttribute("result", "off3"); + +var flood3 = createSVGElement("feFlood"); +flood3.setAttribute("flood-color", "#408067"); +flood3.setAttribute("flood-opacity", ".4"); +flood3.setAttribute("result", "F3"); + +var overComposite3 = createSVGElement("feComposite"); +overComposite3.setAttribute("in2", "off3"); +overComposite3.setAttribute("operator", "in"); +overComposite3.setAttribute("result", "C3"); + +var merge = createSVGElement("feMerge"); + +var mergeNode1 = createSVGElement("feMergeNode"); +mergeNode1.setAttribute("in", "C1"); + +var mergeNode2 = createSVGElement("feMergeNode"); +mergeNode2.setAttribute("in", "C2"); + +var mergeNode3 = createSVGElement("feMergeNode"); +mergeNode3.setAttribute("in", "C3"); + +var mergeNode4 = createSVGElement("feMergeNode"); +mergeNode4.setAttribute("in", "SourceGraphic"); + +merge.appendChild(mergeNode3); +merge.appendChild(mergeNode2); +merge.appendChild(mergeNode1); +merge.appendChild(mergeNode4); + +var overFilter = createSVGElement("filter"); +overFilter.setAttribute("id", "overFilter"); +overFilter.setAttribute("filterUnits", "objectBoundingBox"); +overFilter.setAttribute("x", "0"); +overFilter.setAttribute("y", "0"); +overFilter.setAttribute("width", "3.5"); +overFilter.setAttribute("height", "4"); +overFilter.appendChild(off1); +overFilter.appendChild(flood1); +overFilter.appendChild(overComposite1); +overFilter.appendChild(off2); +overFilter.appendChild(flood2); +overFilter.appendChild(overComposite2); +overFilter.appendChild(off3); +overFilter.appendChild(flood3); +overFilter.appendChild(overComposite3); +overFilter.appendChild(merge); + +defsElement.appendChild(overFilter); + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "#408067"); +rect.setAttribute("filter", "url(#overFilter)"); +rect.setAttribute("onclick", "executeTest()"); +rootSVGElement.appendChild(rect); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "operator"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "5s"); +animate.setAttribute("values", "in;out;atop;xor;arithmetic"); +overComposite1.appendChild(animate); + +// Setup animation test +function sample1() { + assert_equals(overComposite1.operator.animVal, SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_OVER); + assert_equals(overComposite1.operator.baseVal, SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_OVER); +} + +function sample2() { + assert_equals(overComposite1.operator.animVal, SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_IN); + assert_equals(overComposite1.operator.baseVal, SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_OVER); +} + +function sample3() { + assert_equals(overComposite1.operator.animVal, SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_OUT); + assert_equals(overComposite1.operator.baseVal, SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_OVER); +} + +function sample4() { + assert_equals(overComposite1.operator.animVal, SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_ATOP); + assert_equals(overComposite1.operator.baseVal, SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_OVER); +} + +function sample5() { + assert_equals(overComposite1.operator.animVal, SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_XOR); + assert_equals(overComposite1.operator.baseVal, SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_OVER); +} + +function sample6() { + assert_equals(overComposite1.operator.animVal, SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_ARITHMETIC); + assert_equals(overComposite1.operator.baseVal, SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_OVER); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 0.001, sample2], + ["animation", 0.999, sample2], + ["animation", 1.001, sample3], + ["animation", 1.999, sample3], + ["animation", 2.001, sample4], + ["animation", 2.999, sample4], + ["animation", 3.001, sample5], + ["animation", 3.999, sample5], + ["animation", 4.001, sample6], + ["animation", 4.999, sample6], + ["animation", 5.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-5.html b/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-5.html new file mode 100644 index 00000000000..1487918bde2 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-5.html @@ -0,0 +1,77 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test MorphologyOperatorType enumeration animations</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var defs = createSVGElement("defs"); +rootSVGElement.appendChild(defs); + +var morphology = createSVGElement("feMorphology"); +morphology.setAttribute("in", "SourceAlpha"); +morphology.setAttribute("operator", "dilate"); +morphology.setAttribute("radius", "4"); + +var filter = createSVGElement("filter"); +filter.setAttribute("id", "filter"); +filter.setAttribute("filterUnits", "userSpaceOnUse"); +filter.setAttribute("x", "0"); +filter.setAttribute("y", "0"); +filter.setAttribute("width", "700"); +filter.setAttribute("height", "200"); +filter.appendChild(morphology); +defs.appendChild(filter); + +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "#408067"); +rect.setAttribute("filter", "url(#filter)"); +rect.setAttribute("onclick", "executeTest()"); +rootSVGElement.appendChild(rect); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "operator"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "dilate"); +animate.setAttribute("to", "erode"); +morphology.appendChild(animate); + +// Setup animation test +function sample1() { + assert_equals(morphology.operator.animVal, SVGFEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_DILATE); + assert_equals(morphology.operator.baseVal, SVGFEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_DILATE); +} + +function sample2() { + assert_equals(morphology.operator.animVal, SVGFEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_ERODE); + assert_equals(morphology.operator.baseVal, SVGFEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_DILATE); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 1.999, sample1], + ["animation", 2.001, sample2], + ["animation", 3.999, sample2], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-6.html b/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-6.html new file mode 100644 index 00000000000..e60c93bbbf6 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-6.html @@ -0,0 +1,89 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test ColorMatrixType enumeration animations</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var defs = createSVGElement("defs"); +rootSVGElement.appendChild(defs); + +var colorMatrix = createSVGElement("feColorMatrix"); +colorMatrix.setAttribute("in", "SourceGraphic"); +colorMatrix.setAttribute("type", "matrix"); + +var filter = createSVGElement("filter"); +filter.setAttribute("id", "filter"); +filter.setAttribute("filterUnits", "userSpaceOnUse"); +filter.setAttribute("x", "0"); +filter.setAttribute("y", "0"); +filter.setAttribute("width", "700"); +filter.setAttribute("height", "200"); +filter.appendChild(colorMatrix); +defs.appendChild(filter); + +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "#408067"); +rect.setAttribute("filter", "url(#filter)"); +rect.setAttribute("onclick", "executeTest()"); +rootSVGElement.appendChild(rect); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "type"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("values", "matrix;saturate;hueRotate;luminanceToAlpha"); +colorMatrix.appendChild(animate); + +// Setup animation test +function sample1() { + assert_equals(colorMatrix.type.animVal, SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_MATRIX); + assert_equals(colorMatrix.type.baseVal, SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_MATRIX); +} + +function sample2() { + assert_equals(colorMatrix.type.animVal, SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE); + assert_equals(colorMatrix.type.baseVal, SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_MATRIX); +} + +function sample3() { + assert_equals(colorMatrix.type.animVal, SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_HUEROTATE); + assert_equals(colorMatrix.type.baseVal, SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_MATRIX); +} + +function sample4() { + assert_equals(colorMatrix.type.animVal, SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA); + assert_equals(colorMatrix.type.baseVal, SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_MATRIX); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 0.999, sample1], + ["animation", 1.001, sample2], + ["animation", 1.999, sample2], + ["animation", 2.001, sample3], + ["animation", 2.999, sample3], + ["animation", 3.001, sample4], + ["animation", 3.999, sample4], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-7.html b/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-7.html new file mode 100644 index 00000000000..4e2d27e581c --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-7.html @@ -0,0 +1,94 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGStitchOptions/TurbulenceType enumeration animations</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var defs = createSVGElement("defs"); +rootSVGElement.appendChild(defs); + +var filter = createSVGElement("filter"); +filter.setAttribute("id", "filter"); +filter.setAttribute("filterUnits", "userSpaceOnUse"); +filter.setAttribute("x", "0"); +filter.setAttribute("y", "0"); +filter.setAttribute("width", "700"); +filter.setAttribute("height", "200"); +defs.appendChild(filter); + +var turbulence = createSVGElement("feTurbulence"); +turbulence.setAttribute("in", "foo"); +turbulence.setAttribute("baseFrequency", "0.05"); +turbulence.setAttribute("numOctaves", "3"); +turbulence.setAttribute("seed", "5"); +turbulence.setAttribute("stitchTiles", "stitch"); +turbulence.setAttribute("type", "fractalNoise"); +filter.appendChild(turbulence); + +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "#408067"); +rect.setAttribute("filter", "url(#filter)"); +rect.setAttribute("onclick", "executeTest()"); +rootSVGElement.appendChild(rect); + +var animate1 = createSVGElement("animate"); +animate1.setAttribute("id", "animation"); +animate1.setAttribute("attributeName", "type"); +animate1.setAttribute("begin", "0s"); +animate1.setAttribute("dur", "4s"); +animate1.setAttribute("from", "fractalNoise"); +animate1.setAttribute("to", "turbulence"); +turbulence.appendChild(animate1); + +var animate2 = createSVGElement("animate"); +animate2.setAttribute("attributeName", "stitchTiles"); +animate2.setAttribute("begin", "0s"); +animate2.setAttribute("dur", "4s"); +animate2.setAttribute("from", "stitch"); +animate2.setAttribute("to", "noStitch"); +turbulence.appendChild(animate2); + +// Setup animation test +function sample1() { + assert_equals(turbulence.type.animVal, SVGFETurbulenceElement.SVG_TURBULENCE_TYPE_FRACTALNOISE); + assert_equals(turbulence.type.baseVal, SVGFETurbulenceElement.SVG_TURBULENCE_TYPE_FRACTALNOISE); + + assert_equals(turbulence.stitchTiles.animVal, SVGFETurbulenceElement.SVG_STITCHTYPE_STITCH); + assert_equals(turbulence.stitchTiles.baseVal, SVGFETurbulenceElement.SVG_STITCHTYPE_STITCH); +} + +function sample2() { + assert_equals(turbulence.type.animVal, SVGFETurbulenceElement.SVG_TURBULENCE_TYPE_TURBULENCE); + assert_equals(turbulence.type.baseVal, SVGFETurbulenceElement.SVG_TURBULENCE_TYPE_FRACTALNOISE); + + assert_equals(turbulence.stitchTiles.animVal, SVGFETurbulenceElement.SVG_STITCHTYPE_NOSTITCH); + assert_equals(turbulence.stitchTiles.baseVal, SVGFETurbulenceElement.SVG_STITCHTYPE_STITCH); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 1.999, sample1], + ["animation", 2.001, sample2], + ["animation", 3.999, sample2], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-8.html b/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-8.html new file mode 100644 index 00000000000..cd00e46d56d --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-8.html @@ -0,0 +1,114 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test ComponentTransferType enumeration animations</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var feRFunc = createSVGElement("feFuncR"); +feRFunc.setAttribute("type", "identity"); +feRFunc.setAttribute("amplitude", "10"); + +var feGFunc = createSVGElement("feFuncG"); +feGFunc.setAttribute("type", "identity"); +feGFunc.setAttribute("amplitude", "10"); + +var feBFunc = createSVGElement("feFuncB"); +feBFunc.setAttribute("type", "identity"); +feBFunc.setAttribute("amplitude", "110"); + +var feAFunc = createSVGElement("feFuncA"); +feAFunc.setAttribute("type", "identity"); +feAFunc.setAttribute("amplitude", "110"); + +var feComponentTransfer = createSVGElement("feComponentTransfer"); +feComponentTransfer.appendChild(feRFunc); +feComponentTransfer.appendChild(feGFunc); +feComponentTransfer.appendChild(feBFunc); +feComponentTransfer.appendChild(feAFunc); + +var filter = createSVGElement("filter"); +filter.setAttribute("id", "filter"); +filter.setAttribute("filterUnits", "objectBoundingBox"); +filter.setAttribute("x", "0%"); +filter.setAttribute("y", "0%"); +filter.setAttribute("width", "100%"); +filter.setAttribute("height", "100%"); +filter.appendChild(feComponentTransfer); + +var defs = createSVGElement("defs"); +defs.appendChild(filter); +rootSVGElement.appendChild(defs); + +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "#408067"); +rect.setAttribute("filter", "url(#filter)"); +rect.setAttribute("onclick", "executeTest()"); +rootSVGElement.appendChild(rect); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "type"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "5s"); +animate.setAttribute("values", "identity;table;discrete;linear;gamma"); +feRFunc.appendChild(animate); + +// Setup animation test +function sample1() { + assert_equals(feRFunc.type.animVal, SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY); + assert_equals(feRFunc.type.baseVal, SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY); +} + +function sample2() { + assert_equals(feRFunc.type.animVal, SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_TABLE); + assert_equals(feRFunc.type.baseVal, SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY); +} + +function sample3() { + assert_equals(feRFunc.type.animVal, SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE); + assert_equals(feRFunc.type.baseVal, SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY); +} + +function sample4() { + assert_equals(feRFunc.type.animVal, SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_LINEAR); + assert_equals(feRFunc.type.baseVal, SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY); +} + +function sample5() { + assert_equals(feRFunc.type.animVal, SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_GAMMA); + assert_equals(feRFunc.type.baseVal, SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 0.999, sample1], + ["animation", 1.001, sample2], + ["animation", 1.999, sample2], + ["animation", 2.001, sample3], + ["animation", 2.999, sample3], + ["animation", 3.001, sample4], + ["animation", 3.999, sample4], + ["animation", 4.001, sample5], + ["animation", 4.999, sample5], + ["animation", 5.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-9.html b/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-9.html new file mode 100644 index 00000000000..8aa9d6a7618 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svgenum-animation-9.html @@ -0,0 +1,83 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGTextPathSpacingType/SVGTextPathMethodType enumeration animations</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var path = createSVGElement("path"); +path.setAttribute("id", "path"); +path.setAttribute("d", "M 50 50 L 200 50"); +rootSVGElement.appendChild(path); + +var text = createSVGElement("text"); +text.setAttribute("id", "text"); +text.setAttribute("onclick", "executeTest()"); +rootSVGElement.appendChild(text); + +var textPath = createSVGElement("textPath"); +textPath.setAttributeNS(xlinkNS, "xlink:href", "#path"); +textPath.setAttribute("spacing", "auto"); +textPath.setAttribute("method", "align"); +textPath.textContent = "test"; +text.appendChild(textPath); + +var animate1 = createSVGElement("animate"); +animate1.setAttribute("id", "animation"); +animate1.setAttribute("attributeName", "spacing"); +animate1.setAttribute("begin", "0s"); +animate1.setAttribute("dur", "4s"); +animate1.setAttribute("from", "auto"); +animate1.setAttribute("to", "exact"); +animate1.setAttribute("fill", "freeze"); +textPath.appendChild(animate1); + +var animate2 = createSVGElement("animate"); +animate2.setAttribute("attributeName", "method"); +animate2.setAttribute("begin", "0s"); +animate2.setAttribute("dur", "4s"); +animate2.setAttribute("from", "align"); +animate2.setAttribute("to", "stretch"); +animate2.setAttribute("fill", "freeze"); +textPath.appendChild(animate2); + +// Setup animation test +function sample1() { + assert_equals(textPath.method.animVal, SVGTextPathElement.TEXTPATH_METHODTYPE_ALIGN); + assert_equals(textPath.method.baseVal, SVGTextPathElement.TEXTPATH_METHODTYPE_ALIGN); + + assert_equals(textPath.spacing.animVal, SVGTextPathElement.TEXTPATH_SPACINGTYPE_AUTO); + assert_equals(textPath.spacing.baseVal, SVGTextPathElement.TEXTPATH_SPACINGTYPE_AUTO); +} + +function sample2() { + assert_equals(textPath.method.animVal, SVGTextPathElement.TEXTPATH_METHODTYPE_STRETCH); + assert_equals(textPath.method.baseVal, SVGTextPathElement.TEXTPATH_METHODTYPE_ALIGN); + + assert_equals(textPath.spacing.animVal, SVGTextPathElement.TEXTPATH_SPACINGTYPE_EXACT); + assert_equals(textPath.spacing.baseVal, SVGTextPathElement.TEXTPATH_SPACINGTYPE_AUTO); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 1.999, sample1], + ["animation", 2.001, sample2], + ["animation", 3.999, sample2], + ["animation", 4.001, sample2] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svginteger-animation-1.html b/tests/wpt/web-platform-tests/svg/animations/svginteger-animation-1.html new file mode 100644 index 00000000000..78035416918 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svginteger-animation-1.html @@ -0,0 +1,77 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test animation of SVGInteger.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var defs = createSVGElement("defs"); +rootSVGElement.appendChild(defs); + +var filter = createSVGElement("filter"); +filter.setAttribute("id", "filter"); +defs.appendChild(filter); + +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("width", "200"); +rect.setAttribute("height", "200"); +rect.setAttribute("fill", "green"); +rect.setAttribute("filter", "url(#filter)"); +rect.setAttribute("onclick", "executeTest()"); +rootSVGElement.appendChild(rect); + +var feConvolveMatrix = createSVGElement("feConvolveMatrix"); +feConvolveMatrix.setAttribute("id", "feConvlveMatrix"); +feConvolveMatrix.setAttribute("order", "3"); +feConvolveMatrix.setAttribute("kernelMatrix", "0 0 0 0 1 0 0 0 0"); +feConvolveMatrix.setAttribute("targetX", "0"); +filter.appendChild(feConvolveMatrix); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "targetX"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "0"); +animate.setAttribute("to", "2"); +feConvlveMatrix.appendChild(animate); + +// Setup animation test +function sample1() { + assert_approx_equals(feConvolveMatrix.targetX.animVal, 0, epsilon); + assert_equals(feConvolveMatrix.targetX.baseVal, 0); +} + +function sample2() { + assert_approx_equals(feConvolveMatrix.targetX.animVal, 1, epsilon); + assert_equals(feConvolveMatrix.targetX.baseVal, 0); +} + +function sample3() { + assert_approx_equals(feConvolveMatrix.targetX.animVal, 2, epsilon); + assert_equals(feConvolveMatrix.targetX.baseVal, 0); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svginteger-animation-2.html b/tests/wpt/web-platform-tests/svg/animations/svginteger-animation-2.html new file mode 100644 index 00000000000..25ef7ff08ef --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svginteger-animation-2.html @@ -0,0 +1,82 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test animation of SVGInteger.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var defs = createSVGElement("defs"); +rootSVGElement.appendChild(defs); + +var filter = createSVGElement("filter"); +filter.setAttribute("id", "filter"); +defs.appendChild(filter); + +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("width", "200"); +rect.setAttribute("height", "200"); +rect.setAttribute("fill", "green"); +rect.setAttribute("filter", "url(#filter)"); +rect.setAttribute("onclick", "executeTest()"); +rootSVGElement.appendChild(rect); + +var feConvolveMatrix = createSVGElement("feConvolveMatrix"); +feConvolveMatrix.setAttribute("id", "feConvlveMatrix"); +feConvolveMatrix.setAttribute("order", "3 1"); +feConvolveMatrix.setAttribute("kernelMatrix", "0 0 1"); +filter.appendChild(feConvolveMatrix); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "order"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "3 1"); +animate.setAttribute("to", "1 3"); +feConvlveMatrix.appendChild(animate); + +// Setup animation test +function sample1() { + assert_approx_equals(feConvolveMatrix.orderX.animVal, 3, epsilon); + assert_approx_equals(feConvolveMatrix.orderY.animVal, 1, epsilon); + assert_equals(feConvolveMatrix.orderX.baseVal, 3); + assert_equals(feConvolveMatrix.orderY.baseVal, 1); +} + +function sample2() { + assert_approx_equals(feConvolveMatrix.orderX.animVal, 2, epsilon); + assert_approx_equals(feConvolveMatrix.orderY.animVal, 2, epsilon); + assert_equals(feConvolveMatrix.orderX.baseVal, 3); + assert_equals(feConvolveMatrix.orderY.baseVal, 1); +} + +function sample3() { + assert_approx_equals(feConvolveMatrix.orderX.animVal, 1, epsilon); + assert_approx_equals(feConvolveMatrix.orderY.animVal, 3, epsilon); + assert_equals(feConvolveMatrix.orderX.baseVal, 3); + assert_equals(feConvolveMatrix.orderY.baseVal, 1); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-1.html b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-1.html new file mode 100644 index 00000000000..67549890cff --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-1.html @@ -0,0 +1,70 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>This tests by-animations adding to previous underlying values</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + +<!-- an1: Change width from 10 to 50 in 4s --> +<!-- an2: Change width from 50 to 100 in 4s starting at 5s --> +<rect width="10" height="100" fill="green"> + <animate id="an1" attributeType="XML" attributeName="width" fill="freeze" by="40" begin="0s" dur="4s"/> + <animate id="an2" attributeType="XML" attributeName="width" additive="sum" fill="freeze" by="50" begin="5s" dur="4s"/> +</rect> + +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup animation test +function sample1() { + assert_approx_equals(rect.width.animVal.value, 10, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 30, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 50, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample4() { + assert_approx_equals(rect.width.animVal.value, 75, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample5() { + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +smil_async_test((t) => { + rect = rootSVGElement.ownerDocument.getElementsByTagName("rect")[0]; + + const expectedValues = [ + // [animationId, time, sampleCallback] + ["an1", 0.0, sample1], + ["an1", 2.0, sample2], + ["an1", 4.0, sample3], + ["an1", 7.0, sample4], + ["an1", 9.0, sample5], + ["an1", 60.0, sample5] + ]; + + runAnimationTest(t, expectedValues); +}); + +window.animationStartsImmediately = true; + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-2.html b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-2.html new file mode 100644 index 00000000000..e08c99cb63e --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-2.html @@ -0,0 +1,70 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>This tests by-animations adding to previous underlying values</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + +<!-- an1: Change width from 10 to 50 in 4s --> +<!-- an2: Change width from 50 to 100 in 4s starting at 5s --> +<rect width="10" height="100" fill="green"> + <animate id="an1" attributeType="XML" attributeName="width" fill="freeze" by="40" begin="0s" dur="4s"/> + <animate id="an2" attributeType="XML" attributeName="width" additive="replace" fill="freeze" by="50" begin="5s" dur="4s"/> +</rect> + +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup animation test +function sample1() { + assert_approx_equals(rect.width.animVal.value, 10, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 30, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 50, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample4() { + assert_approx_equals(rect.width.animVal.value, 75, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample5() { + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +smil_async_test((t) => { + rect = rootSVGElement.ownerDocument.getElementsByTagName("rect")[0]; + + const expectedValues = [ + // [animationId, time, sampleCallback] + ["an1", 0.0, sample1], + ["an1", 2.0, sample2], + ["an1", 4.0, sample3], + ["an1", 7.0, sample4], + ["an1", 9.0, sample5], + ["an1", 60.0, sample5] + ]; + + runAnimationTest(t, expectedValues); +}); + +window.animationStartsImmediately = true; + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-3.html b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-3.html new file mode 100644 index 00000000000..b5ac7a033ec --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-3.html @@ -0,0 +1,76 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>This tests by-animations adding to previous underlying values</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + +<!-- an1: Change width from 10 to 50 in 4s, then reset to 10. --> +<!-- an2: Change width from 10 to 100 in 4s starting at 5s --> +<rect width="10" height="100" fill="green"> + <animate id="an1" attributeType="XML" attributeName="width" fill="remove" by="40" begin="0s" dur="4s"/> + <animate id="an2" attributeType="XML" attributeName="width" additive="sum" fill="freeze" by="90" begin="5s" dur="4s"/> +</rect> + +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup animation test +function sample1() { + assert_approx_equals(rect.width.animVal.value, 10, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 30, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 50, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample4() { + assert_approx_equals(rect.width.animVal.value, 10, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample5() { + assert_approx_equals(rect.width.animVal.value, 55, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample6() { + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +smil_async_test((t) => { + rect = rootSVGElement.ownerDocument.getElementsByTagName("rect")[0]; + + const expectedValues = [ + // [animationId, time, sampleCallback] + ["an1", 0.0, sample1], + ["an1", 2.0, sample2], + ["an1", 3.999, sample3], + ["an1", 4.001, sample4], + ["an1", 7.0, sample5], + ["an1", 9.0, sample6], + ["an1", 60.0, sample6] + ]; + + runAnimationTest(t, expectedValues); +}); + +window.animationStartsImmediately = true; + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-4.html b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-4.html new file mode 100644 index 00000000000..10e8bd7b491 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-4.html @@ -0,0 +1,76 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>This tests by-animations adding to previous underlying values</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + +<!-- an1: Change width from 10 to 50 in 4s, then reset to 10. --> +<!-- an2: Change width from 10 to 100 in 4s starting at 5s --> +<rect width="10" height="100" fill="green"> + <animate id="an1" attributeType="XML" attributeName="width" fill="remove" by="40" begin="0s" dur="4s"/> + <animate id="an2" attributeType="XML" attributeName="width" additive="replace" fill="freeze" by="90" begin="5s" dur="4s"/> +</rect> + +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup animation test +function sample1() { + assert_approx_equals(rect.width.animVal.value, 10, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 30, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 50, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample4() { + assert_approx_equals(rect.width.animVal.value, 10, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample5() { + assert_approx_equals(rect.width.animVal.value, 55, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample6() { + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +smil_async_test((t) => { + rect = rootSVGElement.ownerDocument.getElementsByTagName("rect")[0]; + + const expectedValues = [ + // [animationId, time, sampleCallback] + ["an1", 0.0, sample1], + ["an1", 2.0, sample2], + ["an1", 3.999, sample3], + ["an1", 4.001, sample4], + ["an1", 7.0, sample5], + ["an1", 9.0, sample6], + ["an1", 60.0, sample6] + ]; + + runAnimationTest(t, expectedValues); +}); + +window.animationStartsImmediately = true; + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-6.html b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-6.html new file mode 100644 index 00000000000..43beafe220e --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-6.html @@ -0,0 +1,76 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>This tests by-animations adding to previous underlying values</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + +<!-- an1: Change width from 10 to 50 in 4s --> +<!-- an2: Change width from 10 to 100 in 4s starting at 5s --> +<rect width="10" height="100" fill="green"> + <animate id="an1" attributeType="XML" attributeName="width" fill="remove" by="40" begin="0s" dur="4s"/> + <animate id="an2" attributeType="XML" attributeName="width" additive="replace" fill="freeze" by="90" begin="5s" dur="4s"/> +</rect> + +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup animation test +function sample1() { + assert_approx_equals(rect.width.animVal.value, 10, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 30, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 50, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample4() { + assert_approx_equals(rect.width.animVal.value, 10, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample5() { + assert_approx_equals(rect.width.animVal.value, 55, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample6() { + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +smil_async_test((t) => { + rect = rootSVGElement.ownerDocument.getElementsByTagName("rect")[0]; + + const expectedValues = [ + // [animationId, time, sampleCallback] + ["an1", 0.0, sample1], + ["an1", 2.0, sample2], + ["an1", 3.999, sample3], + ["an1", 4.001, sample4], + ["an1", 7.0, sample5], + ["an1", 9.0, sample6], + ["an1", 60.0, sample6] + ]; + + runAnimationTest(t, expectedValues); +}); + +window.animationStartsImmediately = true; + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-7.html b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-7.html new file mode 100644 index 00000000000..7c1dde4a7c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-7.html @@ -0,0 +1,76 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>This tests by-animations adding to previous underlying values</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="800"> + +<!-- an1: Change width from 10 to 50 in 4s --> +<!-- an2: Change width from 10 to 100 in 4s starting at 5s --> +<rect width="10" height="100" fill="green"> + <animate id="an1" attributeType="XML" attributeName="width" fill="remove" by="calc(5%)" begin="0s" dur="4s"/> + <animate id="an2" attributeType="XML" attributeName="width" additive="replace" fill="freeze" by="calc(11.25%)" begin="5s" dur="4s"/> +</rect> + +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup animation test +function sample1() { + assert_approx_equals(rect.width.animVal.value, 10, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 30, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 50, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample4() { + assert_approx_equals(rect.width.animVal.value, 10, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample5() { + assert_approx_equals(rect.width.animVal.value, 55, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample6() { + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +smil_async_test((t) => { + rect = rootSVGElement.ownerDocument.getElementsByTagName("rect")[0]; + + const expectedValues = [ + // [animationId, time, sampleCallback] + ["an1", 0.0, sample1], + ["an1", 2.0, sample2], + ["an1", 3.999, sample3], + ["an1", 4.001, sample4], + ["an1", 7.0, sample5], + ["an1", 9.0, sample6], + ["an1", 60.0, sample6] + ]; + + runAnimationTest(t, expectedValues); +}); + +window.animationStartsImmediately = true; + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-8.html b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-8.html new file mode 100644 index 00000000000..c61cb65ebd9 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-by-8.html @@ -0,0 +1,76 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>This tests by-animations adding to previous underlying values</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="800"> + +<!-- an1: Change width from 10 to 50 in 4s --> +<!-- an2: Change width from 10 to 100 in 4s starting at 5s --> +<rect width="10" height="100" fill="green"> + <animate id="an1" attributeType="XML" attributeName="width" fill="remove" by="calc(4% + 8)" begin="0s" dur="4s"/> + <animate id="an2" attributeType="XML" attributeName="width" additive="replace" fill="freeze" by="calc(10% + 10)" begin="5s" dur="4s"/> +</rect> + +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup animation test +function sample1() { + assert_approx_equals(rect.width.animVal.value, 10, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 30, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 50, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample4() { + assert_approx_equals(rect.width.animVal.value, 10, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample5() { + assert_approx_equals(rect.width.animVal.value, 55, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample6() { + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +smil_async_test((t) => { + rect = rootSVGElement.ownerDocument.getElementsByTagName("rect")[0]; + + const expectedValues = [ + // [animationId, time, sampleCallback] + ["an1", 0.0, sample1], + ["an1", 2.0, sample2], + ["an1", 3.999, sample3], + ["an1", 4.001, sample4], + ["an1", 7.0, sample5], + ["an1", 9.0, sample6], + ["an1", 60.0, sample6] + ]; + + runAnimationTest(t, expectedValues); +}); + +window.animationStartsImmediately = true; + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-additive-from-by-1.html b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-from-by-1.html new file mode 100644 index 00000000000..ce458e0266c --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-from-by-1.html @@ -0,0 +1,70 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>This tests from-by-animations adding to previous underlying values</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + +<!-- an1: Change width from 10 to 50 in 4s --> +<!-- an2: Change width from 50 to 100 in 4s starting at 5s --> +<rect width="10" height="100" fill="green"> + <animate id="an1" attributeType="XML" attributeName="width" fill="freeze" from="10" by="40" begin="0s" dur="4s"/> + <animate id="an2" attributeType="XML" attributeName="width" additive="sum" fill="freeze" from="0" by="50" begin="5s" dur="4s"/> +</rect> + +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup animation test +function sample1() { + assert_approx_equals(rect.width.animVal.value, 10, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 30, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 50, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample4() { + assert_approx_equals(rect.width.animVal.value, 75, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample5() { + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +smil_async_test((t) => { + rect = rootSVGElement.ownerDocument.getElementsByTagName("rect")[0]; + + const expectedValues = [ + // [animationId, time, sampleCallback] + ["an1", 0.0, sample1], + ["an1", 2.0, sample2], + ["an1", 4.0, sample3], + ["an1", 7.0, sample4], + ["an1", 9.0, sample5], + ["an1", 60.0, sample5] + ]; + + runAnimationTest(t, expectedValues); +}); + +window.animationStartsImmediately = true; + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-additive-from-by-2.html b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-from-by-2.html new file mode 100644 index 00000000000..1ac7eed4e1b --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-from-by-2.html @@ -0,0 +1,77 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>This tests from-by-animations adding to previous underlying values</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + +<!-- an1: Change width from 10 to 50 in 4s --> +<!-- an2: Change width from 0 to 100 in 4s starting at 5s --> +<rect width="10" height="100" fill="green"> + <animate id="an1" attributeType="XML" attributeName="width" fill="freeze" from="10" by="40" begin="0s" dur="4s"/> + <animate id="an2" attributeType="XML" attributeName="width" additive="replace" fill="freeze" from="0" by="100" begin="5s" dur="4s"/> +</rect> + +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup animation test +function sample1() { + assert_approx_equals(rect.width.animVal.value, 10, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 30, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 50, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample4() { + assert_approx_equals(rect.width.animVal.value, 0, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample5() { + assert_approx_equals(rect.width.animVal.value, 50, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample6() { + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +smil_async_test((t) => { + rect = rootSVGElement.ownerDocument.getElementsByTagName("rect")[0]; + + const expectedValues = [ + // [animationId, time, sampleCallback] + ["an1", 0.0, sample1], + ["an1", 2.0, sample2], + ["an1", 4.0, sample3], + ["an1", 4.999, sample3], + ["an1", 5.001, sample4], + ["an1", 7.0, sample5], + ["an1", 9.0, sample6], + ["an1", 60.0, sample6] + ]; + + runAnimationTest(t, expectedValues); +}); + +window.animationStartsImmediately = true; + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-additive-from-by-3.html b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-from-by-3.html new file mode 100644 index 00000000000..1c22f351da4 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-from-by-3.html @@ -0,0 +1,77 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>This tests from-by-animations adding to previous underlying values</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + +<!-- an1: Change width from 10 to 50 in 4s --> +<!-- an2: Change width from 75 to 100 in 4s starting at 5s --> +<rect width="10" height="100" fill="green"> + <animate id="an1" attributeType="XML" attributeName="width" fill="freeze" from="10" by="40" begin="0s" dur="4s"/> + <animate id="an2" attributeType="XML" attributeName="width" additive="sum" fill="freeze" from="25" by="25" begin="5s" dur="4s"/> +</rect> + +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup animation test +function sample1() { + assert_approx_equals(rect.width.animVal.value, 10, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 30, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 50, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample4() { + assert_approx_equals(rect.width.animVal.value, 75, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample5() { + assert_approx_equals(rect.width.animVal.value, 87.5, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample6() { + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +smil_async_test((t) => { + rect = rootSVGElement.ownerDocument.getElementsByTagName("rect")[0]; + + const expectedValues = [ + // [animationId, time, sampleCallback] + ["an1", 0.0, sample1], + ["an1", 2.0, sample2], + ["an1", 4.0, sample3], + ["an1", 4.999, sample3], + ["an1", 5.001, sample4], + ["an1", 7.0, sample5], + ["an1", 9.0, sample6], + ["an1", 60.0, sample6] + ]; + + runAnimationTest(t, expectedValues); +}); + +window.animationStartsImmediately = true; + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-additive-from-by-4.html b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-from-by-4.html new file mode 100644 index 00000000000..998c37458f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-additive-from-by-4.html @@ -0,0 +1,77 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>This tests from-by-animations adding to previous underlying values</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + +<!-- an1: Change width from 10 to 50 in 4s --> +<!-- an2: Change width from 75 to 100 in 4s starting at 5s --> +<rect width="10" height="100" fill="green"> + <animate id="an1" attributeType="XML" attributeName="width" fill="freeze" from="10" by="40" begin="0s" dur="4s"/> + <animate id="an2" attributeType="XML" attributeName="width" additive="replace" fill="freeze" from="75" by="25" begin="5s" dur="4s"/> +</rect> + +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup animation test +function sample1() { + assert_approx_equals(rect.width.animVal.value, 10, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 30, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 50, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample4() { + assert_approx_equals(rect.width.animVal.value, 75, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample5() { + assert_approx_equals(rect.width.animVal.value, 87.5, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +function sample6() { + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 10); +} + +smil_async_test((t) => { + rect = rootSVGElement.ownerDocument.getElementsByTagName("rect")[0]; + + const expectedValues = [ + // [animationId, time, sampleCallback] + ["an1", 0.0, sample1], + ["an1", 2.0, sample2], + ["an1", 4.0, sample3], + ["an1", 4.999, sample3], + ["an1", 5.001, sample4], + ["an1", 7.0, sample5], + ["an1", 9.0, sample6], + ["an1", 60.0, sample6] + ]; + + runAnimationTest(t, expectedValues); +}); + +window.animationStartsImmediately = true; + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-animation-LengthModeHeight.html b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-LengthModeHeight.html new file mode 100644 index 00000000000..2bb409e8e10 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-LengthModeHeight.html @@ -0,0 +1,69 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGLength animation on LengthModeHeight.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +rootSVGElement.setAttribute("width", "600"); +rootSVGElement.setAttribute("height", "400"); + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "green"); +rect.setAttribute("font-size", "10px"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "height"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "100"); +animate.setAttribute("to", "50%"); +rect.appendChild(animate); +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample1() { + // Check initial/end conditions + assert_approx_equals(rect.height.animVal.value, 100, epsilon); + assert_equals(rect.height.baseVal.value, 100); +} + +function sample2() { + assert_approx_equals(rect.height.animVal.value, 150, epsilon); + assert_equals(rect.height.baseVal.value, 100); +} + +function sample3() { + assert_approx_equals(rect.height.animVal.value, 200, epsilon); + assert_equals(rect.height.baseVal.value, 100); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-animation-LengthModeOther.html b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-LengthModeOther.html new file mode 100644 index 00000000000..1fd9e0a3b9b --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-LengthModeOther.html @@ -0,0 +1,68 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGLength animation on LengthModeOther.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +rootSVGElement.setAttribute("width", "600"); +rootSVGElement.setAttribute("height", "400"); + +// Setup test document +var circle = createSVGElement("circle"); +circle.setAttribute("id", "circle"); +circle.setAttribute("cx", "50"); +circle.setAttribute("cy", "50"); +circle.setAttribute("r", "10"); +circle.setAttribute("fill", "green"); +circle.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "r"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "10"); +animate.setAttribute("to", "50%"); +circle.appendChild(animate); +rootSVGElement.appendChild(circle); + +// Setup animation test +function sample1() { + // Check initial/end conditions + assert_approx_equals(circle.r.animVal.value, 10, epsilon); + assert_equals(circle.r.baseVal.value, 10); +} + +function sample2() { + assert_approx_equals(circle.r.animVal.value, 132.5, epsilon); + assert_equals(circle.r.baseVal.value, 10); +} + +function sample3() { + assert_approx_equals(circle.r.animVal.value, 254.9, epsilon); + assert_equals(circle.r.baseVal.value, 10); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-animation-LengthModeWidth.html b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-LengthModeWidth.html new file mode 100644 index 00000000000..9481d434b9a --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-LengthModeWidth.html @@ -0,0 +1,69 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGLength animation on LengthModeWidth.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +rootSVGElement.setAttribute("width", "600"); +rootSVGElement.setAttribute("height", "400"); + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "green"); +rect.setAttribute("font-size", "10px"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "width"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "100"); +animate.setAttribute("to", "50%"); +rect.appendChild(animate); +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample1() { + // Check initial/end conditions + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 200, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 300, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-animation-invalid-value-1.html b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-invalid-value-1.html new file mode 100644 index 00000000000..9b45c5a8ca0 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-invalid-value-1.html @@ -0,0 +1,59 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGLength animation with invalid value: No spaces between number and unit.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "green"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "width"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "100 px"); +animate.setAttribute("to", "200 px"); +rect.appendChild(animate); +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample1() { + // Check initial/end conditions + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 0, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample2], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-animation-invalid-value-2.html b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-invalid-value-2.html new file mode 100644 index 00000000000..64d5884df44 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-invalid-value-2.html @@ -0,0 +1,59 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGLength animation with invalid value: No spaces before value.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "green"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "width"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", " 100pxERROR"); +animate.setAttribute("to", " 200pxERROR"); +rect.appendChild(animate); +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample1() { + // Check initial/end conditions + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 0, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample2], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-animation-invalid-value-3.html b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-invalid-value-3.html new file mode 100644 index 00000000000..0fb1794eaa2 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-invalid-value-3.html @@ -0,0 +1,59 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGLength animation with invalid value: No spaces after number and unit.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "green"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "width"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "100px ERROR"); +animate.setAttribute("to", "200px ERROR"); +rect.appendChild(animate); +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample1() { + // Check initial/end conditions + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 0, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample2], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-animation-number-to-number.html b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-number-to-number.html new file mode 100644 index 00000000000..0b4fca52ec0 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-number-to-number.html @@ -0,0 +1,64 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGLength animation from px to cm.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "green"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "width"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "100"); +animate.setAttribute("to", "200"); +rect.appendChild(animate); +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample1() { + // Check initial/end conditions + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 150, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 200, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-cm.html b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-cm.html new file mode 100644 index 00000000000..f51beed02b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-cm.html @@ -0,0 +1,64 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGLength animation from px to cm.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "green"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "width"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "100px"); +animate.setAttribute("to", "5cm"); +rect.appendChild(animate); +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample1() { + // Check initial/end conditions + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 144.5, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 189, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-ems.html b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-ems.html new file mode 100644 index 00000000000..e65125303e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-ems.html @@ -0,0 +1,65 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGLength animation from px to ems.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "green"); +rect.setAttribute("font-size", "10px"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "width"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "100px"); +animate.setAttribute("to", "20em"); +rect.appendChild(animate); +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample1() { + // Check initial/end conditions + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 150, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 200, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-in.html b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-in.html new file mode 100644 index 00000000000..a55b357187a --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-in.html @@ -0,0 +1,64 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGLength animation from px to inch.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "green"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "width"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "100px"); +animate.setAttribute("to", "2.5in"); +rect.appendChild(animate); +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample1() { + // Check initial/end conditions + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 170, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 240, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-number.html b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-number.html new file mode 100644 index 00000000000..8eab444caa3 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-number.html @@ -0,0 +1,64 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGLength animation from px to number.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "green"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "width"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "100px"); +animate.setAttribute("to", "200"); +rect.appendChild(animate); +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample1() { + // Check initial/end conditions + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 150, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 200, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-pc.html b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-pc.html new file mode 100644 index 00000000000..62d9d9964f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-pc.html @@ -0,0 +1,64 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGLength animation from px to pc.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "green"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "width"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "100px"); +animate.setAttribute("to", "15pc"); +rect.appendChild(animate); +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample1() { + // Check initial/end conditions + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 170, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 240, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-pt.html b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-pt.html new file mode 100644 index 00000000000..d86e0907578 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-pt.html @@ -0,0 +1,64 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGLength animation from px to cm.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "green"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "width"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "100pt"); +animate.setAttribute("to", "5cm"); +rect.appendChild(animate); +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample1() { + // Check initial/end conditions + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 161.2, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 189, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-px.html b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-px.html new file mode 100644 index 00000000000..fdeb773375a --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-px-to-px.html @@ -0,0 +1,64 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGLength animation from px to cm.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "green"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "width"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "100px"); +animate.setAttribute("to", "200px"); +rect.appendChild(animate); +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample1() { + // Check initial/end conditions + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 150, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 200, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-animation-unitType.html b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-unitType.html new file mode 100644 index 00000000000..4cd6d2d3af5 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-unitType.html @@ -0,0 +1,65 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test change of unit type for SVGLength animation.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "green"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "width"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "100"); +animate.setAttribute("to", "200px"); +rect.appendChild(animate); +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample1() { + // Check initial/end conditions + assert_equals(rect.width.animVal.unitType, SVGLength.SVG_LENGTHTYPE_NUMBER); + assert_equals(rect.width.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_NUMBER); +} + +function sample2() { + assert_equals(rect.width.animVal.unitType, SVGLength.SVG_LENGTHTYPE_NUMBER); + assert_equals(rect.width.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_NUMBER); +} + +function sample3() { + assert_equals(rect.width.animVal.unitType, SVGLength.SVG_LENGTHTYPE_PX); + assert_equals(rect.width.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_NUMBER); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 1.5, sample2], + ["animation", 2.5, sample3], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglength-animation-values.html b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-values.html new file mode 100644 index 00000000000..a3e485320b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglength-animation-values.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGLength animation set with 'values', different units and different count of spaces.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "green"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "width"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("values", "100px; 130 ;4cm ;6in; 200pt"); +rect.appendChild(animate); +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample1() { + // Check initial/end conditions + assert_approx_equals(rect.width.animVal.value, 100, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample2() { + assert_approx_equals(rect.width.animVal.value, 130, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample3() { + assert_approx_equals(rect.width.animVal.value, 151.2, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample4() { + assert_approx_equals(rect.width.animVal.value, 576, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +function sample5() { + assert_approx_equals(rect.width.animVal.value, 267, epsilon); + assert_equals(rect.width.baseVal.value, 100); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 1.0, sample2], + ["animation", 2.0, sample3], + ["animation", 3.0, sample4], + ["animation", 3.999, sample5], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglengthlist-animation-1.html b/tests/wpt/web-platform-tests/svg/animations/svglengthlist-animation-1.html new file mode 100644 index 00000000000..198fc8a6fef --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglengthlist-animation-1.html @@ -0,0 +1,89 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test 'to' animation of SVGLengthList with LengthType number.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var text = createSVGElement("text"); +text.setAttribute("id", "text"); +text.textContent = "ABCD"; +text.setAttribute("x", "50 70 90 110"); +text.setAttribute("y", "50"); +text.setAttribute("onclick", "executeTest()"); +rootSVGElement.appendChild(text); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "x"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "50 70 90 110"); +animate.setAttribute("to", "60 90 120 150"); +text.appendChild(animate); + +// Setup animation test +function sample1() { + assert_equals(text.x.animVal.numberOfItems, 4); + assert_approx_equals(text.x.animVal.getItem(0).value, 50, epsilon); + assert_approx_equals(text.x.animVal.getItem(1).value, 70, epsilon); + assert_approx_equals(text.x.animVal.getItem(2).value, 90, epsilon); + assert_approx_equals(text.x.animVal.getItem(3).value, 110, epsilon); + + assert_equals(text.x.baseVal.numberOfItems, 4); + assert_equals(text.x.baseVal.getItem(0).value, 50); + assert_equals(text.x.baseVal.getItem(1).value, 70); + assert_equals(text.x.baseVal.getItem(2).value, 90); + assert_equals(text.x.baseVal.getItem(3).value, 110); +} + +function sample2() { + assert_equals(text.x.animVal.numberOfItems, 4); + assert_approx_equals(text.x.animVal.getItem(0).value, 55, epsilon); + assert_approx_equals(text.x.animVal.getItem(1).value, 80, epsilon); + assert_approx_equals(text.x.animVal.getItem(2).value, 105, epsilon); + assert_approx_equals(text.x.animVal.getItem(3).value, 130, epsilon); + + assert_equals(text.x.baseVal.numberOfItems, 4); + assert_equals(text.x.baseVal.getItem(0).value, 50); + assert_equals(text.x.baseVal.getItem(1).value, 70); + assert_equals(text.x.baseVal.getItem(2).value, 90); + assert_equals(text.x.baseVal.getItem(3).value, 110); +} + +function sample3() { + assert_equals(text.x.animVal.numberOfItems, 4); + assert_approx_equals(text.x.animVal.getItem(0).value, 60, epsilon); + assert_approx_equals(text.x.animVal.getItem(1).value, 90, epsilon); + assert_approx_equals(text.x.animVal.getItem(2).value, 120, epsilon); + assert_approx_equals(text.x.animVal.getItem(3).value, 150, epsilon); + + assert_equals(text.x.baseVal.numberOfItems, 4); + assert_equals(text.x.baseVal.getItem(0).value, 50); + assert_equals(text.x.baseVal.getItem(1).value, 70); + assert_equals(text.x.baseVal.getItem(2).value, 90); + assert_equals(text.x.baseVal.getItem(3).value, 110); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglengthlist-animation-2.html b/tests/wpt/web-platform-tests/svg/animations/svglengthlist-animation-2.html new file mode 100644 index 00000000000..c1c91b83f0f --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglengthlist-animation-2.html @@ -0,0 +1,89 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test 'to' animation of SVGLengthList with different LengthTypes.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var text = createSVGElement("text"); +text.setAttribute("id", "text"); +text.textContent = "ABCD"; +text.setAttribute("x", "50 70 90 110"); +text.setAttribute("y", "50"); +text.setAttribute("onclick", "executeTest()"); +rootSVGElement.appendChild(text); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "x"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "50 70px 5cm 8pt"); +animate.setAttribute("to", "3cm 80 100px 4in"); +text.appendChild(animate); + +// Setup animation test +function sample1() { + assert_equals(text.x.animVal.numberOfItems, 4); + assert_approx_equals(text.x.animVal.getItem(0).value, 50, epsilon); + assert_approx_equals(text.x.animVal.getItem(1).value, 70, epsilon); + assert_approx_equals(text.x.animVal.getItem(2).value, 90, epsilon); + assert_approx_equals(text.x.animVal.getItem(3).value, 110, epsilon); + + assert_equals(text.x.baseVal.numberOfItems, 4); + assert_equals(text.x.baseVal.getItem(0).value, 50); + assert_equals(text.x.baseVal.getItem(1).value, 70); + assert_equals(text.x.baseVal.getItem(2).value, 90); + assert_equals(text.x.baseVal.getItem(3).value, 110); +} + +function sample2() { + assert_equals(text.x.animVal.numberOfItems, 4); + assert_approx_equals(text.x.animVal.getItem(0).value, 81.7, epsilon); + assert_approx_equals(text.x.animVal.getItem(1).value, 75, epsilon); + assert_approx_equals(text.x.animVal.getItem(2).value, 144.5, epsilon); + assert_approx_equals(text.x.animVal.getItem(3).value, 197.3, epsilon); + + assert_equals(text.x.baseVal.numberOfItems, 4); + assert_equals(text.x.baseVal.getItem(0).value, 50); + assert_equals(text.x.baseVal.getItem(1).value, 70); + assert_equals(text.x.baseVal.getItem(2).value, 90); + assert_equals(text.x.baseVal.getItem(3).value, 110); +} + +function sample3() { + assert_equals(text.x.animVal.numberOfItems, 4); + assert_approx_equals(text.x.animVal.getItem(0).value, 113.4, epsilon); + assert_approx_equals(text.x.animVal.getItem(1).value, 80, epsilon); + assert_approx_equals(text.x.animVal.getItem(2).value, 100, epsilon); + assert_approx_equals(text.x.animVal.getItem(3).value, 384, epsilon); + + assert_equals(text.x.baseVal.numberOfItems, 4); + assert_equals(text.x.baseVal.getItem(0).value, 50); + assert_equals(text.x.baseVal.getItem(1).value, 70); + assert_equals(text.x.baseVal.getItem(2).value, 90); + assert_equals(text.x.baseVal.getItem(3).value, 110); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglengthlist-animation-3.html b/tests/wpt/web-platform-tests/svg/animations/svglengthlist-animation-3.html new file mode 100644 index 00000000000..d26e67a8a05 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglengthlist-animation-3.html @@ -0,0 +1,78 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Test 'to' animation of SVGLengthList with different count of items.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var text = createSVGElement("text"); +text.setAttribute("id", "text"); +text.textContent = "ABCD"; +text.setAttribute("x", "50"); +text.setAttribute("y", "50"); +text.setAttribute("onclick", "executeTest()"); +rootSVGElement.appendChild(text); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "x"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "50"); +animate.setAttribute("to", "70 80 90 110"); +text.appendChild(animate); + +// Setup animation test +function sample1() { + assert_equals(text.x.animVal.numberOfItems, 1); + assert_approx_equals(text.x.animVal.getItem(0).value, 50, epsilon); + + assert_equals(text.x.baseVal.numberOfItems, 1); + assert_equals(text.x.baseVal.getItem(0).value, 50); +} + +function sample2() { + assert_equals(text.x.animVal.numberOfItems, 4); + assert_approx_equals(text.x.animVal.getItem(0).value, 70, epsilon); + assert_approx_equals(text.x.animVal.getItem(1).value, 80, epsilon); + assert_approx_equals(text.x.animVal.getItem(2).value, 90, epsilon); + assert_approx_equals(text.x.animVal.getItem(3).value, 110, epsilon); + + assert_equals(text.x.baseVal.numberOfItems, 1); + assert_equals(text.x.baseVal.getItem(0).value, 50); +} + +function sample3() { + assert_equals(text.x.animVal.numberOfItems, 4); + assert_approx_equals(text.x.animVal.getItem(0).value, 70, epsilon); + assert_approx_equals(text.x.animVal.getItem(1).value, 80, epsilon); + assert_approx_equals(text.x.animVal.getItem(2).value, 90, epsilon); + assert_approx_equals(text.x.animVal.getItem(3).value, 110, epsilon); + + assert_equals(text.x.baseVal.numberOfItems, 1); + assert_equals(text.x.baseVal.getItem(0).value, 50); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script> diff --git a/tests/wpt/web-platform-tests/svg/animations/svglengthlist-animation-4.html b/tests/wpt/web-platform-tests/svg/animations/svglengthlist-animation-4.html new file mode 100644 index 00000000000..0e890ab5f5a --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglengthlist-animation-4.html @@ -0,0 +1,89 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test 'by' animation of SVGLengthList.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var text = createSVGElement("text"); +text.setAttribute("id", "text"); +text.textContent = "ABCD"; +text.setAttribute("x", "50 60 70 80"); +text.setAttribute("y", "50"); +text.setAttribute("onclick", "executeTest()"); +rootSVGElement.appendChild(text); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "x"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "50 60 70 80"); +animate.setAttribute("by", "20 20 20 20"); +text.appendChild(animate); + +// Setup animation test +function sample1() { + assert_equals(text.x.animVal.numberOfItems, 4); + assert_approx_equals(text.x.animVal.getItem(0).value, 50, epsilon); + assert_approx_equals(text.x.animVal.getItem(1).value, 60, epsilon); + assert_approx_equals(text.x.animVal.getItem(2).value, 70, epsilon); + assert_approx_equals(text.x.animVal.getItem(3).value, 80, epsilon); + + assert_equals(text.x.baseVal.numberOfItems, 4); + assert_equals(text.x.baseVal.getItem(0).value, 50); + assert_equals(text.x.baseVal.getItem(1).value, 60); + assert_equals(text.x.baseVal.getItem(2).value, 70); + assert_equals(text.x.baseVal.getItem(3).value, 80); +} + +function sample2() { + assert_equals(text.x.animVal.numberOfItems, 4); + assert_approx_equals(text.x.animVal.getItem(0).value, 60, epsilon); + assert_approx_equals(text.x.animVal.getItem(1).value, 70, epsilon); + assert_approx_equals(text.x.animVal.getItem(2).value, 80, epsilon); + assert_approx_equals(text.x.animVal.getItem(3).value, 90, epsilon); + + assert_equals(text.x.baseVal.numberOfItems, 4); + assert_equals(text.x.baseVal.getItem(0).value, 50); + assert_equals(text.x.baseVal.getItem(1).value, 60); + assert_equals(text.x.baseVal.getItem(2).value, 70); + assert_equals(text.x.baseVal.getItem(3).value, 80); +} + +function sample3() { + assert_equals(text.x.animVal.numberOfItems, 4); + assert_approx_equals(text.x.animVal.getItem(0).value, 70, epsilon); + assert_approx_equals(text.x.animVal.getItem(1).value, 80, epsilon); + assert_approx_equals(text.x.animVal.getItem(2).value, 90, epsilon); + assert_approx_equals(text.x.animVal.getItem(3).value, 100, epsilon); + + assert_equals(text.x.baseVal.numberOfItems, 4); + assert_equals(text.x.baseVal.getItem(0).value, 50); + assert_equals(text.x.baseVal.getItem(1).value, 60); + assert_equals(text.x.baseVal.getItem(2).value, 70); + assert_equals(text.x.baseVal.getItem(3).value, 80); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svglengthlist-animation-5.html b/tests/wpt/web-platform-tests/svg/animations/svglengthlist-animation-5.html new file mode 100644 index 00000000000..5d0bc2b4836 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svglengthlist-animation-5.html @@ -0,0 +1,90 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test additive='sum' animation of SVGLengthList.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var text = createSVGElement("text"); +text.setAttribute("id", "text"); +text.textContent = "ABCD"; +text.setAttribute("x", "50 60 70 80"); +text.setAttribute("y", "50"); +text.setAttribute("onclick", "executeTest()"); +rootSVGElement.appendChild(text); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "x"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("additive", "sum"); +animate.setAttribute("from", "0 0 0 0"); +animate.setAttribute("to", "20 20 20 20"); +text.appendChild(animate); + +// Setup animation test +function sample1() { + assert_equals(text.x.animVal.numberOfItems, 4); + assert_approx_equals(text.x.animVal.getItem(0).value, 50, epsilon); + assert_approx_equals(text.x.animVal.getItem(1).value, 60, epsilon); + assert_approx_equals(text.x.animVal.getItem(2).value, 70, epsilon); + assert_approx_equals(text.x.animVal.getItem(3).value, 80, epsilon); + + assert_equals(text.x.baseVal.numberOfItems, 4); + assert_equals(text.x.baseVal.getItem(0).value, 50); + assert_equals(text.x.baseVal.getItem(1).value, 60); + assert_equals(text.x.baseVal.getItem(2).value, 70); + assert_equals(text.x.baseVal.getItem(3).value, 80); +} + +function sample2() { + assert_equals(text.x.animVal.numberOfItems, 4); + assert_approx_equals(text.x.animVal.getItem(0).value, 60, epsilon); + assert_approx_equals(text.x.animVal.getItem(1).value, 70, epsilon); + assert_approx_equals(text.x.animVal.getItem(2).value, 80, epsilon); + assert_approx_equals(text.x.animVal.getItem(3).value, 90, epsilon); + + assert_equals(text.x.baseVal.numberOfItems, 4); + assert_equals(text.x.baseVal.getItem(0).value, 50); + assert_equals(text.x.baseVal.getItem(1).value, 60); + assert_equals(text.x.baseVal.getItem(2).value, 70); + assert_equals(text.x.baseVal.getItem(3).value, 80); +} + +function sample3() { + assert_equals(text.x.animVal.numberOfItems, 4); + assert_approx_equals(text.x.animVal.getItem(0).value, 70, epsilon); + assert_approx_equals(text.x.animVal.getItem(1).value, 80, epsilon); + assert_approx_equals(text.x.animVal.getItem(2).value, 90, epsilon); + assert_approx_equals(text.x.animVal.getItem(3).value, 100, epsilon); + + assert_equals(text.x.baseVal.numberOfItems, 4); + assert_equals(text.x.baseVal.getItem(0).value, 50); + assert_equals(text.x.baseVal.getItem(1).value, 60); + assert_equals(text.x.baseVal.getItem(2).value, 70); + assert_equals(text.x.baseVal.getItem(3).value, 80); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svgnumber-animation-1.html b/tests/wpt/web-platform-tests/svg/animations/svgnumber-animation-1.html new file mode 100644 index 00000000000..72c2d736771 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svgnumber-animation-1.html @@ -0,0 +1,62 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test for SVGNumber animation.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "green"); +rect.setAttribute("opacity", "0"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "opacity"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "0"); +animate.setAttribute("to", "1"); +rect.appendChild(animate); +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample1() { + // Check initial/end conditions + assert_approx_equals(parseFloat(getComputedStyle(rect).opacity), 0, epsilon); +} + +function sample2() { + assert_approx_equals(parseFloat(getComputedStyle(rect).opacity), 0.5, epsilon); +} + +function sample3() { + assert_approx_equals(parseFloat(getComputedStyle(rect).opacity), 1, epsilon); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svgnumber-animation-2.html b/tests/wpt/web-platform-tests/svg/animations/svgnumber-animation-2.html new file mode 100644 index 00000000000..1654480ffce --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svgnumber-animation-2.html @@ -0,0 +1,62 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test for SVGNumber animation with different exponents.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "green"); +rect.setAttribute("opacity", "0"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "opacity"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "0e10"); +animate.setAttribute("to", ".1e1"); +rect.appendChild(animate); +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample1() { + // Check initial/end conditions + assert_approx_equals(parseFloat(getComputedStyle(rect).opacity), 0, epsilon); +} + +function sample2() { + assert_approx_equals(parseFloat(getComputedStyle(rect).opacity), 0.5, epsilon); +} + +function sample3() { + assert_approx_equals(parseFloat(getComputedStyle(rect).opacity), 1, epsilon); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svgnumber-animation-3.html b/tests/wpt/web-platform-tests/svg/animations/svgnumber-animation-3.html new file mode 100644 index 00000000000..255eeb0a94c --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svgnumber-animation-3.html @@ -0,0 +1,54 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test for SVGNumber animation with invalid units.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "green"); +rect.setAttribute("opacity", "0"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "opacity"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "0px"); +animate.setAttribute("to", "1px"); +rect.appendChild(animate); +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample() { + // Check initial/end conditions + assert_equals(getComputedStyle(rect).opacity, '0'); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample], + ["animation", 2.0, sample], + ["animation", 3.999, sample], + ["animation", 4.001, sample] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svgnumber-animation-4.html b/tests/wpt/web-platform-tests/svg/animations/svgnumber-animation-4.html new file mode 100644 index 00000000000..758138d6678 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svgnumber-animation-4.html @@ -0,0 +1,82 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test for SVGNumber animation on SVG DOM properties.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var gradient = createSVGElement("linearGradient"); +gradient.setAttribute("id", "gradient"); + +var stop1 = createSVGElement("stop"); +stop1.setAttribute("offset", "0"); +stop1.setAttribute("stop-color", "green"); +gradient.appendChild(stop1); + +var stop2 = createSVGElement("stop"); +stop2.setAttribute("offset", "1"); +stop2.setAttribute("stop-color", "red"); +gradient.appendChild(stop2); + +var defsElement = createSVGElement("defs"); +defsElement.appendChild(gradient); +rootSVGElement.appendChild(defsElement); + +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "0"); +rect.setAttribute("width", "100"); +rect.setAttribute("height", "100"); +rect.setAttribute("fill", "url(#gradient)"); +rect.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeType", "XML"); +animate.setAttribute("attributeName", "offset"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "0"); +animate.setAttribute("to", "1"); +animate.setAttribute("fill", "freeze"); +stop1.appendChild(animate); + +rootSVGElement.appendChild(rect); + +// Setup animation test +function sample1() { + assert_approx_equals(stop1.offset.animVal, 0, epsilon); + assert_equals(stop1.offset.baseVal, 0); +} + +function sample2() { + assert_approx_equals(stop1.offset.animVal, 0.5, epsilon); + assert_equals(stop1.offset.baseVal, 0); +} + +function sample3() { + assert_approx_equals(stop1.offset.animVal, 1, epsilon); + assert_equals(stop1.offset.baseVal, 0); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 4.0, sample3] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svgnumberlist-animation-1.html b/tests/wpt/web-platform-tests/svg/animations/svgnumberlist-animation-1.html new file mode 100644 index 00000000000..aabb7d7daa1 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svgnumberlist-animation-1.html @@ -0,0 +1,90 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test SVGNumberList animation on 'rotate' attribute of text.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var text = createSVGElement("text"); +text.textContent = "ABCD"; +text.setAttribute("x", "40 60 80 100"); +text.setAttribute("y", "60"); +text.setAttribute("rotate", "15"); +text.setAttribute("fill", "green"); +text.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "rotate"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "0 0 0 0"); +animate.setAttribute("to", "45 90 135 180"); +text.appendChild(animate); +rootSVGElement.appendChild(text); + +// Setup animation test +function sample1() { + assert_equals(text.rotate.animVal.numberOfItems, 1); + assert_approx_equals(text.rotate.animVal.getItem(0).value, 15, epsilon); + + assert_equals(text.rotate.baseVal.numberOfItems, 1); + assert_equals(text.rotate.baseVal.getItem(0).value, 15); +} + +function sample2() { + assert_equals(text.rotate.animVal.numberOfItems, 4); + assert_approx_equals(text.rotate.animVal.getItem(0).value, 0, epsilon); + assert_approx_equals(text.rotate.animVal.getItem(1).value, 0, epsilon); + assert_approx_equals(text.rotate.animVal.getItem(2).value, 0, epsilon); + assert_approx_equals(text.rotate.animVal.getItem(3).value, 0, epsilon); + + assert_equals(text.rotate.baseVal.numberOfItems, 1); + assert_equals(text.rotate.baseVal.getItem(0).value, 15); +} + +function sample3() { + assert_equals(text.rotate.animVal.numberOfItems, 4); + assert_approx_equals(text.rotate.animVal.getItem(0).value, 22.5, epsilon); + assert_approx_equals(text.rotate.animVal.getItem(1).value, 45, epsilon); + assert_approx_equals(text.rotate.animVal.getItem(2).value, 67.5, epsilon); + assert_approx_equals(text.rotate.animVal.getItem(3).value, 90, epsilon); + + assert_equals(text.rotate.baseVal.numberOfItems, 1); + assert_equals(text.rotate.baseVal.getItem(0).value, 15); +} + +function sample4() { + assert_equals(text.rotate.animVal.numberOfItems, 4); + assert_approx_equals(text.rotate.animVal.getItem(0).value, 45, epsilon); + assert_approx_equals(text.rotate.animVal.getItem(1).value, 90, epsilon); + assert_approx_equals(text.rotate.animVal.getItem(2).value, 135, epsilon); + assert_approx_equals(text.rotate.animVal.getItem(3).value, 180, epsilon); + + assert_equals(text.rotate.baseVal.numberOfItems, 1); + assert_equals(text.rotate.baseVal.getItem(0).value, 15); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 0.001, sample2], + ["animation", 2.0, sample3], + ["animation", 3.999, sample4], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svgnumberlist-animation-2.html b/tests/wpt/web-platform-tests/svg/animations/svgnumberlist-animation-2.html new file mode 100644 index 00000000000..e62bbf68602 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svgnumberlist-animation-2.html @@ -0,0 +1,90 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test 'by' animation of SVGNumberList on 'rotate' attribute of text.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var text = createSVGElement("text"); +text.textContent = "ABCD"; +text.setAttribute("x", "40 60 80 100"); +text.setAttribute("y", "60"); +text.setAttribute("rotate", "15"); +text.setAttribute("fill", "green"); +text.setAttribute("onclick", "executeTest()"); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "rotate"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "0 45 90 135"); +animate.setAttribute("by", "45 45 45 45"); +text.appendChild(animate); +rootSVGElement.appendChild(text); + +// Setup animation test +function sample1() { + assert_equals(text.rotate.animVal.numberOfItems, 1); + assert_approx_equals(text.rotate.animVal.getItem(0).value, 15, epsilon); + + assert_equals(text.rotate.baseVal.numberOfItems, 1); + assert_equals(text.rotate.baseVal.getItem(0).value, 15); +} + +function sample2() { + assert_equals(text.rotate.animVal.numberOfItems, 4); + assert_approx_equals(text.rotate.animVal.getItem(0).value, 0, epsilon); + assert_approx_equals(text.rotate.animVal.getItem(1).value, 45, epsilon); + assert_approx_equals(text.rotate.animVal.getItem(2).value, 90, epsilon); + assert_approx_equals(text.rotate.animVal.getItem(3).value, 135, epsilon); + + assert_equals(text.rotate.baseVal.numberOfItems, 1); + assert_equals(text.rotate.baseVal.getItem(0).value, 15); +} + +function sample3() { + assert_equals(text.rotate.animVal.numberOfItems, 4); + assert_approx_equals(text.rotate.animVal.getItem(0).value, 22.5, epsilon); + assert_approx_equals(text.rotate.animVal.getItem(1).value, 67.5, epsilon); + assert_approx_equals(text.rotate.animVal.getItem(2).value, 112.5, epsilon); + assert_approx_equals(text.rotate.animVal.getItem(3).value, 157.5, epsilon); + + assert_equals(text.rotate.baseVal.numberOfItems, 1); + assert_equals(text.rotate.baseVal.getItem(0).value, 15); +} + +function sample4() { + assert_equals(text.rotate.animVal.numberOfItems, 4); + assert_approx_equals(text.rotate.animVal.getItem(0).value, 45, epsilon); + assert_approx_equals(text.rotate.animVal.getItem(1).value, 90, epsilon); + assert_approx_equals(text.rotate.animVal.getItem(2).value, 135, epsilon); + assert_approx_equals(text.rotate.animVal.getItem(3).value, 180, epsilon); + + assert_equals(text.rotate.baseVal.numberOfItems, 1); + assert_equals(text.rotate.baseVal.getItem(0).value, 15); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 0.001, sample2], + ["animation", 2.0, sample3], + ["animation", 3.999, sample4], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svgnumberoptionalnumber-animation-1.html b/tests/wpt/web-platform-tests/svg/animations/svgnumberoptionalnumber-animation-1.html new file mode 100644 index 00000000000..b20855140ff --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svgnumberoptionalnumber-animation-1.html @@ -0,0 +1,93 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test 'to' animation of SVGNumberOptionalNumber with optional number.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var defs = createSVGElement("defs"); +rootSVGElement.appendChild(defs); + +var filter = createSVGElement("filter"); +filter.setAttribute("id", "filter"); +filter.setAttribute("x", "-30%"); +filter.setAttribute("y", "-30%"); +filter.setAttribute("width", "160%"); +filter.setAttribute("height", "160%"); +defs.appendChild(filter); + +var feGaussianBlur = createSVGElement("feGaussianBlur"); +feGaussianBlur.setAttribute("id", "blur"); +feGaussianBlur.setAttribute("stdDeviation", "5"); +filter.appendChild(feGaussianBlur); + +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "50"); +rect.setAttribute("y", "50"); +rect.setAttribute("width", "200"); +rect.setAttribute("height", "200"); +rect.setAttribute("fill", "green"); +rect.setAttribute("filter", "url(#filter)"); +rect.setAttribute("onclick", "executeTest()"); +rootSVGElement.appendChild(rect); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "stdDeviation"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "5 5"); +animate.setAttribute("to", "40 10"); +feGaussianBlur.appendChild(animate); + +// Setup animation test +function sample1() { + assert_approx_equals(feGaussianBlur.stdDeviationX.animVal, 5, epsilon); + assert_approx_equals(feGaussianBlur.stdDeviationY.animVal, 5, epsilon); + + assert_equals(feGaussianBlur.stdDeviationX.baseVal, 5); + assert_equals(feGaussianBlur.stdDeviationY.baseVal, 5); +} + +function sample2() { + assert_approx_equals(feGaussianBlur.stdDeviationX.animVal, 22.5, epsilon); + assert_approx_equals(feGaussianBlur.stdDeviationY.animVal, 7.5, epsilon); + + assert_equals(feGaussianBlur.stdDeviationX.baseVal, 5); + assert_equals(feGaussianBlur.stdDeviationY.baseVal, 5); +} + +function sample3() { + assert_approx_equals(feGaussianBlur.stdDeviationX.animVal, 40, epsilon); + assert_approx_equals(feGaussianBlur.stdDeviationY.animVal, 10, epsilon); + + assert_equals(feGaussianBlur.stdDeviationX.baseVal, 5); + assert_equals(feGaussianBlur.stdDeviationY.baseVal, 5); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +window.clickX = 100; +window.clickY = 100; + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svgnumberoptionalnumber-animation-2.html b/tests/wpt/web-platform-tests/svg/animations/svgnumberoptionalnumber-animation-2.html new file mode 100644 index 00000000000..db2576533ce --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svgnumberoptionalnumber-animation-2.html @@ -0,0 +1,93 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test 'to' animation of SVGNumberOptionalNumber without optional number.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var defs = createSVGElement("defs"); +rootSVGElement.appendChild(defs); + +var filter = createSVGElement("filter"); +filter.setAttribute("id", "filter"); +filter.setAttribute("x", "-30%"); +filter.setAttribute("y", "-30%"); +filter.setAttribute("width", "160%"); +filter.setAttribute("height", "160%"); +defs.appendChild(filter); + +var feGaussianBlur = createSVGElement("feGaussianBlur"); +feGaussianBlur.setAttribute("id", "blur"); +feGaussianBlur.setAttribute("stdDeviation", "5"); +filter.appendChild(feGaussianBlur); + +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "50"); +rect.setAttribute("y", "50"); +rect.setAttribute("width", "200"); +rect.setAttribute("height", "200"); +rect.setAttribute("fill", "green"); +rect.setAttribute("filter", "url(#filter)"); +rect.setAttribute("onclick", "executeTest()"); +rootSVGElement.appendChild(rect); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "stdDeviation"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "5"); +animate.setAttribute("to", "40 10"); +feGaussianBlur.appendChild(animate); + +// Setup animation test +function sample1() { + assert_approx_equals(feGaussianBlur.stdDeviationX.animVal, 5, epsilon); + assert_approx_equals(feGaussianBlur.stdDeviationY.animVal, 5, epsilon); + + assert_equals(feGaussianBlur.stdDeviationX.baseVal, 5); + assert_equals(feGaussianBlur.stdDeviationY.baseVal, 5); +} + +function sample2() { + assert_approx_equals(feGaussianBlur.stdDeviationX.animVal, 22.5, epsilon); + assert_approx_equals(feGaussianBlur.stdDeviationY.animVal, 7.5, epsilon); + + assert_equals(feGaussianBlur.stdDeviationX.baseVal, 5); + assert_equals(feGaussianBlur.stdDeviationY.baseVal, 5); +} + +function sample3() { + assert_approx_equals(feGaussianBlur.stdDeviationX.animVal, 40, epsilon); + assert_approx_equals(feGaussianBlur.stdDeviationY.animVal, 10, epsilon); + + assert_equals(feGaussianBlur.stdDeviationX.baseVal, 5); + assert_equals(feGaussianBlur.stdDeviationY.baseVal, 5); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +window.clickX = 60; +window.clickY = 60; + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/animations/svgnumberoptionalnumber-animation-3.html b/tests/wpt/web-platform-tests/svg/animations/svgnumberoptionalnumber-animation-3.html new file mode 100644 index 00000000000..974c1d7034a --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/svgnumberoptionalnumber-animation-3.html @@ -0,0 +1,93 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Test 'to' animation of SVGNumberOptionalNumber without optional number.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/SVGAnimationTestCase-testharness.js"></script> + +<svg> +</svg> + +<script> +var rootSVGElement = document.querySelector("svg"); +var epsilon = 1.0; + +// Setup test document +var defs = createSVGElement("defs"); +rootSVGElement.appendChild(defs); + +var filter = createSVGElement("filter"); +filter.setAttribute("id", "filter"); +filter.setAttribute("x", "-30%"); +filter.setAttribute("y", "-30%"); +filter.setAttribute("width", "160%"); +filter.setAttribute("height", "160%"); +defs.appendChild(filter); + +var feGaussianBlur = createSVGElement("feGaussianBlur"); +feGaussianBlur.setAttribute("id", "blur"); +feGaussianBlur.setAttribute("stdDeviation", "40 10"); +filter.appendChild(feGaussianBlur); + +var rect = createSVGElement("rect"); +rect.setAttribute("id", "rect"); +rect.setAttribute("x", "50"); +rect.setAttribute("y", "50"); +rect.setAttribute("width", "200"); +rect.setAttribute("height", "200"); +rect.setAttribute("fill", "green"); +rect.setAttribute("filter", "url(#filter)"); +rect.setAttribute("onclick", "executeTest()"); +rootSVGElement.appendChild(rect); + +var animate = createSVGElement("animate"); +animate.setAttribute("id", "animation"); +animate.setAttribute("attributeName", "stdDeviation"); +animate.setAttribute("begin", "0s"); +animate.setAttribute("dur", "4s"); +animate.setAttribute("from", "40 10"); +animate.setAttribute("to", "5"); +feGaussianBlur.appendChild(animate); + +// Setup animation test +function sample1() { + assert_approx_equals(feGaussianBlur.stdDeviationX.animVal, 40, epsilon); + assert_approx_equals(feGaussianBlur.stdDeviationY.animVal, 10, epsilon); + + assert_equals(feGaussianBlur.stdDeviationX.baseVal, 40); + assert_equals(feGaussianBlur.stdDeviationY.baseVal, 10); +} + +function sample2() { + assert_approx_equals(feGaussianBlur.stdDeviationX.animVal, 22.5, epsilon); + assert_approx_equals(feGaussianBlur.stdDeviationY.animVal, 7.5, epsilon); + + assert_equals(feGaussianBlur.stdDeviationX.baseVal, 40); + assert_equals(feGaussianBlur.stdDeviationY.baseVal, 10); +} + +function sample3() { + assert_approx_equals(feGaussianBlur.stdDeviationX.animVal, 5, epsilon); + assert_approx_equals(feGaussianBlur.stdDeviationY.animVal, 5, epsilon); + + assert_equals(feGaussianBlur.stdDeviationX.baseVal, 40); + assert_equals(feGaussianBlur.stdDeviationY.baseVal, 10); +} + +smil_async_test((t) => { + const expectedValues = [ + // [animationId, time, sampleCallback] + ["animation", 0.0, sample1], + ["animation", 2.0, sample2], + ["animation", 3.999, sample3], + ["animation", 4.001, sample1] + ]; + + runAnimationTest(t, expectedValues); +}); + +window.clickX = 60; +window.clickY = 60; + +</script>
\ No newline at end of file |