Bug 1473184: Remove serialize_basicshape_position. r=xidorn
authorEmilio Cobos Álvarez <emilio@crisal.io>
Mon, 12 Nov 2018 09:21:17 +0000
changeset 445878 cb6837c0ee5a192ff57bcba2e7dab3a9ff1a5580
parent 445877 25ccc02a44ff21b13b0145e1a35dac692b40c403
child 445879 30487cc4d50cef512ad908ea429fed302f592ac7
push id109795
push userrmaries@mozilla.com
push dateMon, 12 Nov 2018 17:23:23 +0000
treeherdermozilla-inbound@ccc0ff898ca2 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersxidorn
bugs1473184
milestone65.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 1473184: Remove serialize_basicshape_position. r=xidorn Per https://github.com/w3c/csswg-drafts/issues/2274. There's a whole lot of new failures, but those need to be updated along with the spec changes in that issue. We did resolve that position serialized the same everywhere though. Differential Revision: https://phabricator.services.mozilla.com/D1933
servo/components/style/values/specified/basic_shape.rs
testing/web-platform/meta/css/css-masking/parsing/clip-path-valid.html.ini
testing/web-platform/meta/css/css-shapes/basic-shape-circle-ellipse-serialization.html.ini
testing/web-platform/meta/css/css-shapes/parsing/shape-outside-valid-position.html.ini
testing/web-platform/meta/css/css-shapes/parsing/shape-outside-valid.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-005.html.ini
testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-006.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-010.html.ini
testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-011.html.ini
testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-000.html.ini
testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-001.html.ini
testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-002.html.ini
testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-004.html.ini
testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-005.html.ini
testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-006.html.ini
testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-009.html.ini
testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-010.html.ini
--- a/servo/components/style/values/specified/basic_shape.rs
+++ b/servo/components/style/values/specified/basic_shape.rs
@@ -3,30 +3,27 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 //! CSS handling for the specified value of
 //! [`basic-shape`][basic-shape]s
 //!
 //! [basic-shape]: https://drafts.csswg.org/css-shapes/#typedef-basic-shape
 
 use crate::parser::{Parse, ParserContext};
-use crate::values::computed::Percentage;
 use crate::values::generics::basic_shape as generic;
 use crate::values::generics::basic_shape::{GeometryBox, Path, PolygonCoord};
 use crate::values::generics::basic_shape::{ShapeBox, ShapeSource};
 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, PositionComponent};
-use crate::values::specified::position::{Side, VerticalPosition};
+use crate::values::specified::position::{HorizontalPosition, VerticalPosition, Position};
 use crate::values::specified::url::SpecifiedUrl;
 use crate::values::specified::LengthOrPercentage;
 use crate::values::specified::SVGPathData;
 use cssparser::Parser;
-use std::borrow::Cow;
 use std::fmt::{self, Write};
 use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss};
 
 /// A specified alias for FillRule.
 pub use crate::values::generics::basic_shape::FillRule;
 
 /// A specified clipping shape.
 pub type ClippingShape = generic::ClippingShape<BasicShape, SpecifiedUrl>;
