<!DOCTYPE html>
<html>
    <head>
        <title>Shape Outside Circle position args - calc() values</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">
        <link rel="help" href="http://www.w3.org/TR/css3-values/#calc">
        <meta name="assert" content="A circle's <position> arguments may be in calc() values.">
        <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 circle_position_calc_tests = [];
            ParsingUtils.calcTestValues.forEach(function(value) {
                testCase = ['circle(at '+ value[0] +')', 
                            'circle(at '+ value[1] +' 50%)'];
                if(Object.prototype.toString.call( value[2] ) === '[object Array]' && value[2].length == 2) {
                    testCase.push([ 'circle(at '+ value[2][0] +' 50%)',
                                    'circle(at '+ value[2][1] +' 50%)'
                                  ]);
                } else {
                    testCase.push('circle(at '+ value[2] +' 50%)');
                }
                circle_position_calc_tests.push(testCase);
            });
            generate_tests(ParsingUtils.testInlineStyle, ParsingUtils.buildCalcTests(circle_position_calc_tests, 'inline'));
            generate_tests(ParsingUtils.testComputedStyle, ParsingUtils.buildCalcTests(circle_position_calc_tests, 'computed'));
        </script>
    </body>
</html>
