Bug 1559796 - Should not serialize default radius of circle r=emilio
authorviolet <violet.bugreport@gmail.com>
Tue, 18 Jun 2019 11:54:41 +0000
changeset 479108 fd71acfc25a51d8095b285db3d30e13a6e4d1e2c
parent 479107 670fc9ac11b7a7a818d31288fd7c1654122db426
child 479109 2af46ed2e59b9aab02bda25eebd5c610ef373e02
push id36168
push usercsabou@mozilla.com
push dateTue, 18 Jun 2019 15:56:50 +0000
treeherdermozilla-central@2af46ed2e59b [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersemilio
bugs1559796
milestone69.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1559796 - Should not serialize default radius of circle r=emilio Should not serialize default shape-outside circle() function radius. The ToCss impl of Circle and Ellipse turn out to be identical in specified and computed value, thus move them to generics. Differential Revision: https://phabricator.services.mozilla.com/D35183
layout/style/test/test_transitions_per_property.html
servo/components/style/values/computed/basic_shape.rs
servo/components/style/values/generics/basic_shape.rs
servo/components/style/values/specified/basic_shape.rs
testing/web-platform/meta/css/css-shapes/parsing/shape-outside-computed.html.ini
testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-000.html.ini
testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-001.html.ini
testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-002.html.ini
testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-004.html.ini
testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-009.html.ini
testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-011.html.ini
--- a/layout/style/test/test_transitions_per_property.html
+++ b/layout/style/test/test_transitions_per_property.html
@@ -847,17 +847,17 @@ const basicShapesTests = [
     expected: ["circle", ["50px at 50% 50%"]] },
   { start: "circle(closest-side)", end: "circle(500px)",
     expected: ["circle", ["500px at 50% 50%"]] },
   { start: "circle(farthest-side)", end: "circle(500px)",
     expected: ["circle", ["500px at 50% 50%"]] },
   { start: "circle(500px)", end: "circle(farthest-side)",
     expected: ["circle", ["farthest-side at 50% 50%"]]},
   { start: "circle(500px)", end: "circle(closest-side)",
-    expected: ["circle", ["closest-side at 50% 50%"]]},
+    expected: ["circle", ["at 50% 50%"]]},
   { start: "ellipse()", end: "ellipse(50px 50px)",
     expected: ["ellipse", ["50px 50px at 50% 50%"]] },
   { start: "ellipse(closest-side closest-side)", end: "ellipse(500px 500px)",
     expected: ["ellipse", ["500px 500px at 50% 50%"]] },
   { start: "ellipse(farthest-side closest-side)", end: "ellipse(500px 500px)",
     expected: ["ellipse", ["500px 500px at 50% 50%"]] },
   { start: "ellipse(farthest-side farthest-side)", end: "ellipse(500px 500px)",
     expected: ["ellipse", ["500px 500px at 50% 50%"]] },
--- a/servo/components/style/values/computed/basic_shape.rs
+++ b/servo/components/style/values/computed/basic_shape.rs
@@ -5,18 +5,16 @@
 //! CSS handling for the computed value of
 //! [`basic-shape`][basic-shape]s
 //!
 //! [basic-shape]: https://drafts.csswg.org/css-shapes/#typedef-basic-shape
 
 use crate::values::computed::url::ComputedUrl;
 use crate::values::computed::{Image, LengthPercentage, NonNegativeLengthPercentage};
 use crate::values::generics::basic_shape as generic;
-use std::fmt::{self, Write};
-use style_traits::{CssWriter, ToCss};
 
 /// A computed alias for FillRule.
 pub use crate::values::generics::basic_shape::FillRule;
 
 /// A computed clipping shape.
 pub type ClippingShape = generic::ClippingShape<BasicShape, ComputedUrl>;
 
 /// A computed float area shape.
@@ -37,39 +35,8 @@ pub type InsetRect = generic::InsetRect<
 pub type Circle = generic::Circle<LengthPercentage, LengthPercentage, NonNegativeLengthPercentage>;
 
 /// A computed ellipse.
 pub type Ellipse =
     generic::Ellipse<LengthPercentage, LengthPercentage, NonNegativeLengthPercentage>;
 
 /// The computed value of `ShapeRadius`
 pub type ShapeRadius = generic::GenericShapeRadius<NonNegativeLengthPercentage>;
-
-impl ToCss for Circle {
-    fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
-    where
-        W: Write,
-    {
-        dest.write_str("circle(")?;
-        self.radius.to_css(dest)?;
-        dest.write_str(" at ")?;
-        self.position.to_css(dest)?;
-        dest.write_str(")")
-    }
-}
-
-impl ToCss for Ellipse {
-    fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
-    where
-        W: Write,
-    {
-        dest.write_str("ellipse(")?;
-        if (self.semiaxis_x, self.semiaxis_y) != Default::default() {
-            self.semiaxis_x.to_css(dest)?;
-            dest.write_str(" ")?;
-            self.semiaxis_y.to_css(dest)?;
-            dest.write_str(" ")?;
-        }
-        dest.write_str("at ")?;
-        self.position.to_css(dest)?;
-        dest.write_str(")")
-    }
-}
--- a/servo/components/style/values/generics/basic_shape.rs
+++ b/servo/components/style/values/generics/basic_shape.rs
@@ -373,16 +373,58 @@ where
         if !self.round.is_zero() {
             dest.write_str(" round ")?;
             self.round.to_css(dest)?;
         }
         dest.write_str(")")
     }
 }
 
+impl<H, V, NonNegativeLengthPercentage> ToCss for Circle<H, V, NonNegativeLengthPercentage>
+where
+    GenericPosition<H, V>: ToCss,
+    NonNegativeLengthPercentage: ToCss + PartialEq,
+{
+    fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
+    where
+        W: Write,
+    {
+        dest.write_str("circle(")?;
+        if self.radius != Default::default() {
+            self.radius.to_css(dest)?;
+            dest.write_str(" ")?;
+        }
+        dest.write_str("at ")?;
+        self.position.to_css(dest)?;
+        dest.write_str(")")
+    }
+}
+
+impl<H, V, NonNegativeLengthPercentage> ToCss for Ellipse<H, V, NonNegativeLengthPercentage>
+where
+    GenericPosition<H, V>: ToCss,
+    NonNegativeLengthPercentage: ToCss + PartialEq,
+{
+    fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
+    where
+        W: Write,
+    {
+        dest.write_str("ellipse(")?;
+        if self.semiaxis_x != Default::default() || self.semiaxis_y != Default::default() {
+            self.semiaxis_x.to_css(dest)?;
+            dest.write_str(" ")?;
+            self.semiaxis_y.to_css(dest)?;
+            dest.write_str(" ")?;
+        }
+        dest.write_str("at ")?;
+        self.position.to_css(dest)?;
+        dest.write_str(")")
+    }
+}
+
 impl<L> Default for ShapeRadius<L> {
     #[inline]
     fn default() -> Self {
         ShapeRadius::ClosestSide
     }
 }
 
 impl<L> Animate for Polygon<L>
--- a/servo/components/style/values/specified/basic_shape.rs
+++ b/servo/components/style/values/specified/basic_shape.rs
@@ -15,18 +15,17 @@ use crate::values::generics::rect::Rect;
 use crate::values::specified::border::BorderRadius;
 use crate::values::specified::image::Image;
 use crate::values::specified::position::{HorizontalPosition, Position, VerticalPosition};
 use crate::values::specified::url::SpecifiedUrl;
 use crate::values::specified::SVGPathData;
 use crate::values::specified::{LengthPercentage, NonNegativeLengthPercentage};
 use crate::Zero;
 use cssparser::Parser;
-use std::fmt::{self, Write};
-use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss};
+use style_traits::{ParseError, StyleParseErrorKind};
 
 /// A specified alias for FillRule.
 pub use crate::values::generics::basic_shape::FillRule;
 
 /// A specified clipping shape.
 pub type ClippingShape = generic::ClippingShape<BasicShape, SpecifiedUrl>;
 
 /// A specified float area shape.
@@ -234,33 +233,16 @@ impl Circle {
         } else {
             Position::center()
         };
 
         Ok(generic::Circle { radius, position })
     }
 }
 
-impl ToCss for Circle {
-    fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
-    where
-        W: Write,
-    {
-        dest.write_str("circle(")?;
-        if generic::ShapeRadius::ClosestSide != self.radius {
-            self.radius.to_css(dest)?;
-            dest.write_str(" ")?;
-        }
-
-        dest.write_str("at ")?;
-        self.position.to_css(dest)?;
-        dest.write_str(")")
-    }
-}
-
 impl Parse for Ellipse {
     fn parse<'i, 't>(
         context: &ParserContext,
         input: &mut Parser<'i, 't>,
     ) -> Result<Self, ParseError<'i>> {
         input.expect_function_matching("ellipse")?;
         input.parse_nested_block(|i| Self::parse_function_arguments(context, i))
     }