@@ -244,17 +241,17 @@ impl ToCss for Circle {
     {
         dest.write_str("circle(")?;
         if generic::ShapeRadius::ClosestSide != self.radius {
             self.radius.to_css(dest)?;
             dest.write_str(" ")?;
         }
 
         dest.write_str("at ")?;
-        serialize_basicshape_position(&self.position, dest)?;
+        self.position.to_css(dest)?;
         dest.write_str(")")
     }
 }
 
 impl Parse for Ellipse {
     fn parse<'i, 't>(
         context: &ParserContext,
         input: &mut Parser<'i, 't>,
@@ -300,17 +297,17 @@ impl ToCss for 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 ")?;
-        serialize_basicshape_position(&self.position, dest)?;
+        self.position.to_css(dest)?;
         dest.write_str(")")
     }
 }
 
 impl Parse for ShapeRadius {
     fn parse<'i, 't>(
         context: &ParserContext,
         input: &mut Parser<'i, 't>,
@@ -321,92 +318,16 @@ impl Parse for ShapeRadius {
 
         try_match_ident_ignore_ascii_case! { input,
             "closest-side" => Ok(generic::ShapeRadius::ClosestSide),
             "farthest-side" => Ok(generic::ShapeRadius::FarthestSide),
         }
     }
 }
 
-/// <https://drafts.csswg.org/css-shapes/#basic-shape-serialization>
-///
-/// Positions get serialized differently with basic shapes. Keywords
-/// are converted to percentages where possible. Only the two or four
-/// value forms are used. In case of two keyword-percentage pairs,
-/// the keywords are folded into the percentages
-fn serialize_basicshape_position<W>(position: &Position, dest: &mut CssWriter<W>) -> fmt::Result
-where
-    W: Write,
-{
-    fn to_keyword_and_lop<S>(component: &PositionComponent<S>) -> (S, Cow<LengthOrPercentage>)
-    where
-        S: Copy + Side,
-    {
-        match *component {
-            PositionComponent::Center => (
-                S::start(),
-                Cow::Owned(LengthOrPercentage::Percentage(Percentage(0.5))),
-            ),
-            PositionComponent::Side(keyword, None) => {
-                // left | top => 0%
-                // right | bottom => 100%
-                let p = if keyword.is_start() { 0. } else { 1. };
-                (
-                    S::start(),
-                    Cow::Owned(LengthOrPercentage::Percentage(Percentage(p))),
-                )
-            },
-            PositionComponent::Side(keyword, Some(ref lop)) if !keyword.is_start() => {
-                if let LengthOrPercentage::Percentage(p) = *to_non_zero_length(lop) {
-                    (
-                        S::start(),
-                        Cow::Owned(LengthOrPercentage::Percentage(Percentage(1. - p.0))),
-                    )
-                } else {
-                    (keyword, Cow::Borrowed(lop))
-                }
-            },
-            PositionComponent::Length(ref lop) | PositionComponent::Side(_, Some(ref lop)) => {
-                (S::start(), to_non_zero_length(lop))
-            },
-        }
-    }
-
-    fn to_non_zero_length(lop: &LengthOrPercentage) -> Cow<LengthOrPercentage> {
-        match *lop {
-            LengthOrPercentage::Length(ref l) if l.is_zero() => {
-                Cow::Owned(LengthOrPercentage::Percentage(Percentage(0.)))
-            },
-            _ => Cow::Borrowed(lop),
-        }
-    }
-
-    fn write_pair<A, B, W>(a: &A, b: &B, dest: &mut CssWriter<W>) -> fmt::Result
-    where
-        A: ToCss,
-        B: ToCss,
-        W: Write,
-    {
-        a.to_css(dest)?;
-        dest.write_str(" ")?;
-        b.to_css(dest)
-    }
-
-    let (x_pos, x_lop) = to_keyword_and_lop(&position.horizontal);
-    let (y_pos, y_lop) = to_keyword_and_lop(&position.vertical);
-
-    if x_pos.is_start() && y_pos.is_start() {
-        return write_pair(&*x_lop, &*y_lop, dest);
-    }
-
-    write_pair(&x_pos, &*x_lop, dest)?;
-    dest.write_str(" ")?;
-    write_pair(&y_pos, &*y_lop, dest)
-}
-
 impl Parse for Polygon {
     fn parse<'i, 't>(
         context: &ParserContext,
         input: &mut Parser<'i, 't>,
     ) -> Result<Self, ParseError<'i>> {
         input.expect_function_matching("polygon")?;
         input.parse_nested_block(|i| Self::parse_function_arguments(context, i))
     }
--- a/testing/web-platform/meta/css/css-masking/parsing/clip-path-valid.html.ini
+++ b/testing/web-platform/meta/css/css-masking/parsing/clip-path-valid.html.ini
@@ -1,7 +1,28 @@
 [clip-path-valid.html]
   [e.style['clip-path'\] = "ellipse(1px closest-side)" should set the property value]
     expected: FAIL
 
   [e.style['clip-path'\] = "border-box circle(7% at 8% 9%)" should set the property value]
     expected: FAIL
 
+  [e.style['clip-path'\] = "circle()" should set the property value]
+    expected: FAIL
+
+  [e.style['clip-path'\] = "circle(1px)" should set the property value]
+    expected: FAIL
+
+  [e.style['clip-path'\] = "circle(closest-side)" should set the property value]
+    expected: FAIL
+
+  [e.style['clip-path'\] = "circle(farthest-side at center top)" should set the property value]
+    expected: FAIL
+
+  [e.style['clip-path'\] = "circle(4% at top right)" should set the property value]
+    expected: FAIL
+
+  [e.style['clip-path'\] = "ellipse()" should set the property value]
+    expected: FAIL
+
+  [e.style['clip-path'\] = "ellipse(farthest-side 4% at bottom left)" should set the property value]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/css/css-shapes/basic-shape-circle-ellipse-serialization.html.ini
@@ -0,0 +1,58 @@
+[basic-shape-circle-ellipse-serialization.html]
+  [Serialization of basic shapes]
+    expected: FAIL
+
+  [Serialization of basic shapes 1]
+    expected: FAIL
+
+  [Serialization of basic shapes 2]
+    expected: FAIL
+
+  [Serialization of basic shapes 3]
+    expected: FAIL
+
+  [Serialization of basic shapes 4]
+    expected: FAIL
+
+  [Serialization of basic shapes 5]
+    expected: FAIL
+
+  [Serialization of basic shapes 6]
+    expected: FAIL
+
+  [Serialization of basic shapes 7]
+    expected: FAIL
+
+  [Serialization of basic shapes 8]
+    expected: FAIL
+
+  [Serialization of basic shapes 9]
+    expected: FAIL
+
+  [Serialization of basic shapes 10]
+    expected: FAIL
+
+  [Serialization of basic shapes 11]
+    expected: FAIL
+
+  [Serialization of basic shapes 14]
+    expected: FAIL
+
+  [Serialization of basic shapes 15]
+    expected: FAIL
+
+  [Serialization of basic shapes 16]
+    expected: FAIL
+
+  [Serialization of basic shapes 17]
+    expected: FAIL
+
+  [Serialization of basic shapes 18]
+    expected: FAIL
+
+  [Serialization of basic shapes 23]
+    expected: FAIL
+
+  [Serialization of basic shapes 24]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/css/css-shapes/parsing/shape-outside-valid-position.html.ini
@@ -0,0 +1,25 @@
+[shape-outside-valid-position.html]
+  [e.style['shape-outside'\] = "circle(at 10%)" should set the property value]
+    expected: FAIL
+
+  [e.style['shape-outside'\] = "circle(at bottom 10% right 20%)" should set the property value]
+    expected: FAIL
+
+  [e.style['shape-outside'\] = "circle(at bottom right)" should set the property value]
+    expected: FAIL
+
+  [e.style['shape-outside'\] = "circle(at center)" should set the property value]
+    expected: FAIL
+
+  [e.style['shape-outside'\] = "circle(at center left)" should set the property value]
+    expected: FAIL
+
+  [e.style['shape-outside'\] = "circle(at left)" should set the property value]
+    expected: FAIL
+
+  [e.style['shape-outside'\] = "circle(at top)" should set the property value]
+    expected: FAIL
+
+  [e.style['shape-outside'\] = "circle(at top center)" should set the property value]
+    expected: FAIL
+
--- a/testing/web-platform/meta/css/css-shapes/parsing/shape-outside-valid.html.ini
+++ b/testing/web-platform/meta/css/css-shapes/parsing/shape-outside-valid.html.ini
@@ -1,7 +1,34 @@
 [shape-outside-valid.html]
   [e.style['shape-outside'\] = "border-box circle(7% at 8% 9%)" should set the property value]
     expected: FAIL
 
   [e.style['shape-outside'\] = "cross-fade(url(\\"https://example.com/\\"), green)" should set the property value]
     expected: FAIL
 
+  [e.style['shape-outside'\] = "circle()" should set the property value]
+    expected: FAIL
+
+  [e.style['shape-outside'\] = "circle(1px)" should set the property value]
+    expected: FAIL
+
+  [e.style['shape-outside'\] = "circle(closest-side)" should set the property value]
+    expected: FAIL
+
+  [e.style['shape-outside'\] = "circle(farthest-side at center top)" should set the property value]
+    expected: FAIL
+
+  [e.style['shape-outside'\] = "circle(4% at top right)" should set the property value]
+    expected: FAIL
+
+  [e.style['shape-outside'\] = "ellipse()" should set the property value]
+    expected: FAIL
+
+  [e.style['shape-outside'\] = "ellipse(3% 2%)" should set the property value]
+    expected: FAIL
+
+  [e.style['shape-outside'\] = "ellipse(closest-side 1px)" should set the property value]
+    expected: FAIL
+
+  [e.style['shape-outside'\] = "ellipse(farthest-side 4% at bottom left)" should set the property value]
+    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,7 +1,13 @@
 [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,7 +1,22 @@
 [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
+
+  [circle(closest-side) - inline]
+    expected: FAIL
+
+  [circle(farthest-side) - 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
@@ -354,8 +354,182 @@
     expected: FAIL
 
   [circle(at right 80px bottom 70%) serializes as circle(at right 80px top 30%) - computed]
     expected: FAIL
 
   [circle(at right 80px bottom 70px) serializes as circle(at right 80px bottom 70px) - computed]
     expected: FAIL
 
+  [circle(at 50%) serializes as circle(at 50% 50%) - inline]
+    expected: FAIL
+
+  [circle(at 50px) serializes as circle(at 50px 50%) - inline]
+    expected: FAIL
+
+  [circle(at left) serializes as circle(at 0% 50%) - inline]
+    expected: FAIL
+
+  [circle(at top) serializes as circle(at 50% 0%) - inline]
+    expected: FAIL
+
+  [circle(at right) serializes as circle(at 100% 50%) - inline]
+    expected: FAIL
+
+  [circle(at bottom) serializes as circle(at 50% 100%) - inline]
+    expected: FAIL
+
+  [circle(at center) serializes as circle(at 50% 50%) - inline]
+    expected: FAIL
+
+  [circle(at left top) serializes as circle(at 0% 0%) - inline]
+    expected: FAIL
+
+  [circle(at left bottom) serializes as circle(at 0% 100%) - inline]
+    expected: FAIL
+
+  [circle(at left center) serializes as circle(at 0% 50%) - inline]
+    expected: FAIL
+
+  [circle(at top left) serializes as circle(at 0% 0%) - inline]
+    expected: FAIL
+
+  [circle(at top right) serializes as circle(at 100% 0%) - inline]
+    expected: FAIL
+
+  [circle(at top center) serializes as circle(at 50% 0%) - inline]
+    expected: FAIL
+
+  [circle(at right top) serializes as circle(at 100% 0%) - inline]
+    expected: FAIL
+
+  [circle(at right bottom) serializes as circle(at 100% 100%) - inline]
+    expected: FAIL
+
+  [circle(at right center) serializes as circle(at 100% 50%) - inline]
+    expected: FAIL
+
+  [circle(at bottom left) serializes as circle(at 0% 100%) - inline]
+    expected: FAIL
+
+  [circle(at bottom right) serializes as circle(at 100% 100%) - inline]
+    expected: FAIL
+
+  [circle(at bottom center) serializes as circle(at 50% 100%) - inline]
+    expected: FAIL
+
+  [circle(at center top) serializes as circle(at 50% 0%) - inline]
+    expected: FAIL
+
+  [circle(at center left) serializes as circle(at 0% 50%) - inline]
+    expected: FAIL
+
+  [circle(at center right) serializes as circle(at 100% 50%) - inline]
+    expected: FAIL
+
+  [circle(at center bottom) serializes as circle(at 50% 100%) - inline]
+    expected: FAIL
+
+  [circle(at center center) serializes as circle(at 50% 50%) - inline]
+    expected: FAIL
+
+  [circle(at left 50%) serializes as circle(at 0% 50%) - inline]
+    expected: FAIL
+
+  [circle(at left 50px) serializes as circle(at 0% 50px) - inline]
+    expected: FAIL
+
+  [circle(at 50% top) serializes as circle(at 50% 0%) - inline]
+    expected: FAIL
+
+  [circle(at 50px top) serializes as circle(at 50px 0%) - inline]
+    expected: FAIL
+
+  [circle(at right 80%) serializes as circle(at 100% 80%) - inline]
+    expected: FAIL
+
+  [circle(at right 80px) serializes as circle(at 100% 80px) - inline]
+    expected: FAIL
+
+  [circle(at 70% bottom) serializes as circle(at 70% 100%) - inline]
+    expected: FAIL
+
+  [circle(at 70px bottom) serializes as circle(at 70px 100%) - inline]
+    expected: FAIL
+
+  [circle(at center 60%) serializes as circle(at 50% 60%) - inline]
+    expected: FAIL
+
+  [circle(at center 60px) serializes as circle(at 50% 60px) - inline]
+    expected: FAIL
+
+  [circle(at 60% center) serializes as circle(at 60% 50%) - inline]
+    expected: FAIL
+
+  [circle(at 60px center) serializes as circle(at 60px 50%) - inline]
+    expected: FAIL
+
+  [circle(at left 50% top 50%) serializes as circle(at 50% 50%) - inline]
+    expected: FAIL
+
+  [circle(at left 50% top 50px) serializes as circle(at 50% 50px) - inline]
+    expected: FAIL
+
+  [circle(at left 50% bottom 70%) serializes as circle(at 50% 30%) - inline]
+    expected: FAIL
+
+  [circle(at left 50px top 50%) serializes as circle(at 50px 50%) - inline]
+    expected: FAIL
+
+  [circle(at left 50px top 50px) serializes as circle(at 50px 50px) - inline]
+    expected: FAIL
+
+  [circle(at left 50px bottom 70%) serializes as circle(at 50px 30%) - inline]
+    expected: FAIL
+
+  [circle(at top 50% left 50%) serializes as circle(at 50% 50%) - inline]
+    expected: FAIL
+
+  [circle(at top 50% left 50px) serializes as circle(at 50px 50%) - inline]
+    expected: FAIL
+
+  [circle(at top 50% right 80%) serializes as circle(at 20% 50%) - inline]
+    expected: FAIL
+
+  [circle(at top 50px left 50%) serializes as circle(at 50% 50px) - inline]
+    expected: FAIL
+
+  [circle(at top 50px left 50px) serializes as circle(at 50px 50px) - inline]
+    expected: FAIL
+
+  [circle(at top 50px right 80%) serializes as circle(at 20% 50px) - inline]
+    expected: FAIL
+
+  [circle(at bottom 70% left 50%) serializes as circle(at 50% 30%) - inline]
+    expected: FAIL
+
+  [circle(at bottom 70% left 50px) serializes as circle(at 50px 30%) - inline]
+    expected: FAIL
+
+  [circle(at bottom 70% right 80%) serializes as circle(at 20% 30%) - inline]
+    expected: FAIL
+
+  [circle(at bottom 70% right 80px) serializes as circle(at right 80px top 30%) - inline]
+    expected: FAIL
+
+  [circle(at bottom 70px right 80%) serializes as circle(at left 20% bottom 70px) - inline]
+    expected: FAIL
+
+  [circle(at right 80% top 50%) serializes as circle(at 20% 50%) - inline]
+    expected: FAIL
+
+  [circle(at right 80% top 50px) serializes as circle(at 20% 50px) - inline]
+    expected: FAIL
+
+  [circle(at right 80% bottom 70%) serializes as circle(at 20% 30%) - inline]
+    expected: FAIL
+
+  [circle(at right 80% bottom 70px) serializes as circle(at left 20% bottom 70px) - inline]
+    expected: FAIL
+
+  [circle(at right 80px bottom 70%) serializes as circle(at right 80px top 30%) - inline]
+    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
@@ -2256,8 +2256,827 @@
     expected: FAIL
 
   [test unit (computed): vmax - circle(at right 80vmax bottom 70%)]
     expected: FAIL
 
   [test unit (computed): vmax - circle(at right 80vmax bottom 70vmax)]
     expected: FAIL
 
+  [test unit (inline): cm - circle(at 50cm)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at left 50cm)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at 50cm top)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at right 80cm)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at 70cm bottom)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at center 60cm)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at 60cm center)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at left 50% top 50cm)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at left 50cm top 50%)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at left 50cm top 50cm)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at left 50cm bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at top 50% left 50cm)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at top 50cm left 50%)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at top 50cm left 50cm)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at top 50cm right 80%)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at bottom 70% left 50cm)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at bottom 70% right 80cm)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at bottom 70cm right 80%)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at right 80% top 50cm)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at right 80% bottom 70cm)]
+    expected: FAIL
+
+  [test unit (inline): cm - circle(at right 80cm bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at 50mm)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at left 50mm)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at 50mm top)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at right 80mm)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at 70mm bottom)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at center 60mm)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at 60mm center)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at left 50% top 50mm)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at left 50mm top 50%)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at left 50mm top 50mm)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at left 50mm bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at top 50% left 50mm)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at top 50mm left 50%)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at top 50mm left 50mm)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at top 50mm right 80%)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at bottom 70% left 50mm)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at bottom 70% right 80mm)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at bottom 70mm right 80%)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at right 80% top 50mm)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at right 80% bottom 70mm)]
+    expected: FAIL
+
+  [test unit (inline): mm - circle(at right 80mm bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at 50in)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at left 50in)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at 50in top)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at right 80in)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at 70in bottom)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at center 60in)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at 60in center)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at left 50% top 50in)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at left 50in top 50%)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at left 50in top 50in)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at left 50in bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at top 50% left 50in)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at top 50in left 50%)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at top 50in left 50in)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at top 50in right 80%)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at bottom 70% left 50in)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at bottom 70% right 80in)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at bottom 70in right 80%)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at right 80% top 50in)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at right 80% bottom 70in)]
+    expected: FAIL
+
+  [test unit (inline): in - circle(at right 80in bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at 50pt)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at left 50pt)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at 50pt top)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at right 80pt)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at 70pt bottom)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at center 60pt)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at 60pt center)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at left 50% top 50pt)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at left 50pt top 50%)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at left 50pt top 50pt)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at left 50pt bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at top 50% left 50pt)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at top 50pt left 50%)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at top 50pt left 50pt)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at top 50pt right 80%)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at bottom 70% left 50pt)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at bottom 70% right 80pt)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at bottom 70pt right 80%)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at right 80% top 50pt)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at right 80% bottom 70pt)]
+    expected: FAIL
+
+  [test unit (inline): pt - circle(at right 80pt bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at 50pc)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at left 50pc)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at 50pc top)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at right 80pc)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at 70pc bottom)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at center 60pc)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at 60pc center)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at left 50% top 50pc)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at left 50pc top 50%)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at left 50pc top 50pc)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at left 50pc bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at top 50% left 50pc)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at top 50pc left 50%)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at top 50pc left 50pc)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at top 50pc right 80%)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at bottom 70% left 50pc)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at bottom 70% right 80pc)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at bottom 70pc right 80%)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at right 80% top 50pc)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at right 80% bottom 70pc)]
+    expected: FAIL
+
+  [test unit (inline): pc - circle(at right 80pc bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at 50em)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at left 50em)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at 50em top)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at right 80em)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at 70em bottom)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at center 60em)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at 60em center)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at left 50% top 50em)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at left 50em top 50%)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at left 50em top 50em)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at left 50em bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at top 50% left 50em)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at top 50em left 50%)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at top 50em left 50em)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at top 50em right 80%)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at bottom 70% left 50em)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at bottom 70% right 80em)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at bottom 70em right 80%)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at right 80% top 50em)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at right 80% bottom 70em)]
+    expected: FAIL
+
+  [test unit (inline): em - circle(at right 80em bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at 50ex)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at left 50ex)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at 50ex top)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at right 80ex)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at 70ex bottom)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at center 60ex)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at 60ex center)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at left 50% top 50ex)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at left 50ex top 50%)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at left 50ex top 50ex)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at left 50ex bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at top 50% left 50ex)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at top 50ex left 50%)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at top 50ex left 50ex)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at top 50ex right 80%)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at bottom 70% left 50ex)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at bottom 70% right 80ex)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at bottom 70ex right 80%)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at right 80% top 50ex)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at right 80% bottom 70ex)]
+    expected: FAIL
+
+  [test unit (inline): ex - circle(at right 80ex bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at 50ch)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at left 50ch)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at 50ch top)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at right 80ch)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at 70ch bottom)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at center 60ch)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at 60ch center)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at left 50% top 50ch)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at left 50ch top 50%)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at left 50ch top 50ch)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at left 50ch bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at top 50% left 50ch)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at top 50ch left 50%)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at top 50ch left 50ch)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at top 50ch right 80%)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at bottom 70% left 50ch)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at bottom 70% right 80ch)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at bottom 70ch right 80%)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at right 80% top 50ch)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at right 80% bottom 70ch)]
+    expected: FAIL
+
+  [test unit (inline): ch - circle(at right 80ch bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at 50rem)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at left 50rem)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at 50rem top)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at right 80rem)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at 70rem bottom)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at center 60rem)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at 60rem center)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at left 50% top 50rem)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at left 50rem top 50%)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at left 50rem top 50rem)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at left 50rem bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at top 50% left 50rem)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at top 50rem left 50%)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at top 50rem left 50rem)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at top 50rem right 80%)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at bottom 70% left 50rem)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at bottom 70% right 80rem)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at bottom 70rem right 80%)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at right 80% top 50rem)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at right 80% bottom 70rem)]
+    expected: FAIL
+
+  [test unit (inline): rem - circle(at right 80rem bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at 50vw)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at left 50vw)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at 50vw top)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at right 80vw)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at 70vw bottom)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at center 60vw)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at 60vw center)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at left 50% top 50vw)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at left 50vw top 50%)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at left 50vw top 50vw)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at left 50vw bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at top 50% left 50vw)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at top 50vw left 50%)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at top 50vw left 50vw)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at top 50vw right 80%)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at bottom 70% left 50vw)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at bottom 70% right 80vw)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at bottom 70vw right 80%)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at right 80% top 50vw)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at right 80% bottom 70vw)]
+    expected: FAIL
+
+  [test unit (inline): vw - circle(at right 80vw bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at 50vh)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at left 50vh)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at 50vh top)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at right 80vh)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at 70vh bottom)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at center 60vh)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at 60vh center)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at left 50% top 50vh)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at left 50vh top 50%)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at left 50vh top 50vh)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at left 50vh bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at top 50% left 50vh)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at top 50vh left 50%)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at top 50vh left 50vh)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at top 50vh right 80%)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at bottom 70% left 50vh)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at bottom 70% right 80vh)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at bottom 70vh right 80%)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at right 80% top 50vh)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at right 80% bottom 70vh)]
+    expected: FAIL
+
+  [test unit (inline): vh - circle(at right 80vh bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at 50vmin)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at left 50vmin)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at 50vmin top)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at right 80vmin)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at 70vmin bottom)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at center 60vmin)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at 60vmin center)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at left 50% top 50vmin)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at left 50vmin top 50%)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at left 50vmin top 50vmin)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at left 50vmin bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at top 50% left 50vmin)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at top 50vmin left 50%)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at top 50vmin left 50vmin)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at top 50vmin right 80%)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at bottom 70% left 50vmin)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at bottom 70% right 80vmin)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at bottom 70vmin right 80%)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at right 80% top 50vmin)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at right 80% bottom 70vmin)]
+    expected: FAIL
+
+  [test unit (inline): vmin - circle(at right 80vmin bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at 50vmax)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at left 50vmax)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at 50vmax top)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at right 80vmax)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at 70vmax bottom)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at center 60vmax)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at 60vmax center)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at left 50% top 50vmax)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at left 50vmax top 50%)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at left 50vmax top 50vmax)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at left 50vmax bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at top 50% left 50vmax)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at top 50vmax left 50%)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at top 50vmax left 50vmax)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at top 50vmax right 80%)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at bottom 70% left 50vmax)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at bottom 70% right 80vmax)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at bottom 70vmax right 80%)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at right 80% top 50vmax)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at right 80% bottom 70vmax)]
+    expected: FAIL
+
+  [test unit (inline): vmax - circle(at right 80vmax bottom 70%)]
+    expected: FAIL
+
--- a/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-005.html.ini
+++ b/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-005.html.ini
@@ -10,8 +10,47 @@
       if debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
       if debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
       if not debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
       if not debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
       if debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): PASS
       if not debug and not webrender and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): PASS
       FAIL
 
