<!DOCTYPE html>
<html>
    <head>
        <title>Shape Outside Ellipse Radii - positive/negative, decimal/non-decimal</title>
        <link rel="author" title="Adobe" href="http://html.adobe.com/">
        <link rel="author" title="Rebecca Hauck" href="mailto:rhauck@adobe.com">
        <link rel="reviewer" title="Alan Stearns" href="mailto:stearns@adobe.com"> <!--  2014-03-04  -->
        <link rel="help" href="http://www.w3.org/TR/css-shapes-1/#funcdef-ellipse">
        <link rel="help" href="http://www.w3.org/TR/css-shapes-1/#shape-outside-property">
        <meta name="assert" content="An ellipse's radii may be in signed positive or decimal/non-decimal format. Negative
                                     radii are invalid.">
        <meta name="flags" content="ahem dom">
        <script src="/resources/testharness.js"></script>
        <script src="/resources/testharnessreport.js"></script>
        <script src="support/parsing-utils.js"></script>
    </head>
    <body>
        <div id="log"></div>
        <script type="text/javascript">
            var valid_ellipse_radii_tests = [
                {
                  "actual": "ellipse(+10px +20px)",
                  "expected_inline": "ellipse(10px 20px at 50% 50%)",
                  "expected_computed": "ellipse(10px 20px at 50% 50%)"
                },
                {
                  "actual": "ellipse(+30px 40px)",
                  "expected_inline": "ellipse(30px 40px at 50% 50%)",
                  "expected_computed": "ellipse(30px 40px at 50% 50%)"
                },
                {
                  "actual": "ellipse(50px +60px)",
                  "expected_inline": "ellipse(50px 60px at 50% 50%)",
                  "expected_computed": "ellipse(50px 60px at 50% 50%)"
                },
                {
                  "actual": "ellipse(+10.00px +20.230px)",
                  "expected_inline": "ellipse(10px 20.23px at 50% 50%)",
                  "expected_computed": "ellipse(10px 20.23px at 50% 50%)"
                },
                {
                  "actual": "ellipse(+30.00px 40.567px)",
                  "expected_inline": "ellipse(30px 40.567px at 50% 50%)",
                  "expected_computed": "ellipse(30px 40.567px at 50% 50%)"
                },
                {
                  "actual": "ellipse(50.10px +60.7px)",
                  "expected_inline": "ellipse(50.1px 60.7px at 50% 50%)",
                  "expected_computed": "ellipse(50.1px 60.7px at 50% 50%)"
                },
                {
                  "actual": "ellipse(+10% +20%)",
                  "expected_inline": "ellipse(10% 20% at 50% 50%)",
                  "expected_computed": "ellipse(10% 20% at 50% 50%)"
                },
                {
                  "actual": "ellipse(+30% 40%)",
                  "expected_inline": "ellipse(30% 40% at 50% 50%)",
                  "expected_computed": "ellipse(30% 40% at 50% 50%)"
                },
                {
                  "actual": "ellipse(+50% +60%)",
                  "expected_inline": "ellipse(50% 60% at 50% 50%)",
                  "expected_computed": "ellipse(50% 60% at 50% 50%)"
                },
                {
                  "actual": "ellipse(+10.00% +20.230%)",
                  "expected_inline": "ellipse(10% 20.23% at 50% 50%)",
                  "expected_computed": "ellipse(10% 20.23% at 50% 50%)"
                },
                {
                  "actual": "ellipse(+30.00% 40.567%)",
                  "expected_inline": "ellipse(30% 40.567% at 50% 50%)",
                  "expected_computed": "ellipse(30% 40.567% at 50% 50%)"
                },
                {
                  "actual": "ellipse(50.10% +60.7%)",
                  "expected_inline": "ellipse(50.1% 60.7% at 50% 50%)",
                  "expected_computed": "ellipse(50.1% 60.7% at 50% 50%)"
                }
            ];
            invalid_ellipse_radii_tests = [
                {"name": "ellipse(-10px -20px)"},
                {"name": "ellipse(-30px 40px)"},
                {"name": "ellipse(50px -60px)"}
            ];
            generate_tests( ParsingUtils.testInlineStyle,
                            ParsingUtils.buildTestCases(valid_ellipse_radii_tests, "inline") );
            generate_tests( ParsingUtils.testComputedStyle,
                            ParsingUtils.buildTestCases(valid_ellipse_radii_tests, "computed") );
            generate_tests( ParsingUtils.testInlineStyle,
                            ParsingUtils.buildTestCases(invalid_ellipse_radii_tests) );
        </script>
    </body>
</html>