@@ -288,35 +270,16 @@ impl Ellipse {
         Ok(generic::Ellipse {
             semiaxis_x: a,
             semiaxis_y: b,
             position: position,
         })
     }
 }
 
-impl ToCss for Ellipse {
-    fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
-    where
-        W: Write,
-    {
-        dest.write_str("ellipse(")?;
-        if self.semiaxis_x != ShapeRadius::default() || self.semiaxis_y != ShapeRadius::default() {
-            self.semiaxis_x.to_css(dest)?;
-            dest.write_str(" ")?;
-            self.semiaxis_y.to_css(dest)?;
-            dest.write_str(" ")?;
-        }
-
-        dest.write_str("at ")?;
-        self.position.to_css(dest)?;
-        dest.write_str(")")
-    }
-}
-
 impl Parse for ShapeRadius {
     fn parse<'i, 't>(
         context: &ParserContext,
         input: &mut Parser<'i, 't>,
     ) -> Result<Self, ParseError<'i>> {
         if let Ok(lp) = input.try(|i| NonNegativeLengthPercentage::parse(context, i)) {
             return Ok(generic::ShapeRadius::Length(lp));
         }
deleted file mode 100644
--- a/testing/web-platform/meta/css/css-shapes/parsing/shape-outside-computed.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[shape-outside-computed.html]
-  [Property shape-outside value 'circle(at 10% 20%)' computes to 'circle(at 10% 20%)']
-    expected: FAIL
-
--- a/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-000.html.ini
+++ b/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-000.html.ini
@@ -1,13 +1,7 @@
 [shape-outside-circle-000.html]
-  [No arguments - computed]
-    expected: FAIL
-
-  [Position argument only - computed]
-    expected: FAIL
-
   [No arguments - inline]
     expected: FAIL
 
   [Radial argument only - inline]
     expected: FAIL
 
--- a/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-001.html.ini
+++ b/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-001.html.ini
@@ -1,15 +1,9 @@
 [shape-outside-circle-001.html]
-  [circle() - computed]
-    expected: FAIL
-
-  [circle(closest-side) - computed]
-    expected: FAIL
-
   [circle() - inline]
     expected: FAIL
 
   [circle(50px) - inline]
     expected: FAIL
 
   [circle(50%) - inline]
     expected: FAIL
--- a/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-002.html.ini
+++ b/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-002.html.ini
@@ -1,192 +1,24 @@
 [shape-outside-circle-002.html]
-  [circle(at 50%) serializes as circle(at 50% 50%) - computed]
-    expected: FAIL
-
-  [circle(at 50px) serializes as circle(at 50px 50%) - computed]
-    expected: FAIL
-
-  [circle(at 50% 50%) serializes as circle(at 50% 50%) - computed]
-    expected: FAIL
-
-  [circle(at 50% 50px) serializes as circle(at 50% 50px) - computed]
-    expected: FAIL
-
-  [circle(at 50px 50%) serializes as circle(at 50px 50%) - computed]
-    expected: FAIL
-
-  [circle(at 50px 50px) serializes as circle(at 50px 50px) - computed]
-    expected: FAIL
-
-  [circle(at left) serializes as circle(at 0% 50%) - computed]
-    expected: FAIL
-
-  [circle(at top) serializes as circle(at 50% 0%) - computed]
-    expected: FAIL
-
-  [circle(at right) serializes as circle(at 100% 50%) - computed]
-    expected: FAIL
-
-  [circle(at bottom) serializes as circle(at 50% 100%) - computed]
-    expected: FAIL
-
-  [circle(at center) serializes as circle(at 50% 50%) - computed]
-    expected: FAIL
-
-  [circle(at left top) serializes as circle(at 0% 0%) - computed]
-    expected: FAIL
-
-  [circle(at left bottom) serializes as circle(at 0% 100%) - computed]
-    expected: FAIL
-
-  [circle(at left center) serializes as circle(at 0% 50%) - computed]
-    expected: FAIL
-
-  [circle(at top left) serializes as circle(at 0% 0%) - computed]
-    expected: FAIL
-
-  [circle(at top right) serializes as circle(at 100% 0%) - computed]
-    expected: FAIL
-
-  [circle(at top center) serializes as circle(at 50% 0%) - computed]
-    expected: FAIL
-
-  [circle(at right top) serializes as circle(at 100% 0%) - computed]
-    expected: FAIL
-
-  [circle(at right bottom) serializes as circle(at 100% 100%) - computed]
-    expected: FAIL
-
-  [circle(at right center) serializes as circle(at 100% 50%) - computed]
-    expected: FAIL
-
-  [circle(at bottom left) serializes as circle(at 0% 100%) - computed]
-    expected: FAIL
-
-  [circle(at bottom right) serializes as circle(at 100% 100%) - computed]
-    expected: FAIL
-
-  [circle(at bottom center) serializes as circle(at 50% 100%) - computed]
-    expected: FAIL
-
-  [circle(at center top) serializes as circle(at 50% 0%) - computed]
-    expected: FAIL
-
-  [circle(at center left) serializes as circle(at 0% 50%) - computed]
-    expected: FAIL
-
-  [circle(at center right) serializes as circle(at 100% 50%) - computed]
-    expected: FAIL
-
-  [circle(at center bottom) serializes as circle(at 50% 100%) - computed]
-    expected: FAIL
-
-  [circle(at center center) serializes as circle(at 50% 50%) - computed]
-    expected: FAIL
-
-  [circle(at left 50%) serializes as circle(at 0% 50%) - computed]
-    expected: FAIL
-
-  [circle(at left 50px) serializes as circle(at 0% 50px) - computed]
-    expected: FAIL
-
-  [circle(at 50% top) serializes as circle(at 50% 0%) - computed]
-    expected: FAIL
-
-  [circle(at 50px top) serializes as circle(at 50px 0%) - computed]
-    expected: FAIL
-
-  [circle(at right 80%) serializes as circle(at 100% 80%) - computed]
-    expected: FAIL
-
-  [circle(at right 80px) serializes as circle(at 100% 80px) - computed]
-    expected: FAIL
-
-  [circle(at 70% bottom) serializes as circle(at 70% 100%) - computed]
-    expected: FAIL
-
-  [circle(at 70px bottom) serializes as circle(at 70px 100%) - computed]
-    expected: FAIL
-
-  [circle(at center 60%) serializes as circle(at 50% 60%) - computed]
-    expected: FAIL
-
-  [circle(at center 60px) serializes as circle(at 50% 60px) - computed]
-    expected: FAIL
-
-  [circle(at 60% center) serializes as circle(at 60% 50%) - computed]
-    expected: FAIL
-
-  [circle(at 60px center) serializes as circle(at 60px 50%) - computed]
-    expected: FAIL
-
-  [circle(at center top 50%) serializes as circle(at 50% 50%) - computed]
-    expected: FAIL
-
-  [circle(at center top 50px) serializes as circle(at 50% 50px) - computed]
-    expected: FAIL
-
-  [circle(at center left 50%) serializes as circle(at 50% 50%) - computed]
-    expected: FAIL
-
-  [circle(at center left 50px) serializes as circle(at 50px 50%) - computed]
-    expected: FAIL
-
-  [circle(at center right 70%) serializes as circle(at 30% 50%) - computed]
-    expected: FAIL
-
   [circle(at center right 70px) serializes as circle(at right 70px top 50%) - computed]
     expected: FAIL
 
-  [circle(at center bottom 70%) serializes as circle(at 50% 30%) - computed]
-    expected: FAIL
-
   [circle(at center bottom 70px) serializes as circle(at left 50% bottom 70px) - computed]
     expected: FAIL
 
-  [circle(at left top 50%) serializes as circle(at 0% 50%) - computed]
-    expected: FAIL
-
-  [circle(at left top 50px) serializes as circle(at 0% 50px) - computed]
-    expected: FAIL
-
-  [circle(at left bottom 70%) serializes as circle(at 0% 30%) - computed]
-    expected: FAIL
-
   [circle(at left bottom 70px) serializes as circle(at left 0% bottom 70px) - computed]
     expected: FAIL
 
-  [circle(at top left 50%) serializes as circle(at 50% 0%) - computed]
-    expected: FAIL
-
-  [circle(at top left 50px) serializes as circle(at 50px 0%) - computed]
-    expected: FAIL
-
-  [circle(at top right 70%) serializes as circle(at 30% 0%) - computed]
-    expected: FAIL
-
   [circle(at top right 70px) serializes as circle(at right 70px top 0%) - computed]
     expected: FAIL
 
-  [circle(at bottom left 50%) serializes as circle(at 50% 100%) - computed]
-    expected: FAIL
-
-  [circle(at bottom left 50px) serializes as circle(at 50px 100%) - computed]
-    expected: FAIL
-
-  [circle(at bottom right 70%) serializes as circle(at 30% 100%) - computed]
-    expected: FAIL
-
   [circle(at bottom right 70px) serializes as circle(at right 70px top 100%) - computed]
     expected: FAIL
 
-  [circle(at right bottom 70%) serializes as circle(at 100% 30%) - computed]
-    expected: FAIL
-
   [circle(at right bottom 70px) serializes as circle(at left 100% bottom 70px) - computed]
     expected: FAIL
 
   [circle(at right top 50%) serializes as circle(at 100% 50%) - computed]
     expected: FAIL
 
   [circle(at right top 50px) serializes as circle(at 100% 50px) - computed]
     expected: FAIL
@@ -258,97 +90,43 @@
     expected: FAIL
 
   [circle(at right 80% top) serializes as circle(at 20% 0%) - computed]
     expected: FAIL
 
   [circle(at right 80px top) serializes as circle(at right 80px top 0%) - computed]
     expected: FAIL
 
-  [circle(at left 50% top 50%) serializes as circle(at 50% 50%) - computed]
-    expected: FAIL
-
-  [circle(at left 50% top 50px) serializes as circle(at 50% 50px) - computed]
-    expected: FAIL
-
-  [circle(at left 50% bottom 70%) serializes as circle(at 50% 30%) - computed]
-    expected: FAIL
-
   [circle(at left 50% bottom 70px) serializes as circle(at left 50% bottom 70px) - computed]
     expected: FAIL
 
-  [circle(at left 50px top 50%) serializes as circle(at 50px 50%) - computed]
-    expected: FAIL
-
-  [circle(at left 50px top 50px) serializes as circle(at 50px 50px) - computed]
-    expected: FAIL
-
-  [circle(at left 50px bottom 70%) serializes as circle(at 50px 30%) - computed]
-    expected: FAIL
-
   [circle(at left 50px bottom 70px) serializes as circle(at left 50px bottom 70px) - computed]
     expected: FAIL
 
-  [circle(at top 50% left 50%) serializes as circle(at 50% 50%) - computed]
-    expected: FAIL
-
-  [circle(at top 50% left 50px) serializes as circle(at 50px 50%) - computed]
-    expected: FAIL
-
-  [circle(at top 50% right 80%) serializes as circle(at 20% 50%) - computed]
-    expected: FAIL
-
   [circle(at top 50% right 80px) serializes as circle(at right 80px top 50%) - computed]
     expected: FAIL
 
-  [circle(at top 50px left 50%) serializes as circle(at 50% 50px) - computed]
-    expected: FAIL
-
-  [circle(at top 50px left 50px) serializes as circle(at 50px 50px) - computed]
-    expected: FAIL
-
-  [circle(at top 50px right 80%) serializes as circle(at 20% 50px) - computed]
-    expected: FAIL
-
   [circle(at top 50px right 80px) serializes as circle(at right 80px top 50px) - computed]
     expected: FAIL
 
-  [circle(at bottom 70% left 50%) serializes as circle(at 50% 30%) - computed]
-    expected: FAIL
-
-  [circle(at bottom 70% left 50px) serializes as circle(at 50px 30%) - computed]
-    expected: FAIL
-
-  [circle(at bottom 70% right 80%) serializes as circle(at 20% 30%) - computed]
-    expected: FAIL
-
   [circle(at bottom 70% right 80px) serializes as circle(at right 80px top 30%) - computed]
     expected: FAIL
 
   [circle(at bottom 70px left 50%) serializes as circle(at left 50% bottom 70px) - computed]
     expected: FAIL
 
   [circle(at bottom 70px left 50px) serializes as circle(at left 50px bottom 70px) - computed]
     expected: FAIL
 
   [circle(at bottom 70px right 80%) serializes as circle(at left 20% bottom 70px) - computed]
     expected: FAIL
 
   [circle(at bottom 70px right 80px) serializes as circle(at right 80px bottom 70px) - computed]
     expected: FAIL
 
-  [circle(at right 80% top 50%) serializes as circle(at 20% 50%) - computed]
-    expected: FAIL
-
-  [circle(at right 80% top 50px) serializes as circle(at 20% 50px) - computed]
-    expected: FAIL
-
-  [circle(at right 80% bottom 70%) serializes as circle(at 20% 30%) - computed]
-    expected: FAIL
-
   [circle(at right 80% bottom 70px) serializes as circle(at left 20% bottom 70px) - computed]
     expected: FAIL
 
   [circle(at right 80px top 50%) serializes as circle(at right 80px top 50%) - computed]
     expected: FAIL
 
   [circle(at right 80px top 50px) serializes as circle(at right 80px top 50px) - computed]
     expected: FAIL
--- a/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-004.html.ini
+++ b/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-004.html.ini
@@ -168,46 +168,16 @@
     expected: FAIL
 
   [test unit (computed): cm - circle(at right 80cm bottom 70%)]
     expected: FAIL
 
   [test unit (computed): cm - circle(at right 80cm bottom 70cm)]
     expected: FAIL
 
-  [test unit (computed): mm - circle(at 50mm)]
-    expected: FAIL
-
-  [test unit (computed): mm - circle(at 50% 50mm)]
-    expected: FAIL
-
-  [test unit (computed): mm - circle(at 50mm 50%)]
-    expected: FAIL
-
-  [test unit (computed): mm - circle(at 50mm 50mm)]
-    expected: FAIL
-
-  [test unit (computed): mm - circle(at left 50mm)]
-    expected: FAIL
-
-  [test unit (computed): mm - circle(at 50mm top)]
-    expected: FAIL
-
-  [test unit (computed): mm - circle(at right 80mm)]
-    expected: FAIL
-
-  [test unit (computed): mm - circle(at 70mm bottom)]
-    expected: FAIL
-
-  [test unit (computed): mm - circle(at center 60mm)]
-    expected: FAIL
-
-  [test unit (computed): mm - circle(at 60mm center)]
-    expected: FAIL
-
   [test unit (computed): mm - circle(at center top 50mm)]
     expected: FAIL
 
   [test unit (computed): mm - circle(at center left 50mm)]
     expected: FAIL
 
   [test unit (computed): mm - circle(at center right 70mm)]
     expected: FAIL
@@ -270,118 +240,58 @@
     expected: FAIL
 
   [test unit (computed): mm - circle(at right 80mm bottom)]
     expected: FAIL
 
   [test unit (computed): mm - circle(at right 80mm top)]
     expected: FAIL
 
-  [test unit (computed): mm - circle(at left 50% top 50mm)]
-    expected: FAIL
-
   [test unit (computed): mm - circle(at left 50% bottom 70mm)]
     expected: FAIL
 
-  [test unit (computed): mm - circle(at left 50mm top 50%)]
-    expected: FAIL
-
-  [test unit (computed): mm - circle(at left 50mm top 50mm)]
-    expected: FAIL
-
-  [test unit (computed): mm - circle(at left 50mm bottom 70%)]
-    expected: FAIL
-
   [test unit (computed): mm - circle(at left 50mm bottom 70mm)]
     expected: FAIL
 
-  [test unit (computed): mm - circle(at top 50% left 50mm)]
-    expected: FAIL
-
   [test unit (computed): mm - circle(at top 50% right 80mm)]
     expected: FAIL
 
-  [test unit (computed): mm - circle(at top 50mm left 50%)]
-    expected: FAIL
-
-  [test unit (computed): mm - circle(at top 50mm left 50mm)]
-    expected: FAIL
-
-  [test unit (computed): mm - circle(at top 50mm right 80%)]
-    expected: FAIL
-
   [test unit (computed): mm - circle(at top 50mm right 80mm)]
     expected: FAIL
 
-  [test unit (computed): mm - circle(at bottom 70% left 50mm)]
-    expected: FAIL
-
   [test unit (computed): mm - circle(at bottom 70% right 80mm)]
     expected: FAIL
 
   [test unit (computed): mm - circle(at bottom 70mm left 50%)]
     expected: FAIL
 
   [test unit (computed): mm - circle(at bottom 70mm left 50mm)]
     expected: FAIL
 
   [test unit (computed): mm - circle(at bottom 70mm right 80%)]
     expected: FAIL
 
   [test unit (computed): mm - circle(at bottom 70mm right 80mm)]
     expected: FAIL
 
-  [test unit (computed): mm - circle(at right 80% top 50mm)]
-    expected: FAIL
-
   [test unit (computed): mm - circle(at right 80% bottom 70mm)]
     expected: FAIL
 
   [test unit (computed): mm - circle(at right 80mm top 50%)]
     expected: FAIL
 
   [test unit (computed): mm - circle(at right 80mm top 50mm)]
     expected: FAIL
 
   [test unit (computed): mm - circle(at right 80mm bottom 70%)]
     expected: FAIL
 
   [test unit (computed): mm - circle(at right 80mm bottom 70mm)]
     expected: FAIL
 
-  [test unit (computed): in - circle(at 50in)]
-    expected: FAIL
-
-  [test unit (computed): in - circle(at 50% 50in)]
-    expected: FAIL
-
-  [test unit (computed): in - circle(at 50in 50%)]
-    expected: FAIL
-
-  [test unit (computed): in - circle(at 50in 50in)]
-    expected: FAIL
-
-  [test unit (computed): in - circle(at left 50in)]
-    expected: FAIL
-
-  [test unit (computed): in - circle(at 50in top)]
-    expected: FAIL
-
-  [test unit (computed): in - circle(at right 80in)]
-    expected: FAIL
-
-  [test unit (computed): in - circle(at 70in bottom)]
-    expected: FAIL
-
-  [test unit (computed): in - circle(at center 60in)]
-    expected: FAIL
-
-  [test unit (computed): in - circle(at 60in center)]
-    expected: FAIL
-
   [test unit (computed): in - circle(at center top 50in)]
     expected: FAIL
 
   [test unit (computed): in - circle(at center left 50in)]
     expected: FAIL
 
   [test unit (computed): in - circle(at center right 70in)]
     expected: FAIL
@@ -444,118 +354,58 @@
     expected: FAIL
 
   [test unit (computed): in - circle(at right 80in bottom)]
     expected: FAIL
 
   [test unit (computed): in - circle(at right 80in top)]
     expected: FAIL
 
-  [test unit (computed): in - circle(at left 50% top 50in)]
-    expected: FAIL
-
   [test unit (computed): in - circle(at left 50% bottom 70in)]
     expected: FAIL
 
-  [test unit (computed): in - circle(at left 50in top 50%)]
-    expected: FAIL
-
-  [test unit (computed): in - circle(at left 50in top 50in)]
-    expected: FAIL
-
-  [test unit (computed): in - circle(at left 50in bottom 70%)]
-    expected: FAIL
-
   [test unit (computed): in - circle(at left 50in bottom 70in)]
     expected: FAIL
 
-  [test unit (computed): in - circle(at top 50% left 50in)]
-    expected: FAIL
-
   [test unit (computed): in - circle(at top 50% right 80in)]
     expected: FAIL
 
-  [test unit (computed): in - circle(at top 50in left 50%)]
-    expected: FAIL
-
-  [test unit (computed): in - circle(at top 50in left 50in)]
-    expected: FAIL
-
-  [test unit (computed): in - circle(at top 50in right 80%)]
-    expected: FAIL
-
   [test unit (computed): in - circle(at top 50in right 80in)]
     expected: FAIL
 
-  [test unit (computed): in - circle(at bottom 70% left 50in)]
-    expected: FAIL
-
   [test unit (computed): in - circle(at bottom 70% right 80in)]
     expected: FAIL
 
   [test unit (computed): in - circle(at bottom 70in left 50%)]
     expected: FAIL
 
   [test unit (computed): in - circle(at bottom 70in left 50in)]
     expected: FAIL
 
   [test unit (computed): in - circle(at bottom 70in right 80%)]
     expected: FAIL
 
   [test unit (computed): in - circle(at bottom 70in right 80in)]
     expected: FAIL
 
-  [test unit (computed): in - circle(at right 80% top 50in)]
-    expected: FAIL
-
   [test unit (computed): in - circle(at right 80% bottom 70in)]
     expected: FAIL
 
   [test unit (computed): in - circle(at right 80in top 50%)]
     expected: FAIL
 
   [test unit (computed): in - circle(at right 80in top 50in)]
     expected: FAIL
 
   [test unit (computed): in - circle(at right 80in bottom 70%)]
     expected: FAIL
 
   [test unit (computed): in - circle(at right 80in bottom 70in)]
     expected: FAIL
 
-  [test unit (computed): pt - circle(at 50pt)]
-    expected: FAIL
-
-  [test unit (computed): pt - circle(at 50% 50pt)]
-    expected: FAIL
-
-  [test unit (computed): pt - circle(at 50pt 50%)]
-    expected: FAIL
-
-  [test unit (computed): pt - circle(at 50pt 50pt)]
-    expected: FAIL
-
-  [test unit (computed): pt - circle(at left 50pt)]
-    expected: FAIL
-
-  [test unit (computed): pt - circle(at 50pt top)]
-    expected: FAIL
-
-  [test unit (computed): pt - circle(at right 80pt)]
-    expected: FAIL
-
-  [test unit (computed): pt - circle(at 70pt bottom)]
-    expected: FAIL
-
-  [test unit (computed): pt - circle(at center 60pt)]
-    expected: FAIL
-
-  [test unit (computed): pt - circle(at 60pt center)]
-    expected: FAIL
-
   [test unit (computed): pt - circle(at center top 50pt)]
     expected: FAIL
 
   [test unit (computed): pt - circle(at center left 50pt)]
     expected: FAIL
 
   [test unit (computed): pt - circle(at center right 70pt)]
     expected: FAIL
@@ -618,118 +468,58 @@
     expected: FAIL
 
   [test unit (computed): pt - circle(at right 80pt bottom)]
     expected: FAIL
 
   [test unit (computed): pt - circle(at right 80pt top)]
     expected: FAIL
 
-  [test unit (computed): pt - circle(at left 50% top 50pt)]
-    expected: FAIL
-
   [test unit (computed): pt - circle(at left 50% bottom 70pt)]
     expected: FAIL
 
-  [test unit (computed): pt - circle(at left 50pt top 50%)]
-    expected: FAIL
-
-  [test unit (computed): pt - circle(at left 50pt top 50pt)]
-    expected: FAIL
-
-  [test unit (computed): pt - circle(at left 50pt bottom 70%)]
-    expected: FAIL
-
   [test unit (computed): pt - circle(at left 50pt bottom 70pt)]
     expected: FAIL
 
-  [test unit (computed): pt - circle(at top 50% left 50pt)]
-    expected: FAIL
-
   [test unit (computed): pt - circle(at top 50% right 80pt)]
     expected: FAIL
 
-  [test unit (computed): pt - circle(at top 50pt left 50%)]
-    expected: FAIL
-
-  [test unit (computed): pt - circle(at top 50pt left 50pt)]
-    expected: FAIL
-
-  [test unit (computed): pt - circle(at top 50pt right 80%)]
-    expected: FAIL
-
   [test unit (computed): pt - circle(at top 50pt right 80pt)]
     expected: FAIL
 
-  [test unit (computed): pt - circle(at bottom 70% left 50pt)]
-    expected: FAIL
-
   [test unit (computed): pt - circle(at bottom 70% right 80pt)]
     expected: FAIL
 
   [test unit (computed): pt - circle(at bottom 70pt left 50%)]
     expected: FAIL
 
   [test unit (computed): pt - circle(at bottom 70pt left 50pt)]
     expected: FAIL
 
   [test unit (computed): pt - circle(at bottom 70pt right 80%)]
     expected: FAIL
 
   [test unit (computed): pt - circle(at bottom 70pt right 80pt)]
     expected: FAIL
 
-  [test unit (computed): pt - circle(at right 80% top 50pt)]
-    expected: FAIL
-
   [test unit (computed): pt - circle(at right 80% bottom 70pt)]
     expected: FAIL
 
   [test unit (computed): pt - circle(at right 80pt top 50%)]
     expected: FAIL
 
   [test unit (computed): pt - circle(at right 80pt top 50pt)]
     expected: FAIL
 
   [test unit (computed): pt - circle(at right 80pt bottom 70%)]
     expected: FAIL
 
   [test unit (computed): pt - circle(at right 80pt bottom 70pt)]
     expected: FAIL
 
-  [test unit (computed): pc - circle(at 50pc)]
-    expected: FAIL
-
-  [test unit (computed): pc - circle(at 50% 50pc)]
-    expected: FAIL
-
-  [test unit (computed): pc - circle(at 50pc 50%)]
-    expected: FAIL
-
-  [test unit (computed): pc - circle(at 50pc 50pc)]
-    expected: FAIL
-
-  [test unit (computed): pc - circle(at left 50pc)]
-    expected: FAIL
-
-  [test unit (computed): pc - circle(at 50pc top)]
-    expected: FAIL
-
-  [test unit (computed): pc - circle(at right 80pc)]
-    expected: FAIL
-
-  [test unit (computed): pc - circle(at 70pc bottom)]
-    expected: FAIL
-
-  [test unit (computed): pc - circle(at center 60pc)]
-    expected: FAIL
-
-  [test unit (computed): pc - circle(at 60pc center)]
-    expected: FAIL
-
   [test unit (computed): pc - circle(at center top 50pc)]
     expected: FAIL
 
   [test unit (computed): pc - circle(at center left 50pc)]
     expected: FAIL
 
   [test unit (computed): pc - circle(at center right 70pc)]
     expected: FAIL
@@ -792,118 +582,58 @@
     expected: FAIL
 
   [test unit (computed): pc - circle(at right 80pc bottom)]
     expected: FAIL
 
   [test unit (computed): pc - circle(at right 80pc top)]
     expected: FAIL
 
-  [test unit (computed): pc - circle(at left 50% top 50pc)]
-    expected: FAIL
-
   [test unit (computed): pc - circle(at left 50% bottom 70pc)]
     expected: FAIL
 
-  [test unit (computed): pc - circle(at left 50pc top 50%)]
-    expected: FAIL
-
-  [test unit (computed): pc - circle(at left 50pc top 50pc)]
-    expected: FAIL
-
-  [test unit (computed): pc - circle(at left 50pc bottom 70%)]
-    expected: FAIL
-
   [test unit (computed): pc - circle(at left 50pc bottom 70pc)]
     expected: FAIL
 
-  [test unit (computed): pc - circle(at top 50% left 50pc)]
-    expected: FAIL
-
   [test unit (computed): pc - circle(at top 50% right 80pc)]
     expected: FAIL
 
-  [test unit (computed): pc - circle(at top 50pc left 50%)]
-    expected: FAIL
-
-  [test unit (computed): pc - circle(at top 50pc left 50pc)]
-    expected: FAIL
-
-  [test unit (computed): pc - circle(at top 50pc right 80%)]
-    expected: FAIL
-
   [test unit (computed): pc - circle(at top 50pc right 80pc)]
     expected: FAIL
 
-  [test unit (computed): pc - circle(at bottom 70% left 50pc)]
-    expected: FAIL
-
   [test unit (computed): pc - circle(at bottom 70% right 80pc)]
     expected: FAIL
 
   [test unit (computed): pc - circle(at bottom 70pc left 50%)]
     expected: FAIL
 
   [test unit (computed): pc - circle(at bottom 70pc left 50pc)]
     expected: FAIL
 
   [test unit (computed): pc - circle(at bottom 70pc right 80%)]
     expected: FAIL
 
   [test unit (computed): pc - circle(at bottom 70pc right 80pc)]
     expected: FAIL
 
-  [test unit (computed): pc - circle(at right 80% top 50pc)]
-    expected: FAIL
-
   [test unit (computed): pc - circle(at right 80% bottom 70pc)]
     expected: FAIL
 
   [test unit (computed): pc - circle(at right 80pc top 50%)]
     expected: FAIL
 
   [test unit (computed): pc - circle(at right 80pc top 50pc)]
     expected: FAIL
 
   [test unit (computed): pc - circle(at right 80pc bottom 70%)]
     expected: FAIL
 
   [test unit (computed): pc - circle(at right 80pc bottom 70pc)]
     expected: FAIL
 
-  [test unit (computed): em - circle(at 50em)]
-    expected: FAIL
-
-  [test unit (computed): em - circle(at 50% 50em)]
-    expected: FAIL
-
-  [test unit (computed): em - circle(at 50em 50%)]
-    expected: FAIL
-
-  [test unit (computed): em - circle(at 50em 50em)]
-    expected: FAIL
-
-  [test unit (computed): em - circle(at left 50em)]
-    expected: FAIL
-
-  [test unit (computed): em - circle(at 50em top)]
-    expected: FAIL
-
-  [test unit (computed): em - circle(at right 80em)]
-    expected: FAIL
-
-  [test unit (computed): em - circle(at 70em bottom)]
-    expected: FAIL
-
-  [test unit (computed): em - circle(at center 60em)]
-    expected: FAIL
-
-  [test unit (computed): em - circle(at 60em center)]
-    expected: FAIL
-
   [test unit (computed): em - circle(at center top 50em)]
     expected: FAIL
 
   [test unit (computed): em - circle(at center left 50em)]
     expected: FAIL
 
   [test unit (computed): em - circle(at center right 70em)]
     expected: FAIL
@@ -966,117 +696,97 @@
     expected: FAIL
 
   [test unit (computed): em - circle(at right 80em bottom)]
     expected: FAIL
 
   [test unit (computed): em - circle(at right 80em top)]
     expected: FAIL
 
-  [test unit (computed): em - circle(at left 50% top 50em)]
-    expected: FAIL
-
   [test unit (computed): em - circle(at left 50% bottom 70em)]
     expected: FAIL
 
-  [test unit (computed): em - circle(at left 50em top 50%)]
-    expected: FAIL
-
-  [test unit (computed): em - circle(at left 50em top 50em)]
-    expected: FAIL
-
-  [test unit (computed): em - circle(at left 50em bottom 70%)]
-    expected: FAIL
-
   [test unit (computed): em - circle(at left 50em bottom 70em)]
     expected: FAIL
 
-  [test unit (computed): em - circle(at top 50% left 50em)]
-    expected: FAIL
-
   [test unit (computed): em - circle(at top 50% right 80em)]
     expected: FAIL
 
-  [test unit (computed): em - circle(at top 50em left 50%)]
-    expected: FAIL
-
-  [test unit (computed): em - circle(at top 50em left 50em)]
-    expected: FAIL
-
-  [test unit (computed): em - circle(at top 50em right 80%)]
-    expected: FAIL
-
   [test unit (computed): em - circle(at top 50em right 80em)]
     expected: FAIL
 
-  [test unit (computed): em - circle(at bottom 70% left 50em)]
-    expected: FAIL
-
   [test unit (computed): em - circle(at bottom 70% right 80em)]
     expected: FAIL
 
   [test unit (computed): em - circle(at bottom 70em left 50%)]
     expected: FAIL
 
   [test unit (computed): em - circle(at bottom 70em left 50em)]
     expected: FAIL
 
   [test unit (computed): em - circle(at bottom 70em right 80%)]
     expected: FAIL
 
   [test unit (computed): em - circle(at bottom 70em right 80em)]
     expected: FAIL
 
-  [test unit (computed): em - circle(at right 80% top 50em)]
-    expected: FAIL
-
   [test unit (computed): em - circle(at right 80% bottom 70em)]
     expected: FAIL
 
   [test unit (computed): em - circle(at right 80em top 50%)]
     expected: FAIL
 
   [test unit (computed): em - circle(at right 80em top 50em)]
     expected: FAIL
 
   [test unit (computed): em - circle(at right 80em bottom 70%)]
     expected: FAIL
 
   [test unit (computed): em - circle(at right 80em bottom 70em)]
     expected: FAIL
 
   [test unit (computed): ex - circle(at 50ex)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at 50% 50ex)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at 50ex 50%)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at 50ex 50ex)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at left 50ex)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at 50ex top)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at right 80ex)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at 70ex bottom)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at center 60ex)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at 60ex center)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at center top 50ex)]
     expected: FAIL
 
   [test unit (computed): ex - circle(at center left 50ex)]
     expected: FAIL
 
   [test unit (computed): ex - circle(at center right 70ex)]
