dom/smil/test/db_smilCSSPaced.js

changeset 0
6474c204b198
     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 +];

mercurial