blob: 33e4758a067b713779f9cc7559d8b39954d26c16 [file] [log] [blame]
<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<div id="target" style="width: 100px; height: 200px; display: inline-block"></div>
<script src="resources/parsing-test-helper.js"></script>
<script>
expect = expect.bind(this, 'translate', 'translate');
expect('initial').parsesAs('initial').isComputedTo('0px');
expect('inherit').parsesAs('inherit');
expect('10px').parsesAs('10px').isComputedTo('10px');
expect('10px -2.5px').parsesAs('10px -2.5px').isComputedTo('10px -2.5px');
expect('10px -2.5px 0').parsesAs('10px -2.5px 0px').isComputedTo('10px -2.5px');
expect('42.5%').parsesAs('42.5%').isComputedTo('42.5px');
expect('42.5% -20.5%').parsesAs('42.5% -20.5%').isComputedTo('42.5px -41px');
expect('42.5% -20.5% 5px').parsesAs('42.5% -20.5% 5px').isComputedTo('42.5px -41px 5px');
expect('10px -2%').parsesAs('10px -2%').isComputedTo('10px -4px');
expect('10% -2px').parsesAs('10% -2px').isComputedTo('10px -2px');
expect('10% -2px 4px').parsesAs('10% -2px 4px').isComputedTo('10px -2px 4px');
expect('calc(100%) calc(20px) calc(-1px)').isComputedTo('100px 20px -1px');
expect('calc(100% + 10px) calc(100% - 10px) calc(100px + 200px)').parsesAs('calc(100% + 10px) calc(100% - 10px) calc(300px)').isComputedTo('110px 190px 300px');
expect('calc(100% * 0.5 + 2px) calc(100% - 10px / 2) calc(100px - 200px)').parsesAs('calc(50% + 2px) calc(100% - 5px) calc(-100px)').isComputedTo('52px 195px -100px');
expect('2').isInvalid();
expect('none').isInvalid();
expect('10deg 10px').isInvalid();
expect('10px 10px 10%').isInvalid();
expect('20smigens').isInvalid();
expect('10px 20px 5 6').isInvalid();
expect('10% 20% 30%').isInvalid();
expect('calc(100% + 10px) calc(100% - 10px) calc(100% + 200px)').isInvalid(); // Last parameter should not have percent
/* Test codepath where layout box is not available */
target.style.display = 'none';
expect('42.5%').parsesAs('42.5%').isComputedTo('42.5%');
expect('42.5% -20.5%').parsesAs('42.5% -20.5%').isComputedTo('42.5% -20.5%');
expect('42.5% -20.5% 5px').parsesAs('42.5% -20.5% 5px').isComputedTo('42.5% -20.5% 5px');
expect('calc(100%) calc(20px) calc(-1px)').isComputedTo('100% 20px -1px');
expect('calc(100% + 10px) calc(100% - 10px) calc(100px + 200px)').parsesAs('calc(100% + 10px) calc(100% - 10px) calc(300px)').isComputedTo('calc(10px + 100%) calc(-10px + 100%) 300px');
expect('calc(100% * 0.5 + 2px) calc(100% - 10px / 2) calc(100px - 200px)').parsesAs('calc(50% + 2px) calc(100% - 5px) calc(-100px)').isComputedTo('calc(2px + 50%) calc(-5px + 100%) -100px');
</script>