@@ -1141,53 +851,62 @@
 
   [test unit (computed): ex - circle(at right 80ex bottom)]
     expected: FAIL
 
   [test unit (computed): ex - circle(at right 80ex top)]
     expected: FAIL
 
   [test unit (computed): ex - circle(at left 50% top 50ex)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at left 50% bottom 70ex)]
     expected: FAIL
 
   [test unit (computed): ex - circle(at left 50ex top 50%)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at left 50ex top 50ex)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at left 50ex bottom 70%)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at left 50ex bottom 70ex)]
     expected: FAIL
 
   [test unit (computed): ex - circle(at top 50% left 50ex)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at top 50% right 80ex)]
     expected: FAIL
 
   [test unit (computed): ex - circle(at top 50ex left 50%)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at top 50ex left 50ex)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at top 50ex right 80%)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at top 50ex right 80ex)]
     expected: FAIL
 
   [test unit (computed): ex - circle(at bottom 70% left 50ex)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at bottom 70% right 80ex)]
     expected: FAIL
 
   [test unit (computed): ex - circle(at bottom 70ex left 50%)]
     expected: FAIL
 
   [test unit (computed): ex - circle(at bottom 70ex left 50ex)]
@@ -1195,63 +914,34 @@
 
   [test unit (computed): ex - circle(at bottom 70ex right 80%)]
     expected: FAIL
 
   [test unit (computed): ex - circle(at bottom 70ex right 80ex)]
     expected: FAIL
 
   [test unit (computed): ex - circle(at right 80% top 50ex)]
