| <!doctype html> |
| <meta charset="utf-8"> |
| <title>Numeric normalization tests</title> |
| <link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#normalize-numeric"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="../resources/testhelper.js"></script> |
| <body> |
| <script> |
| 'use strict'; |
| |
| function test_numeric_normalization(test, property, cssText, expected) { |
| assert_style_value_equals(CSSNumericValue.parse(cssText), expected); |
| assert_style_value_equals(CSSStyleValue.parse(property, cssText), expected); |
| assert_style_value_equals( |
| createInlineStyleMap(test, property + ': ' + cssText).get(property), |
| expected); |
| } |
| |
| test(t => { |
| test_numeric_normalization(t, 'line-height', '3.14', CSS.number(3.14)); |
| }, 'Normalizing a <number> returns a number CSSUnitValue'); |
| |
| test(t => { |
| test_numeric_normalization(t, 'width', '3.14%', CSS.percent(3.14)); |
| }, 'Normalizing a <percentage> returns a percent CSSUnitValue'); |
| |
| test(t => { |
| test_numeric_normalization(t, 'width', '3.14px', CSS.px(3.14)); |
| }, 'Normalizing a <dimension> returns a CSSUnitValue with the correct unit'); |
| |
| test(t => { |
| test_numeric_normalization(t, 'opacity', '0', CSS.number(0)); |
| }, 'Normalizing a <number> with a unitless zero returns 0'); |
| |
| test(t => { |
| test_numeric_normalization(t, 'width', |
| 'calc(1px + calc(1px) + calc(1px * 2) + 1%)', |
| new CSSMathSum(CSS.px(4), CSS.percent(1))); |
| }, 'Normalizing a <calc> returns simplified expression'); |
| |
| test(t => { |
| assert_style_value_equals(CSSStyleValue.parse('width', '0px'), CSS.px(0)); |
| assert_style_value_equals( |
| createInlineStyleMap(t, 'width: 0').get('width'), |
| CSS.px(0)); |
| }, 'Normalizing a <dimension> with a unitless zero returns 0px'); |
| |
| </script> |