<!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-left-radius using one length value: 25px 0</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 either length is 0, then the corner is not rounded."/>
		<style type="text/css">
        /* <![CDATA[ */
        	div
          {
        		border:2px solid #a1a1a1;
        		background:#dddddd;
        		width:200px;
        		height: 100px;
        	}
        	#test
        	{
        		border-top-left-radius: 25px 0;
        	}
         /* ]]> */
        </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-left-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>