-    expected: FAIL
+    expected:
+      if (os == "linux"): FAIL
 
   [test unit (computed): ex - circle(at right 80% bottom 70ex)]
     expected: FAIL
 
   [test unit (computed): ex - circle(at right 80ex top 50%)]
     expected: FAIL
 
   [test unit (computed): ex - circle(at right 80ex top 50ex)]
     expected: FAIL
 
   [test unit (computed): ex - circle(at right 80ex bottom 70%)]
     expected: FAIL
 
   [test unit (computed): ex - circle(at right 80ex bottom 70ex)]
     expected: FAIL
 
-  [test unit (computed): ch - circle(at 50ch)]
-    expected: FAIL
-
-  [test unit (computed): ch - circle(at 50% 50ch)]
-    expected: FAIL
-
-  [test unit (computed): ch - circle(at 50ch 50%)]
-    expected: FAIL
-
-  [test unit (computed): ch - circle(at 50ch 50ch)]
-    expected: FAIL
-
-  [test unit (computed): ch - circle(at left 50ch)]
-    expected: FAIL
-
-  [test unit (computed): ch - circle(at 50ch top)]
-    expected: FAIL
-
-  [test unit (computed): ch - circle(at right 80ch)]
-    expected: FAIL
-
-  [test unit (computed): ch - circle(at 70ch bottom)]
-    expected: FAIL
-
-  [test unit (computed): ch - circle(at center 60ch)]
-    expected: FAIL
-
-  [test unit (computed): ch - circle(at 60ch center)]
-    expected: FAIL
-
   [test unit (computed): ch - circle(at center top 50ch)]
     expected: FAIL
 
   [test unit (computed): ch - circle(at center left 50ch)]
     expected: FAIL
 
   [test unit (computed): ch - circle(at center right 70ch)]
     expected: FAIL