+  [test unit: cm - circle(50cm) - inline]
+    expected: FAIL
+
+  [test unit: mm - circle(50mm) - inline]
+    expected: FAIL
+
+  [test unit: in - circle(50in) - inline]
+    expected: FAIL
+
+  [test unit: pt - circle(50pt) - inline]
+    expected: FAIL
+
+  [test unit: pc - circle(50pc) - inline]
+    expected: FAIL
+
+  [test unit: em - circle(50em) - inline]
+    expected: FAIL
+
+  [test unit: ex - circle(50ex) - inline]
+    expected: FAIL
+
+  [test unit: ch - circle(50ch) - inline]
+    expected: FAIL
+
+  [test unit: rem - circle(50rem) - inline]
+    expected: FAIL
+
+  [test unit: vw - circle(50vw) - inline]
+    expected: FAIL
+
+  [test unit: vh - circle(50vh) - inline]
+    expected: FAIL
+
+  [test unit: vmin - circle(50vmin) - inline]
+    expected: FAIL
+
+  [test unit: vmax - circle(50vmax) - inline]
+    expected: FAIL
+
--- a/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-006.html.ini
+++ b/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-006.html.ini
@@ -1,4 +1,28 @@
 [shape-outside-circle-006.html]
   [circle(+20.340px) - computed]
     expected: FAIL
 
