| <!doctype html> |
| <meta charset="utf-8"> |
| <title>Inline StylePropertyMap.set() with shorthands</title> |
| <link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#set-a-value-on-a-stylepropertymap"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="../../resources/testhelper.js"></script> |
| <body> |
| <script> |
| 'use strict'; |
| |
| const gInvalidTestCases = [ |
| { property: 'margin', values: [CSS.deg(0)], desc: 'an invalid CSSStyleValue' }, |
| { property: 'margin', values: ['10s'], desc: 'an invalid String' }, |
| ]; |
| |
| for (const {property, values, desc} of gInvalidTestCases) { |
| test(t => { |
| let styleMap = createInlineStyleMap(t, ''); |
| assert_throws_js(TypeError, () => styleMap.set(property, ...values)); |
| }, 'Setting a shorthand with ' + desc + ' on inline style throws TypeError'); |
| } |
| |
| test(t => { |
| let [elem, styleMap] = createElementWithInlineStyleMap(t, 'margin: 1px 2px 3px 4px'); |
| |
| const result = styleMap.get('margin'); |
| elem.style.margin = ''; |
| styleMap.set('margin', result); |
| |
| assert_equals(elem.style.getPropertyValue('margin'), '1px 2px 3px 4px'); |
| assert_equals(elem.style.getPropertyValue('margin-top'), '1px'); |
| assert_equals(elem.style.getPropertyValue('margin-right'), '2px'); |
| assert_equals(elem.style.getPropertyValue('margin-bottom'), '3px'); |
| assert_equals(elem.style.getPropertyValue('margin-left'), '4px'); |
| }, 'Setting a shorthand with a CSSStyleValue updates inline style'); |
| |
| test(t => { |
| let [elem, styleMap] = createElementWithInlineStyleMap(t); |
| |
| styleMap.set('margin', '1px 2px 3px 4px'); |
| |
| assert_equals(elem.style.getPropertyValue('margin'), '1px 2px 3px 4px'); |
| assert_equals(elem.style.getPropertyValue('margin-top'), '1px'); |
| assert_equals(elem.style.getPropertyValue('margin-right'), '2px'); |
| assert_equals(elem.style.getPropertyValue('margin-bottom'), '3px'); |
| assert_equals(elem.style.getPropertyValue('margin-left'), '4px'); |
| }, 'Setting a shorthand with a string updates inline style'); |
| |
| </script> |