michael@0: /* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ michael@0: /* vim: set shiftwidth=4 tabstop=4 autoindent cindent noexpandtab: */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: /* testcase data for paced-mode animations of CSS properties */ michael@0: michael@0: // Lists of testcases for re-use across multiple properties of the same type michael@0: var _pacedTestLists = michael@0: { michael@0: color: [ michael@0: new AnimTestcasePaced("rgb(2, 4, 6); " + michael@0: "rgb(4, 8, 12); " + michael@0: "rgb(8, 16, 24)", michael@0: { comp0: "rgb(2, 4, 6)", michael@0: comp1_6: "rgb(3, 6, 9)", michael@0: comp1_3: "rgb(4, 8, 12)", michael@0: comp2_3: "rgb(6, 12, 18)", michael@0: comp1: "rgb(8, 16, 24)" michael@0: }), michael@0: new AnimTestcasePaced("rgb(10, 10, 10); " + michael@0: "rgb(20, 10, 8); " + michael@0: "rgb(20, 30, 4)", michael@0: { comp0: "rgb(10, 10, 10)", michael@0: comp1_6: "rgb(15, 10, 9)", michael@0: comp1_3: "rgb(20, 10, 8)", michael@0: comp2_3: "rgb(20, 20, 6)", michael@0: comp1: "rgb(20, 30, 4)" michael@0: }), michael@0: new AnimTestcasePaced("olive; " + // rgb(128, 128, 0) michael@0: "currentColor; " + // rgb(50, 50, 50) michael@0: "rgb(206, 150, 206)", michael@0: { comp0: "rgb(128, 128, 0)", michael@0: comp1_6: "rgb(89, 89, 25)", michael@0: comp1_3: "rgb(50, 50, 50)", michael@0: comp2_3: "rgb(128, 100, 128)", michael@0: comp1: "rgb(206, 150, 206)" michael@0: }), michael@0: ], michael@0: paintServer : [ michael@0: // Sanity check: These aren't interpolatable -- they should end up michael@0: // ignoring the calcMode="paced" and falling into discrete-mode. michael@0: new AnimTestcasePaced("url(#gradA); url(#gradB)", michael@0: { michael@0: comp0: "url(\"" + document.URL + "#gradA\") rgb(0, 0, 0)", michael@0: comp1_6: "url(\"" + document.URL + "#gradA\") rgb(0, 0, 0)", michael@0: comp1_3: "url(\"" + document.URL + "#gradA\") rgb(0, 0, 0)", michael@0: comp2_3: "url(\"" + document.URL + "#gradB\") rgb(0, 0, 0)", michael@0: comp1: "url(\"" + document.URL + "#gradB\") rgb(0, 0, 0)" michael@0: }, michael@0: "need support for URI-based paints"), michael@0: new AnimTestcasePaced("url(#gradA); url(#gradB); url(#gradC)", michael@0: { michael@0: comp0: "url(\"" + document.URL + "#gradA\") rgb(0, 0, 0)", michael@0: comp1_6: "url(\"" + document.URL + "#gradA\") rgb(0, 0, 0)", michael@0: comp1_3: "url(\"" + document.URL + "#gradB\") rgb(0, 0, 0)", michael@0: comp2_3: "url(\"" + document.URL + "#gradC\") rgb(0, 0, 0)", michael@0: comp1: "url(\"" + document.URL + "#gradC\") rgb(0, 0, 0)" michael@0: }, michael@0: "need support for URI-based paints"), michael@0: ], michael@0: lengthNoUnits : [ michael@0: new AnimTestcasePaced("2; 0; 4", michael@0: { comp0: "2px", michael@0: comp1_6: "1px", michael@0: comp1_3: "0px", michael@0: comp2_3: "2px", michael@0: comp1: "4px" michael@0: }), michael@0: new AnimTestcasePaced("10; 12; 8", michael@0: { comp0: "10px", michael@0: comp1_6: "11px", michael@0: comp1_3: "12px", michael@0: comp2_3: "10px", michael@0: comp1: "8px" michael@0: }), michael@0: ], michael@0: lengthNoUnitsSVG : [ michael@0: new AnimTestcasePaced("2; 0; 4", michael@0: { comp0: "2", michael@0: comp1_6: "1", michael@0: comp1_3: "0", michael@0: comp2_3: "2", michael@0: comp1: "4" michael@0: }), michael@0: new AnimTestcasePaced("10; 12; 8", michael@0: { comp0: "10", michael@0: comp1_6: "11", michael@0: comp1_3: "12", michael@0: comp2_3: "10", michael@0: comp1: "8" michael@0: }), michael@0: ], michael@0: lengthPx : [ michael@0: new AnimTestcasePaced("0px; 2px; 6px", michael@0: { comp0: "0px", michael@0: comp1_6: "1px", michael@0: comp1_3: "2px", michael@0: comp2_3: "4px", michael@0: comp1: "6px" michael@0: }), michael@0: ], michael@0: lengthPx : [ michael@0: new AnimTestcasePaced("0px; 2px; 6px", michael@0: { comp0: "0px", michael@0: comp1_6: "1px", michael@0: comp1_3: "2px", michael@0: comp2_3: "4px", michael@0: comp1: "6px" michael@0: }), michael@0: new AnimTestcasePaced("10px; 12px; 8px", michael@0: { comp0: "10px", michael@0: comp1_6: "11px", michael@0: comp1_3: "12px", michael@0: comp2_3: "10px", michael@0: comp1: "8px" michael@0: }), michael@0: ], michael@0: lengthPctSVG : [ michael@0: new AnimTestcasePaced("5%; 6%; 4%", michael@0: { comp0: "5%", michael@0: comp1_6: "5.5%", michael@0: comp1_3: "6%", michael@0: comp2_3: "5%", michael@0: comp1: "4%" michael@0: }), michael@0: ], michael@0: lengthPxPctSVG : [ michael@0: new AnimTestcasePaced("0px; 1%; 6px", michael@0: { comp0: "0px", michael@0: comp1_6: "1px", michael@0: comp1_3: "1%", michael@0: comp2_3: "4px", michael@0: comp1: "6px" michael@0: }, michael@0: "need support for interpolating between " + michael@0: "px and percent values"), michael@0: ], michael@0: opacity : [ michael@0: new AnimTestcasePaced("0; 0.2; 0.6", michael@0: { comp0: "0", michael@0: comp1_6: "0.1", michael@0: comp1_3: "0.2", michael@0: comp2_3: "0.4", michael@0: comp1: "0.6" michael@0: }), michael@0: new AnimTestcasePaced("0.7; 1.0; 0.4", michael@0: { comp0: "0.7", michael@0: comp1_6: "0.85", michael@0: comp1_3: "1", michael@0: comp2_3: "0.7", michael@0: comp1: "0.4" michael@0: }), michael@0: ], michael@0: rect : [ michael@0: new AnimTestcasePaced("rect(2px, 4px, 6px, 8px); " + michael@0: "rect(4px, 8px, 12px, 16px); " + michael@0: "rect(8px, 16px, 24px, 32px)", michael@0: { comp0: "rect(2px, 4px, 6px, 8px)", michael@0: comp1_6: "rect(3px, 6px, 9px, 12px)", michael@0: comp1_3: "rect(4px, 8px, 12px, 16px)", michael@0: comp2_3: "rect(6px, 12px, 18px, 24px)", michael@0: comp1: "rect(8px, 16px, 24px, 32px)" michael@0: }), michael@0: new AnimTestcasePaced("rect(10px, 10px, 10px, 10px); " + michael@0: "rect(20px, 10px, 50px, 8px); " + michael@0: "rect(20px, 30px, 130px, 4px)", michael@0: { comp0: "rect(10px, 10px, 10px, 10px)", michael@0: comp1_6: "rect(15px, 10px, 30px, 9px)", michael@0: comp1_3: "rect(20px, 10px, 50px, 8px)", michael@0: comp2_3: "rect(20px, 20px, 90px, 6px)", michael@0: comp1: "rect(20px, 30px, 130px, 4px)" michael@0: }), michael@0: new AnimTestcasePaced("rect(10px, auto, 10px, 10px); " + michael@0: "rect(20px, auto, 50px, 8px); " + michael@0: "rect(40px, auto, 130px, 4px)", michael@0: { comp0: "rect(10px, auto, 10px, 10px)", michael@0: comp1_6: "rect(15px, auto, 30px, 9px)", michael@0: comp1_3: "rect(20px, auto, 50px, 8px)", michael@0: comp2_3: "rect(30px, auto, 90px, 6px)", michael@0: comp1: "rect(40px, auto, 130px, 4px)" michael@0: }), michael@0: // Paced-mode animation is not supported in these next few cases michael@0: // (Can't compute subcomponent distance between 'auto' & px-values) michael@0: new AnimTestcasePaced("rect(10px, 10px, 10px, auto); " + michael@0: "rect(20px, 10px, 50px, 8px); " + michael@0: "rect(20px, 30px, 130px, 4px)", michael@0: { comp0: "rect(10px, 10px, 10px, auto)", michael@0: comp1_6: "rect(10px, 10px, 10px, auto)", michael@0: comp1_3: "rect(20px, 10px, 50px, 8px)", michael@0: comp2_3: "rect(20px, 30px, 130px, 4px)", michael@0: comp1: "rect(20px, 30px, 130px, 4px)" michael@0: }), michael@0: new AnimTestcasePaced("rect(10px, 10px, 10px, 10px); " + michael@0: "rect(20px, 10px, 50px, 8px); " + michael@0: "auto", michael@0: { comp0: "rect(10px, 10px, 10px, 10px)", michael@0: comp1_6: "rect(10px, 10px, 10px, 10px)", michael@0: comp1_3: "rect(20px, 10px, 50px, 8px)", michael@0: comp2_3: "auto", michael@0: comp1: "auto" michael@0: }), michael@0: new AnimTestcasePaced("auto; " + michael@0: "auto; " + michael@0: "rect(20px, 30px, 130px, 4px)", michael@0: { comp0: "auto", michael@0: comp1_6: "auto", michael@0: comp1_3: "auto", michael@0: comp2_3: "rect(20px, 30px, 130px, 4px)", michael@0: comp1: "rect(20px, 30px, 130px, 4px)" michael@0: }), michael@0: new AnimTestcasePaced("auto; auto; auto", michael@0: { comp0: "auto", michael@0: comp1_6: "auto", michael@0: comp1_3: "auto", michael@0: comp2_3: "auto", michael@0: comp1: "auto" michael@0: }), michael@0: ], michael@0: }; michael@0: michael@0: // TODO: test more properties here. michael@0: var gPacedBundles = michael@0: [ michael@0: new TestcaseBundle(gPropList.clip, _pacedTestLists.rect), michael@0: new TestcaseBundle(gPropList.color, _pacedTestLists.color), michael@0: new TestcaseBundle(gPropList.direction, [ michael@0: new AnimTestcasePaced("rtl; ltr; rtl") michael@0: ]), michael@0: new TestcaseBundle(gPropList.fill, michael@0: [].concat(_pacedTestLists.color, michael@0: _pacedTestLists.paintServer)), michael@0: new TestcaseBundle(gPropList.font_size, michael@0: [].concat(_pacedTestLists.lengthNoUnits, michael@0: _pacedTestLists.lengthPx, [ michael@0: new AnimTestcasePaced("20%; 24%; 16%", michael@0: { comp0: "10px", michael@0: comp1_6: "11px", michael@0: comp1_3: "12px", michael@0: comp2_3: "10px", michael@0: comp1: "8px" michael@0: }), michael@0: new AnimTestcasePaced("0px; 4%; 6px", michael@0: { comp0: "0px", michael@0: comp1_6: "1px", michael@0: comp1_3: "2px", michael@0: comp2_3: "4px", michael@0: comp1: "6px" michael@0: }), michael@0: ]) michael@0: ), michael@0: new TestcaseBundle(gPropList.font_size_adjust, [ michael@0: new AnimTestcasePaced("0.2; 0.6; 0.8", michael@0: { comp0: "0.2", michael@0: comp1_6: "0.3", michael@0: comp1_3: "0.4", michael@0: comp2_3: "0.6", michael@0: comp1: "0.8" michael@0: }), michael@0: new AnimTestcasePaced("none; none; 0.5", michael@0: { comp0: "none", michael@0: comp1_6: "none", michael@0: comp1_3: "none", michael@0: comp2_3: "0.5", michael@0: comp1: "0.5" michael@0: }), michael@0: ]), michael@0: new TestcaseBundle(gPropList.font_family, [ michael@0: // Sanity check: 'font-family' isn't interpolatable. It should end up michael@0: // ignoring the calcMode="paced" and falling into discrete-mode. michael@0: new AnimTestcasePaced("serif; sans-serif; monospace", michael@0: { comp0: "serif", michael@0: comp1_6: "serif", michael@0: comp1_3: "sans-serif", michael@0: comp2_3: "monospace", michael@0: comp1: "monospace" michael@0: }, michael@0: "need support for more font properties"), michael@0: ]), michael@0: new TestcaseBundle(gPropList.opacity, _pacedTestLists.opacity), michael@0: new TestcaseBundle(gPropList.stroke_dasharray, michael@0: [].concat(_pacedTestLists.lengthPctSVG, [ michael@0: new AnimTestcasePaced("7, 7, 7; 7, 10, 3; 1, 2, 3", michael@0: { comp0: "7, 7, 7", michael@0: comp1_6: "7, 8.5, 5", michael@0: comp1_3: "7, 10, 3", michael@0: comp2_3: "4, 6, 3", michael@0: comp1: "1, 2, 3" michael@0: }), michael@0: ])), michael@0: new TestcaseBundle(gPropList.stroke_dashoffset, michael@0: [].concat(_pacedTestLists.lengthNoUnitsSVG, michael@0: _pacedTestLists.lengthPx, michael@0: _pacedTestLists.lengthPctSVG, michael@0: _pacedTestLists.lengthPxPctSVG)), michael@0: new TestcaseBundle(gPropList.stroke_width, michael@0: [].concat(_pacedTestLists.lengthNoUnitsSVG, michael@0: _pacedTestLists.lengthPx, michael@0: _pacedTestLists.lengthPctSVG, michael@0: _pacedTestLists.lengthPxPctSVG)), michael@0: // XXXdholbert TODO: test 'stroke-dasharray' once we support animating it michael@0: ];