+  [circle(+10px) - inline]
+    expected: FAIL
+
+  [circle(+10.00px) - inline]
+    expected: FAIL
+
+  [circle(+20.340px) - inline]
+    expected: FAIL
+
+  [circle(+30.5px) - inline]
+    expected: FAIL
+
+  [circle(+10%) - inline]
+    expected: FAIL
+
+  [circle(+10.00%) - inline]
+    expected: FAIL
+
+  [circle(+20.350%) - inline]
+    expected: FAIL
+
+  [circle(+30.5%) - inline]
+    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
@@ -51,8 +51,44 @@
     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
+
+  [circle(at -50%) - inline]
+    expected: FAIL
+
+  [circle(at left +50px) - inline]
+    expected: FAIL
+
+  [circle(at left +50%) - inline]
+    expected: FAIL
+
+  [circle(at right -50px) - inline]
+    expected: FAIL
+
+  [circle(at right -50%) - inline]
+    expected: FAIL
+
+  [circle(at +50px top) - inline]
+    expected: FAIL
+
+  [circle(at +50% top) - inline]
+    expected: FAIL
+
+  [circle(at -50px bottom) - inline]
+    expected: FAIL
+
+  [circle(at -50% bottom) - inline]
+    expected: FAIL
+
--- a/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-010.html.ini
+++ b/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-circle-010.html.ini
@@ -1,4 +1,22 @@
 [shape-outside-circle-010.html]
   [circle(calc((12.5%*6 + 10in) / 4)) - inline style]
     expected: FAIL
 
