<!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-bottom-left-radius using 0 value</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 the border-bottom-left-radius property, when set with 0, works as expected" />
        <style type="text/css">
        /* <![CDATA[ */
        	div
			{
        		border:2px solid #a1a1a1;
        		background:#dddddd;
        		width:200px;
        		height: 100px;
        	}
        	#test
        	{
        		border-bottom-left-radius: 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-bottom-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>