@@ -1314,118 +1004,58 @@
     expected: FAIL
 
   [test unit (computed): ch - circle(at right 80ch bottom)]
     expected: FAIL
 
   [test unit (computed): ch - circle(at right 80ch top)]
     expected: FAIL
 
-  [test unit (computed): ch - circle(at left 50% top 50ch)]
-    expected: FAIL
-
   [test unit (computed): ch - circle(at left 50% bottom 70ch)]
     expected: FAIL
 
-  [test unit (computed): ch - circle(at left 50ch top 50%)]
-    expected: FAIL
-
-  [test unit (computed): ch - circle(at left 50ch top 50ch)]
-    expected: FAIL
-
-  [test unit (computed): ch - circle(at left 50ch bottom 70%)]
-    expected: FAIL
-
   [test unit (computed): ch - circle(at left 50ch bottom 70ch)]
     expected: FAIL
 
-  [test unit (computed): ch - circle(at top 50% left 50ch)]
-    expected: FAIL
-
   [test unit (computed): ch - circle(at top 50% right 80ch)]
     expected: FAIL
 
-  [test unit (computed): ch - circle(at top 50ch left 50%)]
-    expected: FAIL
-
-  [test unit (computed): ch - circle(at top 50ch left 50ch)]
-    expected: FAIL
-
-  [test unit (computed): ch - circle(at top 50ch right 80%)]
-    expected: FAIL
-
   [test unit (computed): ch - circle(at top 50ch right 80ch)]
     expected: FAIL
 
