<!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="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>