+  [circle(calc(100%/4)) - inline style]
+    expected: FAIL
+
+  [circle(calc(10in)) - inline style]
+    expected: FAIL
+
+  [circle(calc(25%*3)) - inline style]
+    expected: FAIL
+
+  [circle(calc(10in + 20px)) - inline style]
+    expected: FAIL
+
+  [circle(calc(30%)) - inline style]
+    expected: FAIL
+
+  [circle(calc(25%*3 - 10in)) - inline style]
+    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
@@ -18,8 +18,26 @@
     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
+
+  [circle(at calc(100%/4)) - inline style]
+    expected: FAIL
+
+  [circle(at calc(25%*3)) - inline style]
+    expected: FAIL
+
+  [circle(at calc(25%*3 - 10in)) - inline style]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-000.html.ini
@@ -0,0 +1,7 @@
+[shape-outside-ellipse-000.html]
+  [No arguments - inline]
+    expected: FAIL
+
+  [Radial arguments - inline]
+    expected: FAIL
+
--- a/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-001.html.ini
+++ b/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-001.html.ini
@@ -36,8 +36,53 @@
     expected: FAIL
 
   [ellipse(25px closest-side) - computed]
     expected: FAIL
 
   [ellipse(farthest-side closest-side) - computed]
     expected: FAIL
 
+  [ellipse(25px farthest-side) - inline]
+    expected: FAIL
+
+  [ellipse(closest-side farthest-side) - inline]
+    expected: FAIL
+
+  [ellipse(25% farthest-side) - inline]
+    expected: FAIL
+
+  [ellipse(closest-side closest-side) - inline]
+    expected: FAIL
+
+  [ellipse() - inline]
+    expected: FAIL
+
+  [ellipse(25% 50px) - inline]
+    expected: FAIL
+
+  [ellipse(farthest-side 75%) - inline]
+    expected: FAIL
+
+  [ellipse(closest-side 75%) - inline]
+    expected: FAIL
+
+  [ellipse(closest-side 75px) - inline]
+    expected: FAIL
+
+  [ellipse(farthest-side farthest-side) - inline]
+    expected: FAIL
+
+  [ellipse(farthest-side 75px) - inline]
+    expected: FAIL
+
+  [ellipse(50px 25%) - inline]
+    expected: FAIL
+
+  [ellipse(50px 100px) - inline]
+    expected: FAIL
+
+  [ellipse(25% 50%) - inline]
+    expected: FAIL
+
+  [ellipse(100px 100px) - inline]
+    expected: FAIL
+
--- a/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-002.html.ini
+++ b/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-002.html.ini
@@ -36,8 +36,182 @@
     expected: FAIL
 
   [ellipse(at right 80px bottom 70%) serializes as ellipse(at right 80px top 30%) - computed]
     expected: FAIL
 
   [ellipse(at right 80px bottom 70px) serializes as ellipse(at right 80px bottom 70px) - computed]
     expected: FAIL
 
+  [ellipse(at 50%) serializes as ellipse(at 50% 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at 50px) serializes as ellipse(at 50px 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at left) serializes as ellipse(at 0% 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at top) serializes as ellipse(at 50% 0%) - inline]
+    expected: FAIL
+
+  [ellipse(at right) serializes as ellipse(at 100% 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at bottom) serializes as ellipse(at 50% 100%) - inline]
+    expected: FAIL
+
+  [ellipse(at center) serializes as ellipse(at 50% 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at left top) serializes as ellipse(at 0% 0%) - inline]
+    expected: FAIL
+
+  [ellipse(at left bottom) serializes as ellipse(at 0% 100%) - inline]
+    expected: FAIL
+
+  [ellipse(at left center) serializes as ellipse(at 0% 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at top left) serializes as ellipse(at 0% 0%) - inline]
+    expected: FAIL
+
+  [ellipse(at top right) serializes as ellipse(at 100% 0%) - inline]
+    expected: FAIL
+
+  [ellipse(at top center) serializes as ellipse(at 50% 0%) - inline]
+    expected: FAIL
+
+  [ellipse(at right top) serializes as ellipse(at 100% 0%) - inline]
+    expected: FAIL
+
+  [ellipse(at right bottom) serializes as ellipse(at 100% 100%) - inline]
+    expected: FAIL
+
+  [ellipse(at right center) serializes as ellipse(at 100% 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at bottom left) serializes as ellipse(at 0% 100%) - inline]
+    expected: FAIL
+
+  [ellipse(at bottom right) serializes as ellipse(at 100% 100%) - inline]
+    expected: FAIL
+
+  [ellipse(at bottom center) serializes as ellipse(at 50% 100%) - inline]
+    expected: FAIL
+
+  [ellipse(at center top) serializes as ellipse(at 50% 0%) - inline]
+    expected: FAIL
+
+  [ellipse(at center left) serializes as ellipse(at 0% 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at center right) serializes as ellipse(at 100% 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at center bottom) serializes as ellipse(at 50% 100%) - inline]
+    expected: FAIL
+
+  [ellipse(at center center) serializes as ellipse(at 50% 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at left 50%) serializes as ellipse(at 0% 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at left 50px) serializes as ellipse(at 0% 50px) - inline]
+    expected: FAIL
+
+  [ellipse(at 50% top) serializes as ellipse(at 50% 0%) - inline]
+    expected: FAIL
+
+  [ellipse(at 50px top) serializes as ellipse(at 50px 0%) - inline]
+    expected: FAIL
+
+  [ellipse(at right 80%) serializes as ellipse(at 100% 80%) - inline]
+    expected: FAIL
+
+  [ellipse(at right 80px) serializes as ellipse(at 100% 80px) - inline]
+    expected: FAIL
+
+  [ellipse(at 70% bottom) serializes as ellipse(at 70% 100%) - inline]
+    expected: FAIL
+
+  [ellipse(at 70px bottom) serializes as ellipse(at 70px 100%) - inline]
+    expected: FAIL
+
+  [ellipse(at center 60%) serializes as ellipse(at 50% 60%) - inline]
+    expected: FAIL
+
+  [ellipse(at center 60px) serializes as ellipse(at 50% 60px) - inline]
+    expected: FAIL
+
+  [ellipse(at 60% center) serializes as ellipse(at 60% 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at 60px center) serializes as ellipse(at 60px 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at left 50% top 50%) serializes as ellipse(at 50% 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at left 50% top 50px) serializes as ellipse(at 50% 50px) - inline]
+    expected: FAIL
+
+  [ellipse(at left 50% bottom 70%) serializes as ellipse(at 50% 30%) - inline]
+    expected: FAIL
+
+  [ellipse(at left 50px top 50%) serializes as ellipse(at 50px 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at left 50px top 50px) serializes as ellipse(at 50px 50px) - inline]
+    expected: FAIL
+
+  [ellipse(at left 50px bottom 70%) serializes as ellipse(at 50px 30%) - inline]
+    expected: FAIL
+
+  [ellipse(at top 50% left 50%) serializes as ellipse(at 50% 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at top 50% left 50px) serializes as ellipse(at 50px 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at top 50% right 80%) serializes as ellipse(at 20% 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at top 50px left 50%) serializes as ellipse(at 50% 50px) - inline]
+    expected: FAIL
+
+  [ellipse(at top 50px left 50px) serializes as ellipse(at 50px 50px) - inline]
+    expected: FAIL
+
+  [ellipse(at top 50px right 80%) serializes as ellipse(at 20% 50px) - inline]
+    expected: FAIL
+
+  [ellipse(at bottom 70% left 50%) serializes as ellipse(at 50% 30%) - inline]
+    expected: FAIL
+
+  [ellipse(at bottom 70% left 50px) serializes as ellipse(at 50px 30%) - inline]
+    expected: FAIL
+
+  [ellipse(at bottom 70% right 80%) serializes as ellipse(at 20% 30%) - inline]
+    expected: FAIL
+
+  [ellipse(at bottom 70% right 80px) serializes as ellipse(at right 80px top 30%) - inline]
+    expected: FAIL
+
+  [ellipse(at bottom 70px right 80%) serializes as ellipse(at left 20% bottom 70px) - inline]
+    expected: FAIL
+
+  [ellipse(at right 80% top 50%) serializes as ellipse(at 20% 50%) - inline]
+    expected: FAIL
+
+  [ellipse(at right 80% top 50px) serializes as ellipse(at 20% 50px) - inline]
+    expected: FAIL
+
+  [ellipse(at right 80% bottom 70%) serializes as ellipse(at 20% 30%) - inline]
+    expected: FAIL
+
+  [ellipse(at right 80% bottom 70px) serializes as ellipse(at left 20% bottom 70px) - inline]
+    expected: FAIL
+
+  [ellipse(at right 80px bottom 70%) serializes as ellipse(at right 80px top 30%) - inline]
+    expected: FAIL
+
--- a/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-004.html.ini
+++ b/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-004.html.ini
@@ -857,8 +857,827 @@
     expected: FAIL
 
   [test unit (computed): mm - ellipse(at right 80mm bottom 70mm)]
     expected: FAIL
 
   [test unit (computed): rem - ellipse(at right 80rem top 50%)]
     expected: FAIL
 