-  [test unit (computed): ch - circle(at bottom 70% left 50ch)]
-    expected: FAIL
-
   [test unit (computed): ch - circle(at bottom 70% right 80ch)]
     expected: FAIL
 
   [test unit (computed): ch - circle(at bottom 70ch left 50%)]
     expected: FAIL
 
   [test unit (computed): ch - circle(at bottom 70ch left 50ch)]
     expected: FAIL
 
   [test unit (computed): ch - circle(at bottom 70ch right 80%)]
     expected: FAIL
 
   [test unit (computed): ch - circle(at bottom 70ch right 80ch)]
     expected: FAIL
 
-  [test unit (computed): ch - circle(at right 80% top 50ch)]
-    expected: FAIL
-
   [test unit (computed): ch - circle(at right 80% bottom 70ch)]
     expected: FAIL
 
   [test unit (computed): ch - circle(at right 80ch top 50%)]
     expected: FAIL
 
   [test unit (computed): ch - circle(at right 80ch top 50ch)]
     expected: FAIL
 
   [test unit (computed): ch - circle(at right 80ch bottom 70%)]
     expected: FAIL
 
   [test unit (computed): ch - circle(at right 80ch bottom 70ch)]
     expected: FAIL
 
-  [test unit (computed): rem - circle(at 50rem)]
-    expected: FAIL
-
-  [test unit (computed): rem - circle(at 50% 50rem)]
-    expected: FAIL
-
-  [test unit (computed): rem - circle(at 50rem 50%)]
-    expected: FAIL
-
-  [test unit (computed): rem - circle(at 50rem 50rem)]
-    expected: FAIL
-
-  [test unit (computed): rem - circle(at left 50rem)]
-    expected: FAIL
-
-  [test unit (computed): rem - circle(at 50rem top)]
-    expected: FAIL
-
-  [test unit (computed): rem - circle(at right 80rem)]
-    expected: FAIL
-
-  [test unit (computed): rem - circle(at 70rem bottom)]
-    expected: FAIL
-
-  [test unit (computed): rem - circle(at center 60rem)]
-    expected: FAIL
-
-  [test unit (computed): rem - circle(at 60rem center)]
-    expected: FAIL
-
   [test unit (computed): rem - circle(at center top 50rem)]
     expected: FAIL
 
   [test unit (computed): rem - circle(at center left 50rem)]
     expected: FAIL
 
   [test unit (computed): rem - circle(at center right 70rem)]
     expected: FAIL
@@ -1488,118 +1118,58 @@
     expected: FAIL
 
   [test unit (computed): rem - circle(at right 80rem bottom)]
     expected: FAIL
 
   [test unit (computed): rem - circle(at right 80rem top)]
     expected: FAIL
 
-  [test unit (computed): rem - circle(at left 50% top 50rem)]
-    expected: FAIL
-
   [test unit (computed): rem - circle(at left 50% bottom 70rem)]
     expected: FAIL
 
-  [test unit (computed): rem - circle(at left 50rem top 50%)]
-    expected: FAIL
-
-  [test unit (computed): rem - circle(at left 50rem top 50rem)]
-    expected: FAIL
-
-  [test unit (computed): rem - circle(at left 50rem bottom 70%)]
-    expected: FAIL
-
   [test unit (computed): rem - circle(at left 50rem bottom 70rem)]
     expected: FAIL
 
-  [test unit (computed): rem - circle(at top 50% left 50rem)]
-    expected: FAIL
-
   [test unit (computed): rem - circle(at top 50% right 80rem)]
     expected: FAIL
 
-  [test unit (computed): rem - circle(at top 50rem left 50%)]
-    expected: FAIL
-
-  [test unit (computed): rem - circle(at top 50rem left 50rem)]
-    expected: FAIL
-
-  [test unit (computed): rem - circle(at top 50rem right 80%)]
-    expected: FAIL
-
   [test unit (computed): rem - circle(at top 50rem right 80rem)]
     expected: FAIL
 
-  [test unit (computed): rem - circle(at bottom 70% left 50rem)]
-    expected: FAIL
-
   [test unit (computed): rem - circle(at bottom 70% right 80rem)]
     expected: FAIL
 
   [test unit (computed): rem - circle(at bottom 70rem left 50%)]
     expected: FAIL
 
   [test unit (computed): rem - circle(at bottom 70rem left 50rem)]
     expected: FAIL
 
   [test unit (computed): rem - circle(at bottom 70rem right 80%)]
     expected: FAIL
 
   [test unit (computed): rem - circle(at bottom 70rem right 80rem)]
     expected: FAIL
 
-  [test unit (computed): rem - circle(at right 80% top 50rem)]
-    expected: FAIL
-
   [test unit (computed): rem - circle(at right 80% bottom 70rem)]
     expected: FAIL
 
   [test unit (computed): rem - circle(at right 80rem top 50%)]
     expected: FAIL
 
   [test unit (computed): rem - circle(at right 80rem top 50rem)]
     expected: FAIL
 
   [test unit (computed): rem - circle(at right 80rem bottom 70%)]
     expected: FAIL
 
   [test unit (computed): rem - circle(at right 80rem bottom 70rem)]
     expected: FAIL
 
-  [test unit (computed): vw - circle(at 50vw)]
-    expected: FAIL
-
-  [test unit (computed): vw - circle(at 50% 50vw)]
-    expected: FAIL
-
-  [test unit (computed): vw - circle(at 50vw 50%)]
-    expected: FAIL
-
-  [test unit (computed): vw - circle(at 50vw 50vw)]
-    expected: FAIL
-
-  [test unit (computed): vw - circle(at left 50vw)]
-    expected: FAIL
-
-  [test unit (computed): vw - circle(at 50vw top)]
-    expected: FAIL
-
-  [test unit (computed): vw - circle(at right 80vw)]
-    expected: FAIL
-
-  [test unit (computed): vw - circle(at 70vw bottom)]
-    expected: FAIL
-
-  [test unit (computed): vw - circle(at center 60vw)]
-    expected: FAIL
-
-  [test unit (computed): vw - circle(at 60vw center)]
-    expected: FAIL
-
   [test unit (computed): vw - circle(at center top 50vw)]
     expected: FAIL
 
   [test unit (computed): vw - circle(at center left 50vw)]
     expected: FAIL
 
   [test unit (computed): vw - circle(at center right 70vw)]
     expected: FAIL
