Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: third_party/WebKit/LayoutTests/typedcssom/cssSimpleLength.html

Issue 2867883003: [CSS Typed OM] Delete obsolete number and length classes from Typed OM (Closed)
Patch Set: rebase Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <script src='../resources/testharness.js'></script>
3 <script src='../resources/testharnessreport.js'></script>
4
5 <script>
6
7 test(function() {
8 var simpleLength = new CSSSimpleLength(1, 'px');
9 assert_equals(simpleLength.value, 1);
10 assert_equals(simpleLength.type, 'px');
11
12 simpleLength.value = 2;
13 simpleLength.type = 'em';
14
15 assert_equals(simpleLength.value, 1);
16 assert_equals(simpleLength.type, 'px');
17 }, 'CSSSimpleLengths are immutable');
18
19 test(function() {
20 var units = ['px', 'percent', 'em', 'ex', 'ch', 'rem', 'vw', 'vh', 'vmin', 'vm ax', 'cm', 'mm', 'in', 'pc', 'pt'];
21 for (var i = 0; i < units.length; ++i) {
22 var simpleLength = new CSSSimpleLength(i, units[i]);
23 assert_equals(simpleLength.type, units[i]);
24 }
25 }, 'Each unit type is returned according to the spec');
26
27 test(function() {
28 var simpleLength1 = new CSSSimpleLength(5.1, 'px');
29 var simpleLength2 = new CSSSimpleLength(10, 'px');
30
31 var result = simpleLength1.add(simpleLength2);
32
33 assert_not_equals(simpleLength1, result);
34 assert_not_equals(simpleLength2, result);
35 assert_equals(result.constructor.name, CSSSimpleLength.name);
36 assert_equals(result.value, 15.1);
37 assert_equals(result.type, 'px');
38 }, 'Adding CSSSimpleLengths with the same unit produces a new CSSSimpleLength wi th the correct value.');
39
40 test(function() {
41 var simpleLength1 = new CSSSimpleLength(5.1, 'px');
42 var simpleLength2 = new CSSSimpleLength(10, 'percent');
43
44 var result = simpleLength1.add(simpleLength2);
45
46 assert_equals(result.constructor.name, CSSCalcLength.name);
47 assert_equals(result.px, 5.1);
48 assert_equals(result.percent, 10);
49 }, 'Adding CSSSimpleLengths with different units produces a calc length with the correct values.');
50
51 test(function() {
52 var simpleLength1 = new CSSSimpleLength(5.1, 'px');
53 var simpleLength2 = new CSSSimpleLength(10, 'px');
54
55 var result = simpleLength1.subtract(simpleLength2);
56
57 assert_not_equals(simpleLength1, result);
58 assert_not_equals(simpleLength2, result);
59 assert_equals(result.constructor.name, CSSSimpleLength.name);
60 assert_equals(result.value, -4.9);
61 assert_equals(result.type, 'px');
62 }, 'Subtracting CSSSimpleLengths with the same unit produces a new CSSSimpleLeng th with the correct value.');
63
64 test(function() {
65 var simpleLength1 = new CSSSimpleLength(5.1, 'px');
66 var simpleLength2 = new CSSSimpleLength(10, 'percent');
67
68 var result = simpleLength1.subtract(simpleLength2);
69
70 assert_equals(result.constructor.name, CSSCalcLength.name);
71 assert_equals(result.px, 5.1);
72 assert_equals(result.percent, -10);
73 }, 'Subtracting CSSSimpleLengths with different units produces a calc length wit h the correct values.');
74
75 test(function() {
76 var simpleLength = new CSSSimpleLength(5.2, 'px');
77 var result = simpleLength.multiply(4);
78
79 assert_not_equals(simpleLength, result);
80 assert_equals(result.constructor.name, CSSSimpleLength.name);
81 assert_approx_equals(result.value, 20.8, 0.00000001);
82 assert_equals(result.type, 'px');
83 }, 'Multiplying a CSSSimpleLength produces a new CSSSimpleLength with the correc t value.');
84
85 test(function() {
86 var simpleLength = new CSSSimpleLength(25, 'px');
87 var result = simpleLength.divide(2);
88
89 assert_not_equals(simpleLength, result);
90 assert_equals(result.constructor.name, CSSSimpleLength.name);
91 assert_equals(result.value, 12.5);
92 assert_equals(result.type, 'px');
93 }, 'Dividing a CSSSimpleLength produces a new CSSSimpleLength with the correct v alue.');
94
95 test(function() {
96 var simpleLength = new CSSSimpleLength(1, 'px');
97 assert_throws(new RangeError(), function() { simpleLength.divide(0); });
98 }, 'Dividing by zero throws a RangeError');
99
100 test(function() {
101 var values = [
102 {input: new CSSSimpleLength(1, 'px'), cssText: '1px' },
103 {input: new CSSSimpleLength(2, 'percent'), cssText: '2%' },
104 {input: new CSSSimpleLength(3, '%'), cssText: '3%' },
105 {input: new CSSSimpleLength(4, 'em'), cssText: '4em' },
106 {input: new CSSSimpleLength(5, 'ex'), cssText: '5ex' },
107 {input: new CSSSimpleLength(6, 'ch'), cssText: '6ch' },
108 {input: new CSSSimpleLength(7, 'rem'), cssText: '7rem' },
109 {input: new CSSSimpleLength(8, 'vw'), cssText: '8vw' },
110 {input: new CSSSimpleLength(9, 'vh'), cssText: '9vh' },
111 {input: new CSSSimpleLength(10, 'vmin'), cssText: '10vmin' },
112 {input: new CSSSimpleLength(11, 'vmax'), cssText: '11vmax' },
113 {input: new CSSSimpleLength(12, 'cm'), cssText: '12cm' },
114 {input: new CSSSimpleLength(13, 'mm'), cssText: '13mm' },
115 {input: new CSSSimpleLength(14, 'in'), cssText: '14in' },
116 {input: new CSSSimpleLength(15, 'pc'), cssText: '15pc' },
117 {input: new CSSSimpleLength(16, 'pt'), cssText: '16pt' },
118 // Same again to double check that it's case insensitive.
119 {input: new CSSSimpleLength(1, 'PX'), cssText: '1px' },
120 {input: new CSSSimpleLength(2, 'PERCENT'), cssText: '2%' },
121 {input: new CSSSimpleLength(3, '%'), cssText: '3%' },
122 {input: new CSSSimpleLength(4, 'EM'), cssText: '4em' },
123 {input: new CSSSimpleLength(5, 'EX'), cssText: '5ex' },
124 {input: new CSSSimpleLength(6, 'CH'), cssText: '6ch' },
125 {input: new CSSSimpleLength(7, 'REM'), cssText: '7rem' },
126 {input: new CSSSimpleLength(8, 'VW'), cssText: '8vw' },
127 {input: new CSSSimpleLength(9, 'VH'), cssText: '9vh' },
128 {input: new CSSSimpleLength(10, 'VMIN'), cssText: '10vmin' },
129 {input: new CSSSimpleLength(11, 'VMAX'), cssText: '11vmax' },
130 {input: new CSSSimpleLength(12, 'CM'), cssText: '12cm' },
131 {input: new CSSSimpleLength(13, 'MM'), cssText: '13mm' },
132 {input: new CSSSimpleLength(14, 'IN'), cssText: '14in' },
133 {input: new CSSSimpleLength(15, 'PC'), cssText: '15pc' },
134 {input: new CSSSimpleLength(16, 'PT'), cssText: '16pt' },
135 ];
136
137 for (var i = 0; i < values.length; ++i) {
138 assert_equals(values[i].input.cssText, values[i].cssText);
139 }
140 }, 'cssText is generated correctly for each unit type.');
141
142 test(function() {
143 var values = [
144 {value: NaN, unit: 'px'},
145 {value: Infinity, unit: 'px'},
146 {value: -Infinity, unit: 'px'},
147 {value: 5, unit: 'puppies'}
148 ];
149
150 for (var i = 0; i < values.length; ++i) {
151 assert_throws(null, function() { new CSSSimpleLength(values[i].value, values [i].unit); });
152 }
153 }, 'Invalid input throws an exception.');
154
155 </script>
156
157 <body>
158 </body>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698