1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/smil/test/db_smilCSSPaced.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,303 @@ 1.4 +/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 1.5 +/* vim: set shiftwidth=4 tabstop=4 autoindent cindent noexpandtab: */ 1.6 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.7 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.8 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.9 + 1.10 +/* testcase data for paced-mode animations of CSS properties */ 1.11 + 1.12 +// Lists of testcases for re-use across multiple properties of the same type 1.13 +var _pacedTestLists = 1.14 +{ 1.15 + color: [ 1.16 + new AnimTestcasePaced("rgb(2, 4, 6); " + 1.17 + "rgb(4, 8, 12); " + 1.18 + "rgb(8, 16, 24)", 1.19 + { comp0: "rgb(2, 4, 6)", 1.20 + comp1_6: "rgb(3, 6, 9)", 1.21 + comp1_3: "rgb(4, 8, 12)", 1.22 + comp2_3: "rgb(6, 12, 18)", 1.23 + comp1: "rgb(8, 16, 24)" 1.24 + }), 1.25 + new AnimTestcasePaced("rgb(10, 10, 10); " + 1.26 + "rgb(20, 10, 8); " + 1.27 + "rgb(20, 30, 4)", 1.28 + { comp0: "rgb(10, 10, 10)", 1.29 + comp1_6: "rgb(15, 10, 9)", 1.30 + comp1_3: "rgb(20, 10, 8)", 1.31 + comp2_3: "rgb(20, 20, 6)", 1.32 + comp1: "rgb(20, 30, 4)" 1.33 + }), 1.34 + new AnimTestcasePaced("olive; " + // rgb(128, 128, 0) 1.35 + "currentColor; " + // rgb(50, 50, 50) 1.36 + "rgb(206, 150, 206)", 1.37 + { comp0: "rgb(128, 128, 0)", 1.38 + comp1_6: "rgb(89, 89, 25)", 1.39 + comp1_3: "rgb(50, 50, 50)", 1.40 + comp2_3: "rgb(128, 100, 128)", 1.41 + comp1: "rgb(206, 150, 206)" 1.42 + }), 1.43 + ], 1.44 + paintServer : [ 1.45 + // Sanity check: These aren't interpolatable -- they should end up 1.46 + // ignoring the calcMode="paced" and falling into discrete-mode. 1.47 + new AnimTestcasePaced("url(#gradA); url(#gradB)", 1.48 + { 1.49 + comp0: "url(\"" + document.URL + "#gradA\") rgb(0, 0, 0)", 1.50 + comp1_6: "url(\"" + document.URL + "#gradA\") rgb(0, 0, 0)", 1.51 + comp1_3: "url(\"" + document.URL + "#gradA\") rgb(0, 0, 0)", 1.52 + comp2_3: "url(\"" + document.URL + "#gradB\") rgb(0, 0, 0)", 1.53 + comp1: "url(\"" + document.URL + "#gradB\") rgb(0, 0, 0)" 1.54 + }, 1.55 + "need support for URI-based paints"), 1.56 + new AnimTestcasePaced("url(#gradA); url(#gradB); url(#gradC)", 1.57 + { 1.58 + comp0: "url(\"" + document.URL + "#gradA\") rgb(0, 0, 0)", 1.59 + comp1_6: "url(\"" + document.URL + "#gradA\") rgb(0, 0, 0)", 1.60 + comp1_3: "url(\"" + document.URL + "#gradB\") rgb(0, 0, 0)", 1.61 + comp2_3: "url(\"" + document.URL + "#gradC\") rgb(0, 0, 0)", 1.62 + comp1: "url(\"" + document.URL + "#gradC\") rgb(0, 0, 0)" 1.63 + }, 1.64 + "need support for URI-based paints"), 1.65 + ], 1.66 + lengthNoUnits : [ 1.67 + new AnimTestcasePaced("2; 0; 4", 1.68 + { comp0: "2px", 1.69 + comp1_6: "1px", 1.70 + comp1_3: "0px", 1.71 + comp2_3: "2px", 1.72 + comp1: "4px" 1.73 + }), 1.74 + new AnimTestcasePaced("10; 12; 8", 1.75 + { comp0: "10px", 1.76 + comp1_6: "11px", 1.77 + comp1_3: "12px", 1.78 + comp2_3: "10px", 1.79 + comp1: "8px" 1.80 + }), 1.81 + ], 1.82 + lengthNoUnitsSVG : [ 1.83 + new AnimTestcasePaced("2; 0; 4", 1.84 + { comp0: "2", 1.85 + comp1_6: "1", 1.86 + comp1_3: "0", 1.87 + comp2_3: "2", 1.88 + comp1: "4" 1.89 + }), 1.90 + new AnimTestcasePaced("10; 12; 8", 1.91 + { comp0: "10", 1.92 + comp1_6: "11", 1.93 + comp1_3: "12", 1.94 + comp2_3: "10", 1.95 + comp1: "8" 1.96 + }), 1.97 + ], 1.98 + lengthPx : [ 1.99 + new AnimTestcasePaced("0px; 2px; 6px", 1.100 + { comp0: "0px", 1.101 + comp1_6: "1px", 1.102 + comp1_3: "2px", 1.103 + comp2_3: "4px", 1.104 + comp1: "6px" 1.105 + }), 1.106 + ], 1.107 + lengthPx : [ 1.108 + new AnimTestcasePaced("0px; 2px; 6px", 1.109 + { comp0: "0px", 1.110 + comp1_6: "1px", 1.111 + comp1_3: "2px", 1.112 + comp2_3: "4px", 1.113 + comp1: "6px" 1.114 + }), 1.115 + new AnimTestcasePaced("10px; 12px; 8px", 1.116 + { comp0: "10px", 1.117 + comp1_6: "11px", 1.118 + comp1_3: "12px", 1.119 + comp2_3: "10px", 1.120 + comp1: "8px" 1.121 + }), 1.122 + ], 1.123 + lengthPctSVG : [ 1.124 + new AnimTestcasePaced("5%; 6%; 4%", 1.125 + { comp0: "5%", 1.126 + comp1_6: "5.5%", 1.127 + comp1_3: "6%", 1.128 + comp2_3: "5%", 1.129 + comp1: "4%" 1.130 + }), 1.131 + ], 1.132 + lengthPxPctSVG : [ 1.133 + new AnimTestcasePaced("0px; 1%; 6px", 1.134 + { comp0: "0px", 1.135 + comp1_6: "1px", 1.136 + comp1_3: "1%", 1.137 + comp2_3: "4px", 1.138 + comp1: "6px" 1.139 + }, 1.140 + "need support for interpolating between " + 1.141 + "px and percent values"), 1.142 + ], 1.143 + opacity : [ 1.144 + new AnimTestcasePaced("0; 0.2; 0.6", 1.145 + { comp0: "0", 1.146 + comp1_6: "0.1", 1.147 + comp1_3: "0.2", 1.148 + comp2_3: "0.4", 1.149 + comp1: "0.6" 1.150 + }), 1.151 + new AnimTestcasePaced("0.7; 1.0; 0.4", 1.152 + { comp0: "0.7", 1.153 + comp1_6: "0.85", 1.154 + comp1_3: "1", 1.155 + comp2_3: "0.7", 1.156 + comp1: "0.4" 1.157 + }), 1.158 + ], 1.159 + rect : [ 1.160 + new AnimTestcasePaced("rect(2px, 4px, 6px, 8px); " + 1.161 + "rect(4px, 8px, 12px, 16px); " + 1.162 + "rect(8px, 16px, 24px, 32px)", 1.163 + { comp0: "rect(2px, 4px, 6px, 8px)", 1.164 + comp1_6: "rect(3px, 6px, 9px, 12px)", 1.165 + comp1_3: "rect(4px, 8px, 12px, 16px)", 1.166 + comp2_3: "rect(6px, 12px, 18px, 24px)", 1.167 + comp1: "rect(8px, 16px, 24px, 32px)" 1.168 + }), 1.169 + new AnimTestcasePaced("rect(10px, 10px, 10px, 10px); " + 1.170 + "rect(20px, 10px, 50px, 8px); " + 1.171 + "rect(20px, 30px, 130px, 4px)", 1.172 + { comp0: "rect(10px, 10px, 10px, 10px)", 1.173 + comp1_6: "rect(15px, 10px, 30px, 9px)", 1.174 + comp1_3: "rect(20px, 10px, 50px, 8px)", 1.175 + comp2_3: "rect(20px, 20px, 90px, 6px)", 1.176 + comp1: "rect(20px, 30px, 130px, 4px)" 1.177 + }), 1.178 + new AnimTestcasePaced("rect(10px, auto, 10px, 10px); " + 1.179 + "rect(20px, auto, 50px, 8px); " + 1.180 + "rect(40px, auto, 130px, 4px)", 1.181 + { comp0: "rect(10px, auto, 10px, 10px)", 1.182 + comp1_6: "rect(15px, auto, 30px, 9px)", 1.183 + comp1_3: "rect(20px, auto, 50px, 8px)", 1.184 + comp2_3: "rect(30px, auto, 90px, 6px)", 1.185 + comp1: "rect(40px, auto, 130px, 4px)" 1.186 + }), 1.187 + // Paced-mode animation is not supported in these next few cases 1.188 + // (Can't compute subcomponent distance between 'auto' & px-values) 1.189 + new AnimTestcasePaced("rect(10px, 10px, 10px, auto); " + 1.190 + "rect(20px, 10px, 50px, 8px); " + 1.191 + "rect(20px, 30px, 130px, 4px)", 1.192 + { comp0: "rect(10px, 10px, 10px, auto)", 1.193 + comp1_6: "rect(10px, 10px, 10px, auto)", 1.194 + comp1_3: "rect(20px, 10px, 50px, 8px)", 1.195 + comp2_3: "rect(20px, 30px, 130px, 4px)", 1.196 + comp1: "rect(20px, 30px, 130px, 4px)" 1.197 + }), 1.198 + new AnimTestcasePaced("rect(10px, 10px, 10px, 10px); " + 1.199 + "rect(20px, 10px, 50px, 8px); " + 1.200 + "auto", 1.201 + { comp0: "rect(10px, 10px, 10px, 10px)", 1.202 + comp1_6: "rect(10px, 10px, 10px, 10px)", 1.203 + comp1_3: "rect(20px, 10px, 50px, 8px)", 1.204 + comp2_3: "auto", 1.205 + comp1: "auto" 1.206 + }), 1.207 + new AnimTestcasePaced("auto; " + 1.208 + "auto; " + 1.209 + "rect(20px, 30px, 130px, 4px)", 1.210 + { comp0: "auto", 1.211 + comp1_6: "auto", 1.212 + comp1_3: "auto", 1.213 + comp2_3: "rect(20px, 30px, 130px, 4px)", 1.214 + comp1: "rect(20px, 30px, 130px, 4px)" 1.215 + }), 1.216 + new AnimTestcasePaced("auto; auto; auto", 1.217 + { comp0: "auto", 1.218 + comp1_6: "auto", 1.219 + comp1_3: "auto", 1.220 + comp2_3: "auto", 1.221 + comp1: "auto" 1.222 + }), 1.223 + ], 1.224 +}; 1.225 + 1.226 +// TODO: test more properties here. 1.227 +var gPacedBundles = 1.228 +[ 1.229 + new TestcaseBundle(gPropList.clip, _pacedTestLists.rect), 1.230 + new TestcaseBundle(gPropList.color, _pacedTestLists.color), 1.231 + new TestcaseBundle(gPropList.direction, [ 1.232 + new AnimTestcasePaced("rtl; ltr; rtl") 1.233 + ]), 1.234 + new TestcaseBundle(gPropList.fill, 1.235 + [].concat(_pacedTestLists.color, 1.236 + _pacedTestLists.paintServer)), 1.237 + new TestcaseBundle(gPropList.font_size, 1.238 + [].concat(_pacedTestLists.lengthNoUnits, 1.239 + _pacedTestLists.lengthPx, [ 1.240 + new AnimTestcasePaced("20%; 24%; 16%", 1.241 + { comp0: "10px", 1.242 + comp1_6: "11px", 1.243 + comp1_3: "12px", 1.244 + comp2_3: "10px", 1.245 + comp1: "8px" 1.246 + }), 1.247 + new AnimTestcasePaced("0px; 4%; 6px", 1.248 + { comp0: "0px", 1.249 + comp1_6: "1px", 1.250 + comp1_3: "2px", 1.251 + comp2_3: "4px", 1.252 + comp1: "6px" 1.253 + }), 1.254 + ]) 1.255 + ), 1.256 + new TestcaseBundle(gPropList.font_size_adjust, [ 1.257 + new AnimTestcasePaced("0.2; 0.6; 0.8", 1.258 + { comp0: "0.2", 1.259 + comp1_6: "0.3", 1.260 + comp1_3: "0.4", 1.261 + comp2_3: "0.6", 1.262 + comp1: "0.8" 1.263 + }), 1.264 + new AnimTestcasePaced("none; none; 0.5", 1.265 + { comp0: "none", 1.266 + comp1_6: "none", 1.267 + comp1_3: "none", 1.268 + comp2_3: "0.5", 1.269 + comp1: "0.5" 1.270 + }), 1.271 + ]), 1.272 + new TestcaseBundle(gPropList.font_family, [ 1.273 + // Sanity check: 'font-family' isn't interpolatable. It should end up 1.274 + // ignoring the calcMode="paced" and falling into discrete-mode. 1.275 + new AnimTestcasePaced("serif; sans-serif; monospace", 1.276 + { comp0: "serif", 1.277 + comp1_6: "serif", 1.278 + comp1_3: "sans-serif", 1.279 + comp2_3: "monospace", 1.280 + comp1: "monospace" 1.281 + }, 1.282 + "need support for more font properties"), 1.283 + ]), 1.284 + new TestcaseBundle(gPropList.opacity, _pacedTestLists.opacity), 1.285 + new TestcaseBundle(gPropList.stroke_dasharray, 1.286 + [].concat(_pacedTestLists.lengthPctSVG, [ 1.287 + new AnimTestcasePaced("7, 7, 7; 7, 10, 3; 1, 2, 3", 1.288 + { comp0: "7, 7, 7", 1.289 + comp1_6: "7, 8.5, 5", 1.290 + comp1_3: "7, 10, 3", 1.291 + comp2_3: "4, 6, 3", 1.292 + comp1: "1, 2, 3" 1.293 + }), 1.294 + ])), 1.295 + new TestcaseBundle(gPropList.stroke_dashoffset, 1.296 + [].concat(_pacedTestLists.lengthNoUnitsSVG, 1.297 + _pacedTestLists.lengthPx, 1.298 + _pacedTestLists.lengthPctSVG, 1.299 + _pacedTestLists.lengthPxPctSVG)), 1.300 + new TestcaseBundle(gPropList.stroke_width, 1.301 + [].concat(_pacedTestLists.lengthNoUnitsSVG, 1.302 + _pacedTestLists.lengthPx, 1.303 + _pacedTestLists.lengthPctSVG, 1.304 + _pacedTestLists.lengthPxPctSVG)), 1.305 + // XXXdholbert TODO: test 'stroke-dasharray' once we support animating it 1.306 +];