@@ -1662,118 +1232,58 @@
     expected: FAIL
 
   [test unit (computed): vw - circle(at right 80vw bottom)]
     expected: FAIL
 
   [test unit (computed): vw - circle(at right 80vw top)]
     expected: FAIL
 
-  [test unit (computed): vw - circle(at left 50% top 50vw)]
-    expected: FAIL
-
   [test unit (computed): vw - circle(at left 50% bottom 70vw)]
     expected: FAIL
 
-  [test unit (computed): vw - circle(at left 50vw top 50%)]
-    expected: FAIL
-
-  [test unit (computed): vw - circle(at left 50vw top 50vw)]
-    expected: FAIL
-
-  [test unit (computed): vw - circle(at left 50vw bottom 70%)]
-    expected: FAIL
-
   [test unit (computed): vw - circle(at left 50vw bottom 70vw)]
     expected: FAIL
 
-  [test unit (computed): vw - circle(at top 50% left 50vw)]
-    expected: FAIL
-
   [test unit (computed): vw - circle(at top 50% right 80vw)]
     expected: FAIL
 
-  [test unit (computed): vw - circle(at top 50vw left 50%)]
-    expected: FAIL
-
-  [test unit (computed): vw - circle(at top 50vw left 50vw)]
-    expected: FAIL
-
-  [test unit (computed): vw - circle(at top 50vw right 80%)]
-    expected: FAIL
-
   [test unit (computed): vw - circle(at top 50vw right 80vw)]
     expected: FAIL
 
-  [test unit (computed): vw - circle(at bottom 70% left 50vw)]
-    expected: FAIL
-
   [test unit (computed): vw - circle(at bottom 70% right 80vw)]
     expected: FAIL
 
   [test unit (computed): vw - circle(at bottom 70vw left 50%)]
     expected: FAIL
 
   [test unit (computed): vw - circle(at bottom 70vw left 50vw)]
     expected: FAIL
 
   [test unit (computed): vw - circle(at bottom 70vw right 80%)]
     expected: FAIL
 
   [test unit (computed): vw - circle(at bottom 70vw right 80vw)]
     expected: FAIL
 
-  [test unit (computed): vw - circle(at right 80% top 50vw)]
-    expected: FAIL
-
   [test unit (computed): vw - circle(at right 80% bottom 70vw)]
     expected: FAIL
 
   [test unit (computed): vw - circle(at right 80vw top 50%)]
     expected: FAIL
 
   [test unit (computed): vw - circle(at right 80vw top 50vw)]
     expected: FAIL
 
   [test unit (computed): vw - circle(at right 80vw bottom 70%)]
     expected: FAIL
 
   [test unit (computed): vw - circle(at right 80vw bottom 70vw)]
     expected: FAIL
 
-  [test unit (computed): vh - circle(at 50vh)]
-    expected: FAIL
-
-  [test unit (computed): vh - circle(at 50% 50vh)]
-    expected: FAIL
-
-  [test unit (computed): vh - circle(at 50vh 50%)]
-    expected: FAIL
-
-  [test unit (computed): vh - circle(at 50vh 50vh)]
-    expected: FAIL
-
-  [test unit (computed): vh - circle(at left 50vh)]
-    expected: FAIL
-
-  [test unit (computed): vh - circle(at 50vh top)]
-    expected: FAIL
-
-  [test unit (computed): vh - circle(at right 80vh)]
-    expected: FAIL
-
-  [test unit (computed): vh - circle(at 70vh bottom)]
-    expected: FAIL
-
-  [test unit (computed): vh - circle(at center 60vh)]
-    expected: FAIL
-
-  [test unit (computed): vh - circle(at 60vh center)]
-    expected: FAIL
-
   [test unit (computed): vh - circle(at center top 50vh)]
     expected: FAIL
 
   [test unit (computed): vh - circle(at center left 50vh)]
     expected: FAIL
 
   [test unit (computed): vh - circle(at center right 70vh)]
     expected: FAIL
@@ -1836,118 +1346,58 @@
     expected: FAIL
 
   [test unit (computed): vh - circle(at right 80vh bottom)]
     expected: FAIL
 
   [test unit (computed): vh - circle(at right 80vh top)]
     expected: FAIL
 
-  [test unit (computed): vh - circle(at left 50% top 50vh)]
-    expected: FAIL
-
   [test unit (computed): vh - circle(at left 50% bottom 70vh)]
     expected: FAIL
 
-  [test unit (computed): vh - circle(at left 50vh top 50%)]
-    expected: FAIL
-
-  [test unit (computed): vh - circle(at left 50vh top 50vh)]
-    expected: FAIL
-
-  [test unit (computed): vh - circle(at left 50vh bottom 70%)]
-    expected: FAIL
-
   [test unit (computed): vh - circle(at left 50vh bottom 70vh)]
     expected: FAIL
 
-  [test unit (computed): vh - circle(at top 50% left 50vh)]
-    expected: FAIL
-
   [test unit (computed): vh - circle(at top 50% right 80vh)]
     expected: FAIL
 
-  [test unit (computed): vh - circle(at top 50vh left 50%)]
-    expected: FAIL
-
-  [test unit (computed): vh - circle(at top 50vh left 50vh)]
-    expected: FAIL
-
-  [test unit (computed): vh - circle(at top 50vh right 80%)]
-    expected: FAIL
-
   [test unit (computed): vh - circle(at top 50vh right 80vh)]
     expected: FAIL
 
-  [test unit (computed): vh - circle(at bottom 70% left 50vh)]
-    expected: FAIL
-
   [test unit (computed): vh - circle(at bottom 70% right 80vh)]
     expected: FAIL
 
   [test unit (computed): vh - circle(at bottom 70vh left 50%)]
     expected: FAIL
 
   [test unit (computed): vh - circle(at bottom 70vh left 50vh)]
     expected: FAIL
 
   [test unit (computed): vh - circle(at bottom 70vh right 80%)]
     expected: FAIL
 
   [test unit (computed): vh - circle(at bottom 70vh right 80vh)]
     expected: FAIL
 
-  [test unit (computed): vh - circle(at right 80% top 50vh)]
-    expected: FAIL
-
   [test unit (computed): vh - circle(at right 80% bottom 70vh)]
     expected: FAIL
 
   [test unit (computed): vh - circle(at right 80vh top 50%)]
     expected: FAIL
 
   [test unit (computed): vh - circle(at right 80vh top 50vh)]
     expected: FAIL
 
   [test unit (computed): vh - circle(at right 80vh bottom 70%)]
     expected: FAIL
 
   [test unit (computed): vh - circle(at right 80vh bottom 70vh)]
     expected: FAIL
 
-  [test unit (computed): vmin - circle(at 50vmin)]
-    expected: FAIL
-
-  [test unit (computed): vmin - circle(at 50% 50vmin)]
-    expected: FAIL
-
-  [test unit (computed): vmin - circle(at 50vmin 50%)]
-    expected: FAIL
-
-  [test unit (computed): vmin - circle(at 50vmin 50vmin)]
-    expected: FAIL
-
-  [test unit (computed): vmin - circle(at left 50vmin)]
-    expected: FAIL
-
-  [test unit (computed): vmin - circle(at 50vmin top)]
-    expected: FAIL
-
-  [test unit (computed): vmin - circle(at right 80vmin)]
-    expected: FAIL
-
-  [test unit (computed): vmin - circle(at 70vmin bottom)]
-    expected: FAIL
-
-  [test unit (computed): vmin - circle(at center 60vmin)]
-    expected: FAIL
-
-  [test unit (computed): vmin - circle(at 60vmin center)]
-    expected: FAIL
-
   [test unit (computed): vmin - circle(at center top 50vmin)]
     expected: FAIL
 
   [test unit (computed): vmin - circle(at center left 50vmin)]
     expected: FAIL
 
   [test unit (computed): vmin - circle(at center right 70vmin)]
     expected: FAIL
@@ -2010,118 +1460,58 @@
     expected: FAIL
 
   [test unit (computed): vmin - circle(at right 80vmin bottom)]
     expected: FAIL
 
   [test unit (computed): vmin - circle(at right 80vmin top)]
     expected: FAIL
 
-  [test unit (computed): vmin - circle(at left 50% top 50vmin)]
-    expected: FAIL
-
   [test unit (computed): vmin - circle(at left 50% bottom 70vmin)]
     expected: FAIL
 
-  [test unit (computed): vmin - circle(at left 50vmin top 50%)]
-    expected: FAIL
-
-  [test unit (computed): vmin - circle(at left 50vmin top 50vmin)]
-    expected: FAIL
-
-  [test unit (computed): vmin - circle(at left 50vmin bottom 70%)]
-    expected: FAIL
-
   [test unit (computed): vmin - circle(at left 50vmin bottom 70vmin)]
     expected: FAIL
 
