| <!DOCTYPE html> |
| <html> |
| <body> |
| <script src="../../resources/js-test-pre.js"></script> |
| <div id="testDiv"></div> |
| <script> |
| description("Tests parsing of various valid and invalid calc expressions."); |
| |
| var testDiv = document.getElementById("testDiv"); |
| |
| function testExpression(expression, specifiedValue, computedValue) |
| { |
| debug(''); |
| testDiv.style["width"] = '999px'; |
| |
| evalAndLog(`testDiv.style["width"] = "${expression}"`); |
| shouldBeEqualToString("testDiv.style['width']", `${specifiedValue}`); |
| shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('width')", `${computedValue}`); |
| } |
| |
| // Valid expressions. |
| testExpression('calc(100px)', 'calc(100px)', '100px'); |
| testExpression('max(100px + 200px)', 'max(300px)', '300px'); |
| testExpression('max(100px , 200px)', 'max(200px)', '200px'); |
| testExpression('max(100px,200px)', 'max(200px)', '200px'); |
| testExpression('clamp(100px,123px,200px)', 'clamp(100px, 123px, 200px)', '123px'); |
| testExpression('clamp(100px,300px,200px)', 'clamp(100px, 300px, 200px)', '200px'); |
| testExpression('clamp(200px,300px,100px)', 'clamp(200px, 300px, 100px)', '200px'); |
| testExpression('clamp((50px + 50px),40px,200px)', 'clamp(100px, 40px, 200px)', '100px'); |
| testExpression('clamp(50px + 50px,40px,200px)', 'clamp(100px, 40px, 200px)', '100px'); |
| |
| // Non-parsing expression. |
| testExpression('calc(100px, 200px)', '999px', '999px'); |
| testExpression('calc(100px 200px)', '999px', '999px'); |
| |
| testExpression('calc(100px ( 200px)', '999px', '999px'); |
| |
| testExpression('min(100px 200px)', '999px', '999px'); |
| testExpression('max(100px 200px)', '999px', '999px'); |
| testExpression('max(100px,, 200px)', '999px', '999px'); |
| testExpression('max(100px, , 200px)', '999px', '999px'); |
| testExpression('max(100px, 200px,)', '999px', '999px'); |
| |
| testExpression('clamp(200px,300px)', '999px', '999px'); |
| testExpression('clamp(200px,300px,)', '999px', '999px'); |
| testExpression('clamp(200px,,300px)', '999px', '999px'); |
| testExpression('clamp((),,300px)', '999px', '999px'); |
| testExpression('clamp(1px,2px,2px,4px)', '999px', '999px'); |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |