<!DOCTYPE html>
<html>
    <head>
        <title>Shape Outside Circle 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-circle">
        <link rel="help" href="http://www.w3.org/TR/css-shapes-1/#shape-outside-property">
        <meta name="assert" content="A circle's radius 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_circle_radii_tests = [
                {
                  "actual": "circle(+10px)",
                  "expected_inline": "circle(10px at 50% 50%)",
                  "expected_computed": "circle(10px at 50% 50%)"
                },
                {
                  "actual": "circle(+10.00px)",
                  "expected_inline": "circle(10px at 50% 50%)",
                  "expected_computed": "circle(10px at 50% 50%)"
                },
                {
                  "actual": "circle(+20.340px)",
                  "expected_inline": "circle(20.34px at 50% 50%)",
                  "expected_computed": "circle(20.34px at 50% 50%)"
                },
                {
                  "actual": "circle(+30.5px)",
                  "expected_inline": "circle(30.5px at 50% 50%)",
                  "expected_computed": "circle(30.5px at 50% 50%)"
                },
                {
                  "actual": "circle(+10%)",
                  "expected_inline": "circle(10% at 50% 50%)",
                  "expected_computed": "circle(10% at 50% 50%)"
                },
                {
                  "actual": "circle(+10.00%)",
                  "expected_inline": "circle(10% at 50% 50%)",
                  "expected_computed": "circle(10% at 50% 50%)"
                },
                {
                  "actual": "circle(+20.350%)",
                  "expected_inline": "circle(20.35% at 50% 50%)",
                  "expected_computed": "circle(20.35% at 50% 50%)"
                },
                {
                  "actual": "circle(+30.5%)",
                  "expected_inline": "circle(30.5% at 50% 50%)",
                  "expected_computed": "circle(30.5% at 50% 50%)"
                }
            ];
            invalid_circle_radii_tests = [
                {"name": "circle(-20px)"},
                {"name": "circle(-20.340px)"}
            ];
            generate_tests( ParsingUtils.testInlineStyle,
                            ParsingUtils.buildTestCases(valid_circle_radii_tests, 'inline') );
            generate_tests( ParsingUtils.testComputedStyle,
                            ParsingUtils.buildTestCases(valid_circle_radii_tests, 'computed') );
            generate_tests( ParsingUtils.testInlineStyle,
                            ParsingUtils.buildTestCases(invalid_circle_radii_tests) );
        </script>
    </body>
</html>