-  [test unit (computed): vmin - circle(at top 50% left 50vmin)]
-    expected: FAIL
-
   [test unit (computed): vmin - circle(at top 50% right 80vmin)]
     expected: FAIL
 
-  [test unit (computed): vmin - circle(at top 50vmin left 50%)]
-    expected: FAIL
-
-  [test unit (computed): vmin - circle(at top 50vmin left 50vmin)]
-    expected: FAIL
-
-  [test unit (computed): vmin - circle(at top 50vmin right 80%)]
-    expected: FAIL
-
   [test unit (computed): vmin - circle(at top 50vmin right 80vmin)]
     expected: FAIL
 
-  [test unit (computed): vmin - circle(at bottom 70% left 50vmin)]
-    expected: FAIL
-
   [test unit (computed): vmin - circle(at bottom 70% right 80vmin)]
     expected: FAIL
 
   [test unit (computed): vmin - circle(at bottom 70vmin left 50%)]
     expected: FAIL
 
   [test unit (computed): vmin - circle(at bottom 70vmin left 50vmin)]
     expected: FAIL
 
   [test unit (computed): vmin - circle(at bottom 70vmin right 80%)]
     expected: FAIL
 
   [test unit (computed): vmin - circle(at bottom 70vmin right 80vmin)]
     expected: FAIL
 
-  [test unit (computed): vmin - circle(at right 80% top 50vmin)]
-    expected: FAIL
-
   [test unit (computed): vmin - circle(at right 80% bottom 70vmin)]
     expected: FAIL
 
   [test unit (computed): vmin - circle(at right 80vmin top 50%)]
     expected: FAIL
 
   [test unit (computed): vmin - circle(at right 80vmin top 50vmin)]
     expected: FAIL
 
   [test unit (computed): vmin - circle(at right 80vmin bottom 70%)]
     expected: FAIL
 
   [test unit (computed): vmin - circle(at right 80vmin bottom 70vmin)]
     expected: FAIL
 
-  [test unit (computed): vmax - circle(at 50vmax)]
-    expected: FAIL
-
-  [test unit (computed): vmax - circle(at 50% 50vmax)]
-    expected: FAIL
-
-  [test unit (computed): vmax - circle(at 50vmax 50%)]
-    expected: FAIL
-
-  [test unit (computed): vmax - circle(at 50vmax 50vmax)]
-    expected: FAIL
-
-  [test unit (computed): vmax - circle(at left 50vmax)]
-    expected: FAIL
-
-  [test unit (computed): vmax - circle(at 50vmax top)]
-    expected: FAIL
-
-  [test unit (computed): vmax - circle(at right 80vmax)]
-    expected: FAIL
-
-  [test unit (computed): vmax - circle(at 70vmax bottom)]
-    expected: FAIL
-
-  [test unit (computed): vmax - circle(at center 60vmax)]
-    expected: FAIL
-
-  [test unit (computed): vmax - circle(at 60vmax center)]
-    expected: FAIL
-
   [test unit (computed): vmax - circle(at center top 50vmax)]
     expected: FAIL
 
   [test unit (computed): vmax - circle(at center left 50vmax)]
     expected: FAIL
 
   [test unit (computed): vmax - circle(at center right 70vmax)]
     expected: FAIL
@@ -2184,73 +1574,43 @@
     expected: FAIL
 
   [test unit (computed): vmax - circle(at right 80vmax bottom)]
     expected: FAIL
 
   [test unit (computed): vmax - circle(at right 80vmax top)]
     expected: FAIL
 
-  [test unit (computed): vmax - circle(at left 50% top 50vmax)]
-    expected: FAIL
-
   [test unit (computed): vmax - circle(at left 50% bottom 70vmax)]
     expected: FAIL
 
-  [test unit (computed): vmax - circle(at left 50vmax top 50%)]
-    expected: FAIL
-
-  [test unit (computed): vmax - circle(at left 50vmax top 50vmax)]
-    expected: FAIL
-
-  [test unit (computed): vmax - circle(at left 50vmax bottom 70%)]
-    expected: FAIL
-
   [test unit (computed): vmax - circle(at left 50vmax bottom 70vmax)]
     expected: FAIL
 
-  [test unit (computed): vmax - circle(at top 50% left 50vmax)]
-    expected: FAIL
-
   [test unit (computed): vmax - circle(at top 50% right 80vmax)]
     expected: FAIL
 
-  [test unit (computed): vmax - circle(at top 50vmax left 50%)]
-    expected: FAIL
-
-  [test unit (computed): vmax - circle(at top 50vmax left 50vmax)]
-    expected: FAIL
-
-  [test unit (computed): vmax - circle(at top 50vmax right 80%)]
-    expected: FAIL
-
   [test unit (computed): vmax - circle(at top 50vmax right 80vmax)]
     expected: FAIL
 
-  [test unit (computed): vmax - circle(at bottom 70% left 50vmax)]
-    expected: FAIL
-
   [test unit (computed): vmax - circle(at bottom 70% right 80vmax)]
     expected: FAIL
 
   [test unit (computed): vmax - circle(at bottom 70vmax left 50%)]
     expected: FAIL
 
   [test unit (computed): vmax - circle(at bottom 70vmax left 50vmax)]
     expected: FAIL
 
   [test unit (computed): vmax - circle(at bottom 70vmax right 80%)]
     expected: FAIL
 
   [test unit (computed): vmax - circle(at bottom 70vmax right 80vmax)]
     expected: FAIL
 
-  [test unit (computed): vmax - circle(at right 80% top 50vmax)]
-    expected: FAIL
-
   [test unit (computed): vmax - circle(at right 80% bottom 70vmax)]
     expected: FAIL
 
   [test unit (computed): vmax - circle(at right 80vmax top 50%)]
     expected: FAIL
 
   [test unit (computed): vmax - circle(at right 80vmax top 50vmax)]
     expected: FAIL
--- a/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-009.html.ini
+++ b/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-009.html.ini
@@ -1,66 +1,9 @@
 [shape-outside-circle-009.html]
-  [circle(at +50px) - computed]
-    expected: FAIL
-
-  [circle(at -50px) - computed]
-    expected: FAIL
-
-  [circle(at +50%) - computed]
-    expected: FAIL
-
-  [circle(at -50%) - computed]
-    expected: FAIL
-
-  [circle(at left +50px) - computed]
-    expected: FAIL
-
-  [circle(at left +50%) - computed]
-    expected: FAIL
-
-  [circle(at right -50px) - computed]
-    expected: FAIL
-
-  [circle(at right -50%) - computed]
-    expected: FAIL
-
-  [circle(at +50px top) - computed]
-    expected: FAIL
-
-  [circle(at +50% top) - computed]
-    expected: FAIL
-
-  [circle(at -50px bottom) - computed]
-    expected: FAIL
-
-  [circle(at -50% bottom) - computed]
-    expected: FAIL
-
-  [circle(at +50px +50px) - computed]
-    expected: FAIL
-
-  [circle(at +50% +50%) - computed]
-    expected: FAIL
-
-  [circle(at -50px -50px) - computed]
-    expected: FAIL
-
-  [circle(at +50px -50px) - computed]
-    expected: FAIL
-
-  [circle(at -50px +50px) - computed]
-    expected: FAIL
-
-  [circle(at +50% -50%) - computed]
-    expected: FAIL
-
-  [circle(at -50% +50%) - computed]
-    expected: FAIL
-
   [circle(at +50px) - inline]
     expected: FAIL
 
   [circle(at -50px) - inline]
     expected: FAIL
 
   [circle(at +50%) - inline]
     expected: FAIL
--- a/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-011.html.ini
+++ b/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-011.html.ini
@@ -1,33 +1,12 @@
 [shape-outside-circle-011.html]
   [circle(at calc((12.5%*6 + 10in) / 4)) - inline style]
     expected: FAIL
 
-  [circle(at calc(10in)) - computed style]
-    expected: FAIL
-
-  [circle(at calc(10in + 20px)) - computed style]
-    expected: FAIL
-
-  [circle(at calc(30%)) - computed style]
-    expected: FAIL
-
-  [circle(at calc(100%/4)) - computed style]
-    expected: FAIL
-
-  [circle(at calc(25%*3)) - computed style]
-    expected: FAIL
-
-  [circle(at calc(25%*3 - 10in)) - computed style]
-    expected: FAIL
-
-  [circle(at calc((12.5%*6 + 10in) / 4)) - computed style]
-    expected: FAIL
-
   [circle(at calc(10in)) - inline style]
     expected: FAIL
 
   [circle(at calc(10in + 20px)) - inline style]
     expected: FAIL
 
   [circle(at calc(30%)) - inline style]
     expected: FAIL