<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>CSS Test: Borders. Border-top-right-radius using two length values: 50px -25px</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <meta http-equiv="Content-Style-Type" content="text/css"/>
        <meta http-equiv="Content-Script-Type" content="text/javascript"/>
        <link rel="author" title="Nokia" href="http://www.nokia.com/"/>
        <link rel="help" href="http://www.w3.org/TR/css3-background/#the-border-radius"/>
        <link rel="match" href="border-radius-001-ref.xht" />
        <meta name="flags" content=""/>
        <meta name="assert" content="To verify if one length value is negative for border-top-right-radius, then the element is not rounded."/>
        <style type="text/css">
        /* <![CDATA[ */
        	div
          {
        		border:2px solid #a1a1a1;
        		background:#dddddd;
        		width:200px;
        		height: 100px;
        	}
        	#test
        	{
        		border-top-right-radius: 50px -25px;
        	}
        /* ]]> */
        </style>
<!--
        <script type="text/javascript" src="js/css3_test_helper.js"></script>
-->
    </head>
    <body>
    	<p>
			There should be two boxes with no rounded corners.
		</p>
		<!-- PASS AND FAIL CRITERIA ARE IN THE LIST BELOW -->
				<ul>
					<li>PASS if the two boxes below are the same.</li>
					<li>FAIL if the output is not as expected.</li>
				</ul>

        <!-- PLACE TEST CONTENT FROM HERE -->
    	<div id="test"></div>
		<p><br/></p>
    	<div id="reference"></div>
<!--
    	<script type="text/javascript">
         /* <![CDATA[ */
        	var expectedBorderRadius = "0px";

        	var testResult = check_CSS_property("border-top-right-radius", expectedBorderRadius);

        	/* if (testResult.pass)
        	  // This portion of the code has been removed to ensure that the test case is not automated
        	else {
        		// This portion of the code has been removed to ensure that the test case is not automated
          } */

          if (top.FrameEnabled)	top.fnLog(testResult);
         /* ]]> */
        </script>
-->
    </body>
</html>

