blob: c309128db1f9c5dea006746f51ce6f8889fdf1b9 [file] [log] [blame]
<!DOCTYPE html>
<script src='../resources/testharness.js'></script>
<script src='../resources/testharnessreport.js'></script>
<script>
test(function() {
assert_throws(null, function() { new CSSCalcLength(); });
assert_throws(null, function() { new CSSCalcLength({}); });
assert_throws(null, function() { new CSSCalcLength({foo: 1}); });
}, 'Test that passing invalid arguments to CSSCalcLength throws an exception.');
test(function() {
var calcLength1 = new CSSCalcLength({px: 1, percent: 2.2});
var calcLength2 = new CSSCalcLength({px: 3, percent: 4.3});
var result = calcLength1.add(calcLength2);
assert_not_equals(calcLength1, result);
assert_not_equals(calcLength2, result);
assert_true(result instanceof CSSCalcLength);
assert_equals(result.px, 4);
assert_equals(result.percent, 6.5);
}, 'Test that adding two CSSCalcLengths produces a new CSSCalcLength with the correct value.');
test(function() {
var calcLength1 = new CSSCalcLength({px: 1, percent: 2.2});
var calcLength2 = new CSSCalcLength({px: 3, percent: 4.3});
var result = calcLength1.subtract(calcLength2);
assert_not_equals(calcLength1, result);
assert_not_equals(calcLength2, result);
assert_true(result instanceof CSSCalcLength);
assert_equals(result.px, -2);
assert_approx_equals(result.percent, -2.1, 0.000001);
}, 'Test that subtracting two CSSCalcLengths produces a new CSSCalcLength with the correct values.');
test(function() {
var calcLength = new CSSCalcLength({px: 1, percent: 5.2});
var result = calcLength.multiply(3);
assert_not_equals(calcLength, result);
assert_equals(result.px, 3);
assert_approx_equals(result.percent, 15.6, 0.000001);
}, 'Test that multiplying a CSSCalcLength produces a new CSSCalcLength with the correct values.');
test(function() {
var calcLength = new CSSCalcLength({px: 3, percent: 15.6});
var result = calcLength.divide(3);
assert_not_equals(calcLength, result);
assert_equals(result.px, 1);
assert_equals(result.percent, 5.2);
}, 'Test that dividing a CSSCalcLength produces a new CSSCalcLength with the correct values.');
test(function() {
var values = [
{input: new CSSCalcLength({px: 1}), cssText: 'calc(1px)'},
{input: new CSSCalcLength({px: -1}), cssText: 'calc(-1px)'},
{input: new CSSCalcLength({px: 1, percent: 15.6}), cssText: 'calc(15.6% + 1px)'},
{input: new CSSCalcLength({px: 1, percent: -15.6}), cssText: 'calc(-15.6% + 1px)'},
{input: new CSSCalcLength({px: -1, percent: -15.6}), cssText: 'calc(-15.6% - 1px)'},
{input: new CSSCalcLength({px: -1, percent: -15.6, vw: 5}), cssText: 'calc((-15.6% - 1px) + 5vw)'},
{input: new CSSCalcLength({px: -1, percent: -15.6, vw: -5}), cssText: 'calc((-15.6% - 1px) - 5vw)'},
];
for (var i = 0; i < values.length; ++i) {
assert_equals(values[i].input.cssText, values[i].cssText);
}
}, 'Test that the CSS string method for a CSSCalcLength produces the correct result');
</script>
<body>
</body>