ad8e707114a6c722ac87a44e3c54075de9d44d16
[WebKit-https.git] / LayoutTests / css3 / scroll-snap / scroll-snap-property-parsing.js
1 description("Test the parsing of the -webkit-scroll-snap-* properties.");
2
3 var stylesheet, cssRule, declaration;
4 var styleElement = document.createElement("style");
5 document.head.appendChild(styleElement);
6 stylesheet = styleElement.sheet;
7
8 function testScrollSnapRule(description, snapProperty, rule, expectedValue)
9 {
10     debug("");
11     debug(description + " : " + rule);
12
13     stylesheet.insertRule("body { -webkit-scroll-snap-" + snapProperty + ": " + rule + "; }", 0);
14     cssRule = stylesheet.cssRules.item(0);
15
16     shouldBe("cssRule.type", "1");
17
18     declaration = cssRule.style;
19     shouldBe("declaration.length", "1");
20     shouldBe("declaration.getPropertyValue('-webkit-scroll-snap-" + snapProperty + "')", "'" + expectedValue + "'");
21 }
22
23 testScrollSnapRule("inherited type", "type", "inherit", "inherit");
24 testScrollSnapRule("initial type", "type", "initial", "initial");
25
26 testScrollSnapRule("inherited points-x", "points-x", "inherit", "inherit");
27 testScrollSnapRule("initial points-x", "points-x", "initial", "initial");
28
29 testScrollSnapRule("inherited points-y", "points-y", "inherit", "inherit");
30 testScrollSnapRule("initial points-y", "points-y", "initial", "initial");
31
32 testScrollSnapRule("inherited destination", "destination", "inherit", "inherit");
33 testScrollSnapRule("initial destination", "destination", "initial", "initial");
34
35 testScrollSnapRule("inherited coordinate", "coordinate", "inherit", "inherit");
36 testScrollSnapRule("initial coordinate", "coordinate", "initial", "initial");
37
38 testScrollSnapRule("mandatory type", "type", "mandatory", "mandatory");
39 testScrollSnapRule("proximity type", "type", "proximity", "proximity");
40
41 testScrollSnapRule("element points along x axis", "points-x", "elements", "elements");
42 testScrollSnapRule("percentage points along x axis", "points-x", "100% 50%", "100% 50%");
43 testScrollSnapRule("pixel points along x axis", "points-x", "100px 50px", "100px 50px");
44 testScrollSnapRule("percentage points repeat along x axis", "points-x", "repeat(100%)", "repeat(100%)");
45 testScrollSnapRule("pixe points repeat along x axis", "points-x", "repeat(25px)", "repeat(25px)");
46 testScrollSnapRule("percentage points along x axis with percentage repeat", "points-x", "100% repeat(100%)", "100% repeat(100%)");
47 testScrollSnapRule("pixel points along x axis with percentage repeat", "points-x", "100px 50px repeat(25%)", "100px 50px repeat(25%)");
48 testScrollSnapRule("percentage points along x axis with pixel repeat", "points-x", "100% 50% repeat(40px)", "100% 50% repeat(40px)");
49 testScrollSnapRule("pixel points along x axis with pixel repeat", "points-x", "100px repeat(42px)", "100px repeat(42px)");
50
51 testScrollSnapRule("element points along y axis", "points-y", "elements", "elements");
52 testScrollSnapRule("percentage points along y axis", "points-y", "100% 50%", "100% 50%");
53 testScrollSnapRule("pixel points along y axis", "points-y", "100px 50px", "100px 50px");
54 testScrollSnapRule("percentage points repeat along y axis", "points-y", "repeat(100%)", "repeat(100%)");
55 testScrollSnapRule("pixe points repeat along y axis", "points-y", "repeat(25px)", "repeat(25px)");
56 testScrollSnapRule("percentage points along y axis with percentage repeat", "points-y", "100% repeat(100%)", "100% repeat(100%)");
57 testScrollSnapRule("pixel points along y axis with percentage repeat", "points-y", "100px 50px repeat(25%)", "100px 50px repeat(25%)");
58 testScrollSnapRule("percentage points along y axis with pixel repeat", "points-y", "100% 50% repeat(40px)", "100% 50% repeat(40px)");
59 testScrollSnapRule("pixel points along y axis with pixel repeat", "points-y", "100px repeat(42px)", "100px repeat(42px)");
60
61 testScrollSnapRule("em points along x axis with pixel repeat", "points-x", "100em repeat(42em)", "100em repeat(42em)");
62 testScrollSnapRule("mm along x axis with pixel repeat", "points-x", "100mm repeat(42mm)", "100mm repeat(42mm)");
63 testScrollSnapRule("in along x axis with pixel repeat", "points-x", "100in repeat(42in)", "100in repeat(42in)");
64 testScrollSnapRule("pt along x axis with pixel repeat", "points-x", "100pt repeat(42pt)", "100pt repeat(42pt)");
65
66 testScrollSnapRule("pixel/pixel destination", "destination", "10px 50px", "10px 50px");
67 testScrollSnapRule("pixel/percentage destination", "destination", "20px 40%", "20px 40%");
68 testScrollSnapRule("percentage/pixel destination", "destination", "0% 0px", "0% 0px");
69 testScrollSnapRule("percentage/percentage destination", "destination", "5% 100%", "5% 100%");
70
71 testScrollSnapRule("em/ex destination", "destination", "12em 16ex", "12em 16ex");
72 testScrollSnapRule("in/cm destination", "destination", "2in 5cm", "2in 5cm");
73
74 testScrollSnapRule("single pixel coordinate", "coordinate", "50px 100px", "50px 100px");
75 testScrollSnapRule("single percentage coordinate", "coordinate", "50% 100%", "50% 100%");
76 testScrollSnapRule("multiple pixel coordinates", "coordinate", "50px 100px 150px 100px 200px 100px", "50px 100px 150px 100px 200px 100px");
77 testScrollSnapRule("multiple percentage coordinates", "coordinate", "50% 100% 150% 100% 200% 100%", "50% 100% 150% 100% 200% 100%");
78
79 testScrollSnapRule("em/ex coordinate", "coordinate", "12em 16ex 16em 12ex", "12em 16ex 16em 12ex");
80 testScrollSnapRule("in/cm coordinate", "coordinate", "2in 5cm 5in 2cm", "2in 5cm 5in 2cm");
81
82 successfullyParsed = true;