+  [test unit (inline): cm - ellipse(at right 80cm)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at left 50mm bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at left 50in bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at left 50mm)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at top 50pt left 50pt)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at 50ex top)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at top 50% left 50pt)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at center 60vw)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at right 80em)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at left 50mm top 50mm)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at top 50cm left 50cm)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at left 50in top 50%)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at right 80rem)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at bottom 70mm right 80%)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at top 50em right 80%)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at right 80cm bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at 50mm)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at left 50vmin top 50vmin)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at left 50% top 50vh)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at top 50vh right 80%)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at right 80% top 50vw)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at left 50vw top 50vw)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at left 50% top 50in)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at left 50ex bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at left 50cm)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at left 50% top 50mm)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at 60vmin center)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at bottom 70% right 80vmin)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at right 80vh bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at bottom 70% left 50in)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at center 60pt)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at top 50ex left 50%)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at 60vmax center)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at 50pc)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at 50vmin top)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at bottom 70% left 50rem)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at top 50pc left 50%)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at right 80% bottom 70vw)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at right 80% top 50ch)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at top 50ch left 50%)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at right 80vmin)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at left 50pc top 50pc)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at left 50vmax)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at center 60ch)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at center 60vmin)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at 70cm bottom)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at right 80% bottom 70mm)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at 70mm bottom)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at right 80% bottom 70ex)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at top 50vw right 80%)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at bottom 70% left 50em)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at right 80% top 50rem)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at 70ch bottom)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at bottom 70pt right 80%)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at left 50ex top 50%)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at bottom 70% left 50cm)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at left 50pt)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at 50mm top)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at top 50vmin right 80%)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at left 50vmax top 50vmax)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at right 80ex bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at left 50vmin)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at bottom 70vh right 80%)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at left 50vmin top 50%)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at 50em top)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at 50pt top)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at top 50vmax left 50%)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at left 50% top 50vmax)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at 50cm top)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at right 80in)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at bottom 70cm right 80%)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at right 80% top 50vmax)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at left 50vmax bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at 70vmin bottom)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at left 50cm top 50%)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at bottom 70% right 80pt)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at left 50% top 50vmin)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at top 50% left 50pc)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at bottom 70% right 80cm)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at 70vw bottom)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at center 60mm)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at 50in top)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at right 80% bottom 70cm)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at 50ch)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at bottom 70% right 80ex)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at top 50% left 50in)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at bottom 70% right 80in)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at left 50% top 50vw)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at center 60ex)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at left 50in top 50in)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at left 50ch top 50ch)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at left 50mm top 50%)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at left 50vw bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at right 80% bottom 70ch)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at 60vh center)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at left 50em top 50em)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at right 80% top 50vmin)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at bottom 70% right 80em)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at top 50% left 50ex)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at left 50rem top 50rem)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at bottom 70vmax right 80%)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at right 80pc)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at right 80% top 50pc)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at top 50in left 50in)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at right 80% top 50cm)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at left 50ex)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at bottom 70% right 80vw)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at left 50vh)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at bottom 70% left 50mm)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at right 80vmax bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at center 60vmax)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at bottom 70ex right 80%)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at 60vw center)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at top 50pt right 80%)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at center 60em)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at left 50pt top 50pt)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at top 50% left 50vmin)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at left 50rem)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at bottom 70% right 80vh)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at 60ch center)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at bottom 70% left 50ch)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at right 80em bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at 50pc top)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at top 50% left 50mm)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at top 50% left 50vw)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at 70in bottom)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at 60pt center)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at bottom 70pc right 80%)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at top 50rem left 50%)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at bottom 70in right 80%)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at bottom 70% right 80mm)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at left 50cm top 50cm)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at right 80mm bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at left 50vh bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at right 80% bottom 70vh)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at top 50ch left 50ch)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at left 50in)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at bottom 70ch right 80%)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at left 50rem top 50%)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at 60em center)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at left 50vh top 50vh)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at left 50% top 50ch)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at right 80mm)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at 60in center)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at top 50% left 50ch)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at right 80% bottom 70pt)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at top 50mm right 80%)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at 70pc bottom)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at top 50% left 50vh)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at left 50pc)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at left 50% top 50cm)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at 50vw)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at top 50ch right 80%)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at top 50vh left 50%)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at bottom 70em right 80%)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at 50em)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at top 50pt left 50%)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at 60cm center)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at 50vmin)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at left 50vh top 50%)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at left 50pc top 50%)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at bottom 70% left 50ex)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at top 50vh left 50vh)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at left 50em)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at bottom 70% left 50vmin)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at 50ex)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at 60mm center)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at left 50pt top 50%)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at bottom 70% right 80vmax)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at 50vh)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at 70vmax bottom)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at top 50ex right 80%)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at top 50% left 50cm)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at 70vh bottom)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at top 50cm left 50%)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at top 50em left 50%)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at top 50vmin left 50vmin)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at 70pt bottom)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at right 80% bottom 70pc)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at right 80vmax)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at right 80% top 50mm)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at left 50vw top 50%)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at right 80% top 50pt)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at right 80vw)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at 50ch top)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at right 80pc bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at top 50in right 80%)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at top 50mm left 50mm)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at right 80% bottom 70vmin)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at left 50vmax top 50%)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at top 50vw left 50vw)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at left 50em top 50%)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at top 50vmax right 80%)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at bottom 70% right 80rem)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at left 50cm bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at left 50em bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at top 50ex left 50ex)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at left 50ch bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at left 50% top 50rem)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at top 50vmin left 50%)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at left 50ex top 50ex)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at top 50rem left 50rem)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at right 80rem bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at right 80in bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at 60ex center)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at bottom 70% left 50vw)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at right 80% bottom 70em)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at right 80% top 50in)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at right 80vmin bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at top 50% left 50em)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at top 50in left 50%)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at right 80ch)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at right 80vh)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at top 50% left 50vmax)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at top 50cm right 80%)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at right 80ex)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at center 60in)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at right 80% bottom 70in)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at top 50% left 50rem)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at 60rem center)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at left 50% top 50ex)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at left 50pt bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at left 50vmin bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at right 80ch bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at bottom 70rem right 80%)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at left 50vw)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at right 80% top 50ex)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at bottom 70% right 80pc)]
+    expected: FAIL
+
+  [test unit (inline): vmin - ellipse(at bottom 70vmin right 80%)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at left 50% top 50pc)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at bottom 70vw right 80%)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at left 50% top 50pt)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at center 60cm)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at 60pc center)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at left 50rem bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at 50rem top)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at right 80% top 50vh)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at center 60vh)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at top 50pc left 50pc)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at bottom 70% left 50vh)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at right 80% bottom 70rem)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at center 60pc)]
+    expected: FAIL
+
+  [test unit (inline): mm - ellipse(at top 50mm left 50%)]
+    expected: FAIL
+
+  [test unit (inline): ex - ellipse(at 70ex bottom)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at right 80pt bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at right 80pt)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at left 50ch)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at top 50vw left 50%)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at bottom 70% left 50vmax)]
+    expected: FAIL
+
+  [test unit (inline): in - ellipse(at 50in)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at 70em bottom)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at right 80% top 50em)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at top 50rem right 80%)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at top 50vmax left 50vmax)]
+    expected: FAIL
+
+  [test unit (inline): cm - ellipse(at 50cm)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at 50vw top)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at right 80% bottom 70vmax)]
+    expected: FAIL
+
+  [test unit (inline): vw - ellipse(at right 80vw bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at 50rem)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at center 60rem)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at bottom 70% left 50pc)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at top 50pc right 80%)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at 50vmax top)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at top 50em left 50em)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at left 50ch top 50%)]
+    expected: FAIL
+
+  [test unit (inline): vh - ellipse(at 50vh top)]
+    expected: FAIL
+
+  [test unit (inline): rem - ellipse(at 70rem bottom)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at 50pt)]
+    expected: FAIL
+
+  [test unit (inline): vmax - ellipse(at 50vmax)]
+    expected: FAIL
+
+  [test unit (inline): pt - ellipse(at bottom 70% left 50pt)]
+    expected: FAIL
+
+  [test unit (inline): pc - ellipse(at left 50pc bottom 70%)]
+    expected: FAIL
+
+  [test unit (inline): ch - ellipse(at bottom 70% right 80ch)]
+    expected: FAIL
+
+  [test unit (inline): em - ellipse(at left 50% top 50em)]
+    expected: FAIL
+
--- a/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-005.html.ini
+++ b/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-005.html.ini
@@ -262,8 +262,281 @@
     expected: FAIL
 
   [test unit: vmax - ellipse(50vmax) - computed]
     expected: FAIL
 
   [test unit: vmax - ellipse(25vmax closest-side) - computed]
     expected: FAIL
 
