| <!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> |