<!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:  40pt 2pc</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"/>
        <meta name="flags" content=""/>
        <meta name="assert" content="To verify border-top-right-radius property sets to two length values (with different units), works fine"/>
        <style type="text/css">
        /* <![CDATA[ */
        	div
          {
        		border:2px solid #a1a1a1;
        		background:#dddddd;
        		width:200px;
        		height: 100px;
        		border-top-right-radius: 40pt 2pc;
        	}
        /* ]]> */
        </style>
<!--
        <script type="text/javascript" src="js/css3_test_helper.js"></script>
-->
    </head>
    <body>
         <p id="testdetails">
        </p>
        <p>
            There should be a box with a rounded top right corner.</p>
        <ul>
            <li>PASS if only top right corner is rounded.</li>
            <li>FAIL if the output is not as expected.</li>
        </ul>

    	<div id="test"></div>
<!--
    	<script type="text/javascript">
        /* <![CDATA[ */
        	var expectedBorderRadius = "53px 32px";

        	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>