+  [test unit: vmin - ellipse(50vmin 100vmin) - inline]
+    expected: FAIL
+
+  [test unit: pt - ellipse(50pt 100pt) - inline]
+    expected: FAIL
+
+  [test unit: vw - ellipse(farthest-side 75vw) - inline]
+    expected: FAIL
+
+  [test unit: vh - ellipse(25vh farthest-side) - inline]
+    expected: FAIL
+
+  [test unit: vmin - ellipse(25% 50vmin) - inline]
+    expected: FAIL
+
+  [test unit: ch - ellipse(100ch 100px) - inline]
+    expected: FAIL
+
+  [test unit: em - ellipse(50em 25%) - inline]
+    expected: FAIL
+
+  [test unit: ch - ellipse(farthest-side 75ch) - inline]
+    expected: FAIL
+
+  [test unit: mm - ellipse(25% 50mm) - inline]
+    expected: FAIL
+
+  [test unit: cm - ellipse(closest-side 75cm) - inline]
+    expected: FAIL
+
+  [test unit: pc - ellipse(25% 50pc) - inline]
+    expected: FAIL
+
+  [test unit: in - ellipse(100in 100px) - inline]
+    expected: FAIL
+
+  [test unit: in - ellipse(25in farthest-side) - inline]
+    expected: FAIL
+
+  [test unit: cm - ellipse(100cm 100px) - inline]
+    expected: FAIL
+
+  [test unit: em - ellipse(25em farthest-side) - inline]
+    expected: FAIL
+
+  [test unit: vw - ellipse(50vw 100vw) - inline]
+    expected: FAIL
+
+  [test unit: vmin - ellipse(closest-side 75vmin) - inline]
+    expected: FAIL
+
+  [test unit: pc - ellipse(farthest-side 75pc) - inline]
+    expected: FAIL
+
+  [test unit: vh - ellipse(25% 50vh) - inline]
+    expected: FAIL
+
+  [test unit: cm - ellipse(25cm farthest-side) - inline]
+    expected: FAIL
+
+  [test unit: vmax - ellipse(farthest-side 75vmax) - inline]
+    expected: FAIL
+
+  [test unit: cm - ellipse(farthest-side 75cm) - inline]
+    expected: FAIL
+
+  [test unit: ex - ellipse(50ex 100ex) - inline]
+    expected: FAIL
+
+  [test unit: in - ellipse(50in 25%) - inline]
+    expected: FAIL
+
+  [test unit: ch - ellipse(closest-side 75ch) - inline]
+    expected: FAIL
+
+  [test unit: vw - ellipse(25vw farthest-side) - inline]
+    expected: FAIL
+
+  [test unit: pc - ellipse(100pc 100px) - inline]
+    expected: FAIL
+
+  [test unit: vw - ellipse(25% 50vw) - inline]
+    expected: FAIL
+
+  [test unit: vw - ellipse(closest-side 75vw) - inline]
+    expected: FAIL
+
+  [test unit: vw - ellipse(100vw 100px) - inline]
+    expected: FAIL
+
+  [test unit: pt - ellipse(closest-side 75pt) - inline]
+    expected: FAIL
+
+  [test unit: rem - ellipse(closest-side 75rem) - inline]
+    expected: FAIL
+
+  [test unit: em - ellipse(100em 100px) - inline]
+    expected: FAIL
+
+  [test unit: mm - ellipse(100mm 100px) - inline]
+    expected: FAIL
+
+  [test unit: ch - ellipse(50ch 100ch) - inline]
+    expected: FAIL
+
+  [test unit: rem - ellipse(50rem 100rem) - inline]
+    expected: FAIL
+
+  [test unit: pc - ellipse(50pc 100pc) - inline]
+    expected: FAIL
+
+  [test unit: rem - ellipse(100rem 100px) - inline]
+    expected: FAIL
+
+  [test unit: in - ellipse(closest-side 75in) - inline]
+    expected: FAIL
+
+  [test unit: vmax - ellipse(50vmax 25%) - inline]
+    expected: FAIL
+
+  [test unit: mm - ellipse(farthest-side 75mm) - inline]
+    expected: FAIL
+
+  [test unit: pt - ellipse(100pt 100px) - inline]
+    expected: FAIL
+
+  [test unit: vmin - ellipse(100vmin 100px) - inline]
+    expected: FAIL
+
+  [test unit: in - ellipse(25% 50in) - inline]
+    expected: FAIL
+
+  [test unit: pc - ellipse(closest-side 75pc) - inline]
+    expected: FAIL
+
+  [test unit: in - ellipse(50in 100in) - inline]
+    expected: FAIL
+
+  [test unit: ex - ellipse(50ex 25%) - inline]
+    expected: FAIL
+
+  [test unit: in - ellipse(farthest-side 75in) - inline]
+    expected: FAIL
+
+  [test unit: pc - ellipse(50pc 25%) - inline]
+    expected: FAIL
+
+  [test unit: vmax - ellipse(25vmax farthest-side) - inline]
+    expected: FAIL
+
+  [test unit: vh - ellipse(50vh 100vh) - inline]
+    expected: FAIL
+
+  [test unit: rem - ellipse(25% 50rem) - inline]
+    expected: FAIL
+
+  [test unit: cm - ellipse(25% 50cm) - inline]
+    expected: FAIL
+
+  [test unit: ex - ellipse(25ex farthest-side) - inline]
+    expected: FAIL
+
+  [test unit: vh - ellipse(farthest-side 75vh) - inline]
+    expected: FAIL
+
+  [test unit: pt - ellipse(50pt 25%) - inline]
+    expected: FAIL
+
+  [test unit: mm - ellipse(closest-side 75mm) - inline]
+    expected: FAIL
+
+  [test unit: mm - ellipse(50mm 25%) - inline]
+    expected: FAIL
+
+  [test unit: pt - ellipse(25% 50pt) - inline]
+    expected: FAIL
+
+  [test unit: vmax - ellipse(50vmax 100vmax) - inline]
+    expected: FAIL
+
+  [test unit: em - ellipse(closest-side 75em) - inline]
+    expected: FAIL
+
+  [test unit: mm - ellipse(50mm 100mm) - inline]
+    expected: FAIL
+
+  [test unit: ch - ellipse(25ch farthest-side) - inline]
+    expected: FAIL
+
+  [test unit: pt - ellipse(25pt farthest-side) - inline]
+    expected: FAIL
+
+  [test unit: em - ellipse(farthest-side 75em) - inline]
+    expected: FAIL
+
+  [test unit: mm - ellipse(25mm farthest-side) - inline]
+    expected: FAIL
+
+  [test unit: cm - ellipse(50cm 100cm) - inline]
+    expected: FAIL
+
+  [test unit: ex - ellipse(farthest-side 75ex) - inline]
+    expected: FAIL
+
+  [test unit: vmin - ellipse(25vmin farthest-side) - inline]
+    expected: FAIL
+
+  [test unit: pt - ellipse(farthest-side 75pt) - inline]
+    expected: FAIL
+
+  [test unit: vw - ellipse(50vw 25%) - inline]
+    expected: FAIL
+
+  [test unit: ex - ellipse(25% 50ex) - inline]
+    expected: FAIL
+
+  [test unit: vh - ellipse(100vh 100px) - inline]
+    expected: FAIL
+
+  [test unit: ex - ellipse(100ex 100px) - inline]
+    expected: FAIL
+
+  [test unit: em - ellipse(25% 50em) - inline]
+    expected: FAIL
+
+  [test unit: ch - ellipse(50ch 25%) - inline]
+    expected: FAIL
+
+  [test unit: rem - ellipse(25rem farthest-side) - inline]
+    expected: FAIL
+
+  [test unit: vh - ellipse(50vh 25%) - inline]
+    expected: FAIL
+
+  [test unit: vmin - ellipse(50vmin 25%) - inline]
+    expected: FAIL
+
+  [test unit: pc - ellipse(25pc farthest-side) - inline]
+    expected: FAIL
+
+  [test unit: vmax - ellipse(100vmax 100px) - inline]
+    expected: FAIL
+
+  [test unit: cm - ellipse(50cm 25%) - inline]
+    expected: FAIL
+
+  [test unit: ex - ellipse(closest-side 75ex) - inline]
+    expected: FAIL
+
+  [test unit: em - ellipse(50em 100em) - inline]
+    expected: FAIL
+
+  [test unit: rem - ellipse(farthest-side 75rem) - inline]
+    expected: FAIL
+
+  [test unit: ch - ellipse(25% 50ch) - inline]
+    expected: FAIL
+
+  [test unit: rem - ellipse(50rem 25%) - inline]
+    expected: FAIL
+
+  [test unit: vmax - ellipse(closest-side 75vmax) - inline]
+    expected: FAIL
+
+  [test unit: vmax - ellipse(25% 50vmax) - inline]
+    expected: FAIL
+
+  [test unit: vmin - ellipse(farthest-side 75vmin) - inline]
+    expected: FAIL
+
+  [test unit: vh - ellipse(closest-side 75vh) - inline]
+    expected: FAIL
+
--- a/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-006.html.ini
+++ b/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-006.html.ini
@@ -1,4 +1,40 @@
 [shape-outside-ellipse-006.html]
   [ellipse(+10.00px +20.230px) - computed]
     expected: FAIL
 
