CSS: Parsing tests for logical margin and padding properties

Web Platform Tests for parsing and serialization of
margin-block-start, margin-block-end,
margin-inline-start, margin-inline-end,
padding-block-start, padding-block-end,
padding-inline-start, padding-inline-end.
https://drafts.csswg.org/css-logical/#margin-properties
https://drafts.csswg.org/css-logical/#padding-properties

Change-Id: I900cbc622d9d4ab233fe59d5a6ba7078e904878f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1650693
Auto-Submit: Eric Willigers <ericwilligers@chromium.org>
Commit-Queue: Rune Lillesveen <futhark@chromium.org>
Reviewed-by: Rune Lillesveen <futhark@chromium.org>
Cr-Commit-Position: refs/heads/master@{#667898}
diff --git a/css/css-logical/parsing/margin-block-inline-invalid.html b/css/css-logical/parsing/margin-block-inline-invalid.html
new file mode 100644
index 0000000..a1e0cbf
--- /dev/null
+++ b/css/css-logical/parsing/margin-block-inline-invalid.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Logical Properties and Values: parsing margin-block and margin-inline with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-logical/#propdef-margin-block">
+<meta name="assert" content="margin-block, margin-inline support only the grammar '<'margin-top'>{1,2}'.">
+<meta name="assert" content="margin-block, margin-inline longhands support only the grammar '<'margin-top'>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("margin-block-start", "none");
+test_invalid_value("margin-block-end", "10");
+test_invalid_value("margin-inline-start", "20% calc(10px - 0.5em)");
+test_invalid_value("margin-inline-end", "10px, auto");
+
+test_invalid_value("margin-block", "none");
+test_invalid_value("margin-block", "20%, calc(10px - 0.5em)");
+test_invalid_value("margin-inline", "10px auto 20px");
+</script>
+</body>
+</html>
diff --git a/css/css-logical/parsing/margin-block-inline-valid.html b/css/css-logical/parsing/margin-block-inline-valid.html
new file mode 100644
index 0000000..4a278f9
--- /dev/null
+++ b/css/css-logical/parsing/margin-block-inline-valid.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Logical Properties and Values: parsing margin-block and margin-inline with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-logical/#propdef-margin-block">
+<meta name="assert" content="margin-block, margin-inline support the full grammar '<'margin-top'>{1,2}'.">
+<meta name="assert" content="margin-block, margin-inline longhands support the full grammar '<'margin-top'>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("margin-block-start", "calc(20% + 10px)");
+test_valid_value("margin-block-start", "auto");
+test_valid_value("margin-block-end", "-10px");
+test_valid_value("margin-inline-start", "-20%");
+test_valid_value("margin-inline-end", "calc(2em + 3ex)");
+
+test_valid_value("margin-block", "auto");
+test_valid_value("margin-block", "-10px");
+test_valid_value("margin-block", "calc(2em + 3ex) -20%");
+test_valid_value("margin-block", "auto auto", "auto");
+test_valid_value("margin-block", "-20% calc(20% + 10px)");
+test_valid_value("margin-inline", "20%");
+test_valid_value("margin-inline", "calc(2em + 3ex)");
+test_valid_value("margin-inline", "-10px auto");
+test_valid_value("margin-inline", "auto calc(2em + 3ex)");
+</script>
+</body>
+</html>
diff --git a/css/css-logical/parsing/padding-block-inline-invalid.html b/css/css-logical/parsing/padding-block-inline-invalid.html
new file mode 100644
index 0000000..56c2adb
--- /dev/null
+++ b/css/css-logical/parsing/padding-block-inline-invalid.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Logical Properties and Values: parsing padding-block and padding-inline with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-logical/#propdef-padding-block">
+<meta name="assert" content="padding-block, padding-inline support only the grammar '<'padding-top'>{1,2}'.">
+<meta name="assert" content="padding-block, padding-inline longhands support only the grammar '<'padding-top'>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("padding-block-start", "none");
+test_invalid_value("padding-block-start", "-10px");
+test_invalid_value("padding-block-end", "1px 2px");
+test_invalid_value("padding-block-end", "auto");
+test_invalid_value("padding-block-end", "10");
+test_invalid_value("padding-block-end", "1px, 2px");
+test_invalid_value("padding-inline-start", "20% calc(10px - 0.5em)");
+test_invalid_value("padding-inline-start", "2px auto");
+test_invalid_value("padding-inline-end", "-20%");
+test_invalid_value("padding-inline-end", "10px, auto");
+
+test_invalid_value("padding-block", "none");
+test_invalid_value("padding-block", "20% -10px");
+test_invalid_value("padding-block", "auto, -10px");
+test_invalid_value("padding-block", "20%, calc(10px - 0.5em)");
+test_invalid_value("padding-inline", "10px auto 20px");
+test_invalid_value("padding-inline", "1px 2px 3px");
+test_invalid_value("padding-inline", "-20% calc(20% + 10px)");
+</script>
+</body>
+</html>
diff --git a/css/css-logical/parsing/padding-block-inline-valid.html b/css/css-logical/parsing/padding-block-inline-valid.html
new file mode 100644
index 0000000..1f3be17
--- /dev/null
+++ b/css/css-logical/parsing/padding-block-inline-valid.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Logical Properties and Values: parsing padding-block and padding-inline with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-logical/#propdef-padding-block">
+<meta name="assert" content="padding-block, padding-inline support the full grammar '<'padding-top'>{1,2}'.">
+<meta name="assert" content="padding-block, padding-inline longhands support the full grammar '<'padding-top'>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("padding-block-start", "0", "0px");
+test_valid_value("padding-block-start", "calc(20% + 10px)");
+test_valid_value("padding-block-end", "10px");
+test_valid_value("padding-inline-start", "20%");
+test_valid_value("padding-inline-end", "calc(2em + 2ex)");
+
+test_valid_value("padding-block", "10px");
+test_valid_value("padding-block", "10px 20%");
+test_valid_value("padding-inline", "20%");
+test_valid_value("padding-inline", "20% calc(20% + 10px)");
+</script>
+</body>
+</html>