Index: third_party/WebKit/LayoutTests/typedcssom/simpleLength.html |
diff --git a/third_party/WebKit/LayoutTests/typedcssom/simpleLength.html b/third_party/WebKit/LayoutTests/typedcssom/simpleLength.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..01bf523d410952e58cf1e12d7d29c8bdf892f8fd |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/typedcssom/simpleLength.html |
@@ -0,0 +1,136 @@ |
+<!DOCTYPE html> |
+<script src='../resources/testharness.js'></script> |
+<script src='../resources/testharnessreport.js'></script> |
+ |
+<script> |
+ |
+test(function() { |
+ var simpleLength1 = new SimpleLength(5.1, 'px'); |
+ var simpleLength2 = new SimpleLength(10, 'px'); |
+ |
+ var result = simpleLength1.add(simpleLength2); |
+ |
+ assert_not_equals(simpleLength1, result); |
+ assert_not_equals(simpleLength2, result); |
+ assert_true(result instanceof SimpleLength); |
+ assert_equals(result.value, 15.1); |
+ assert_equals(result.type, 'px'); |
+}, 'Test that adding SimpleLengths with the same unit produces a new SimpleLength with the correct value.'); |
+ |
+test(function() { |
+ var simpleLength1 = new SimpleLength(5.1, 'px'); |
+ var simpleLength2 = new SimpleLength(10, 'percent'); |
+ |
+ var result = simpleLength1.add(simpleLength2); |
+ |
+ assert_true(result instanceof CalcLength); |
+ assert_equals(result.px, 5.1); |
+ assert_equals(result.percent, 10); |
+ |
+}, 'Test that adding SimpleLengths with different units produces a calc length with the correct values.'); |
+ |
+test(function() { |
+ var simpleLength1 = new SimpleLength(5.1, 'px'); |
+ var simpleLength2 = new SimpleLength(10, 'px'); |
+ |
+ var result = simpleLength1.subtract(simpleLength2); |
+ |
+ assert_not_equals(simpleLength1, result); |
+ assert_not_equals(simpleLength2, result); |
+ assert_true(result instanceof SimpleLength); |
+ assert_equals(result.value, -4.9); |
+ assert_equals(result.type, 'px'); |
+}, 'Test that subtracting SimpleLengths with the same unit produces a new SimpleLength with the correct value.'); |
+ |
+test(function() { |
+ var simpleLength1 = new SimpleLength(5.1, 'px'); |
+ var simpleLength2 = new SimpleLength(10, 'percent'); |
+ |
+ var result = simpleLength1.subtract(simpleLength2); |
+ |
+ assert_true(result instanceof CalcLength); |
+ assert_equals(result.px, 5.1); |
+ assert_equals(result.percent, -10); |
+ |
+}, 'Test that subtracting SimpleLengths with different units produces a calc length with the correct values.'); |
+ |
+test(function() { |
+ var simpleLength = new SimpleLength(5.2, 'px'); |
+ var result = simpleLength.multiply(4); |
+ |
+ assert_not_equals(simpleLength, result); |
+ assert_true(result instanceof SimpleLength); |
+ assert_approx_equals(result.value, 20.8, 0.00000001); |
+ assert_equals(result.type, 'px'); |
+}, 'Test that multiplying a SimpleLength produces a new SimpleLength with the correct value.'); |
+ |
+test(function() { |
+ var simpleLength = new SimpleLength(25, 'px'); |
+ var result = simpleLength.divide(2); |
+ |
+ assert_not_equals(simpleLength, result); |
+ assert_true(result instanceof SimpleLength); |
+ assert_equals(result.value, 12.5); |
+ assert_equals(result.type, 'px'); |
+}, 'Test that dividing a SimpleLength produces a new SimpleLength with the correct value.'); |
+ |
+test(function() { |
+ var values = [ |
+ {input: new SimpleLength(1, 'px'), cssString: '1px' }, |
+ {input: new SimpleLength(2, 'percent'), cssString: '2%' }, |
+ {input: new SimpleLength(3, '%'), cssString: '3%' }, |
+ {input: new SimpleLength(4, 'em'), cssString: '4em' }, |
+ {input: new SimpleLength(5, 'ex'), cssString: '5ex' }, |
+ {input: new SimpleLength(6, 'ch'), cssString: '6ch' }, |
+ {input: new SimpleLength(7, 'rem'), cssString: '7rem' }, |
+ {input: new SimpleLength(8, 'vw'), cssString: '8vw' }, |
+ {input: new SimpleLength(9, 'vh'), cssString: '9vh' }, |
+ {input: new SimpleLength(10, 'vmin'), cssString: '10vmin' }, |
+ {input: new SimpleLength(11, 'vmax'), cssString: '11vmax' }, |
+ {input: new SimpleLength(12, 'cm'), cssString: '12cm' }, |
+ {input: new SimpleLength(13, 'mm'), cssString: '13mm' }, |
+ {input: new SimpleLength(14, 'in'), cssString: '14in' }, |
+ {input: new SimpleLength(15, 'pc'), cssString: '15pc' }, |
+ {input: new SimpleLength(16, 'pt'), cssString: '16pt' }, |
+ // Same again to double check that it's case insensitive. |
+ {input: new SimpleLength(1, 'PX'), cssString: '1px' }, |
+ {input: new SimpleLength(2, 'PERCENT'), cssString: '2%' }, |
+ {input: new SimpleLength(3, '%'), cssString: '3%' }, |
+ {input: new SimpleLength(4, 'EM'), cssString: '4em' }, |
+ {input: new SimpleLength(5, 'EX'), cssString: '5ex' }, |
+ {input: new SimpleLength(6, 'CH'), cssString: '6ch' }, |
+ {input: new SimpleLength(7, 'REM'), cssString: '7rem' }, |
+ {input: new SimpleLength(8, 'VW'), cssString: '8vw' }, |
+ {input: new SimpleLength(9, 'VH'), cssString: '9vh' }, |
+ {input: new SimpleLength(10, 'VMIN'), cssString: '10vmin' }, |
+ {input: new SimpleLength(11, 'VMAX'), cssString: '11vmax' }, |
+ {input: new SimpleLength(12, 'CM'), cssString: '12cm' }, |
+ {input: new SimpleLength(13, 'MM'), cssString: '13mm' }, |
+ {input: new SimpleLength(14, 'IN'), cssString: '14in' }, |
+ {input: new SimpleLength(15, 'PC'), cssString: '15pc' }, |
+ {input: new SimpleLength(16, 'PT'), cssString: '16pt' }, |
+ ]; |
+ |
+ for (var i = 0; i < values.length; ++i) { |
+ assert_equals(values[i].input.cssString, values[i].cssString); |
+ } |
+}, 'Test that the SimpleLength css string is generated correctly for each unit type.'); |
+ |
+test(function() { |
+ var values = [ |
+ {value: NaN, unit: 'px'}, |
+ {value: Infinity, unit: 'px'}, |
+ {value: -Infinity, unit: 'px'}, |
+ {value: 5, unit: 'puppies'} |
+ ]; |
+ |
+ for (var i = 0; i < values.length; ++i) { |
+ assert_throws(null, function() { new SimpleLength(values[i].value, values[i].unit); }); |
+ } |
+ |
+}, 'Test that invalid input throws an exception.'); |
+ |
+</script> |
+ |
+<body> |
+</body> |