+  [ellipse(+30.00px 40.567px) - inline]
+    expected: FAIL
+
+  [ellipse(+10.00% +20.230%) - inline]
+    expected: FAIL
+
+  [ellipse(+10% +20%) - inline]
+    expected: FAIL
+
+  [ellipse(50.10% +60.7%) - inline]
+    expected: FAIL
+
+  [ellipse(+30.00% 40.567%) - inline]
+    expected: FAIL
+
+  [ellipse(+10px +20px) - inline]
+    expected: FAIL
+
+  [ellipse(50px +60px) - inline]
+    expected: FAIL
+
+  [ellipse(+30% 40%) - inline]
+    expected: FAIL
+
+  [ellipse(+10.00px +20.230px) - inline]
+    expected: FAIL
+
+  [ellipse(+50% +60%) - inline]
+    expected: FAIL
+
+  [ellipse(+30px 40px) - inline]
+    expected: FAIL
+
+  [ellipse(50.10px +60.7px) - inline]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-009.html.ini
@@ -0,0 +1,37 @@
+[shape-outside-ellipse-009.html]
+  [ellipse(at -50%) - inline]
+    expected: FAIL
+
+  [ellipse(at left +50px) - inline]
+    expected: FAIL
+
+  [ellipse(at -50px) - inline]
+    expected: FAIL
+
+  [ellipse(at +50px top) - inline]
+    expected: FAIL
+
+  [ellipse(at -50% bottom) - inline]
+    expected: FAIL
+
+  [ellipse(at -50px bottom) - inline]
+    expected: FAIL
+
+  [ellipse(at +50px) - inline]
+    expected: FAIL
+
+  [ellipse(at left +50%) - inline]
+    expected: FAIL
+
+  [ellipse(at right -50%) - inline]
+    expected: FAIL
+
+  [ellipse(at right -50px) - inline]
+    expected: FAIL
+
+  [ellipse(at +50%) - inline]
+    expected: FAIL
+
+  [ellipse(at +50% top) - inline]
+    expected: FAIL
+
--- a/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-010.html.ini
+++ b/testing/web-platform/meta/css/css-shapes/shape-outside/values/shape-outside-ellipse-010.html.ini
@@ -42,8 +42,44 @@
     expected: FAIL
 
   [ellipse(calc(25%*3 - 10in)) - computed style]
     expected: FAIL
 
   [ellipse(calc((12.5%*6 + 10in) / 4)) - computed style]
     expected: FAIL
 
+  [ellipse(calc(25%*3 - 10in) calc(25%*3 - 10in)) - inline style]
+    expected: FAIL
+
+  [ellipse(calc(30%) calc(30%)) - inline style]
+    expected: FAIL
+
+  [ellipse(farthest-side calc(10in + 20px)) - inline style]
+    expected: FAIL
+
+  [ellipse(calc(25%*3) calc(25%*3)) - inline style]
+    expected: FAIL
+
+  [ellipse(calc(100%/4) calc(100%/4)) - inline style]
+    expected: FAIL
+
+  [ellipse(farthest-side calc(30%)) - inline style]
+    expected: FAIL
+
+  [ellipse(farthest-side calc(25%*3)) - inline style]
+    expected: FAIL
+
+  [ellipse(calc(10in + 20px) calc(10in + 20px)) - inline style]
+    expected: FAIL
+
+  [ellipse(farthest-side calc(100%/4)) - inline style]
+    expected: FAIL
+
+  [ellipse(farthest-side calc(25%*3 - 10in)) - inline style]
+    expected: FAIL
+
+  [ellipse(calc(10in) calc(10in)) - inline style]
+    expected: FAIL
+
+  [ellipse(farthest-side calc(10in)) - inline style]
+    expected: FAIL
+