﻿<!DOCTYPE html PUBLIC "-//W3C//DTD//XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
 Internet Explorer Test Pages Copyright © 2012 Microsoft Corporation. All rights reserved.

 Redistribution and use in source and binary forms, with or without modification,
 are permitted provided that the following conditions are met:

 Redistributions of source code must retain the above copyright notice, this list of
 conditions and the following disclaimer.

 Redistributions in binary form must reproduce the above copyright notice, this list of
 conditions and the following disclaimer in the documentation and/or other materials
 provided with the distribution.

 Neither the name of the Microsoft Corporation nor the names of its contributors may be
 used to endorse or promote products derived from this software without specific prior
 written permission.

 THIS SOFTWARE IS PROVIDED BY MICROSOFT CORPORATION "AS IS" AND ANY EXPRESS OR IMPLIED
 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MICROSOFT CORPORATION
 BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGE.
-->

<!-- This test case has been modified to use 20px instead of 16px font-size to work
     around font rendering issues for the Ahem font in Blink. -->

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>CSS Test: All unit and function values</title>
        <script src="../../../resources/ahem.js"></script>
        <link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
        <link rel="help" href="http://www.w3.org/TR/CSS21/" />
        <meta name="flags" content="" />
        <meta name="assert" content="Verifying that all unit values and functions are supported." />
        <style type="text/css">
            html { font-size: 20px; }
            body { font-size: 16px; }
            body div
            {
                font: 20px/1em Ahem;
                color: green;
                height: 20px;
            }
            #parent
            {
                height: 340px;
            }
            #parent
            {
                background: red;
                position: relative;
                overflow: hidden;
                width: 1.25in;
            }
            #div1:before
            {
                color: green;
                counter-increment: div1 123456;
                content: counter(div1);
            }
            #div2
            {
                border-right: solid green 3.175cm;
                height: 20px;
                width: 0;
            }
            #div3
            {
                border-right: solid green 31.75mm;
                height: 20px;
                width: 0;
            }
            #div4
            {
                border-right: solid green 1.25in;
                height: 20px;
                width: 0;
            }
            #div5
            {
                border-right: solid green 90pt;
                height: 20px;
                width: 0;
            }
            #div6
            {
                border-right: solid green 7.5pc;
                height: 20px;
                width: 0;
            }
            #div7
            {
                border-right: solid green 6em;
                height: 20px;
                width: 0;
            }
            #div8
            {
                border-right: solid green 7.5ex;
                height: 20px;
                width: 0;
            }
            #div9
            {
                border-right: solid green 6rem;
                height: 20px;
                width: 0;
            }
            #div10
            {
                border-right: solid green 100vw;
                height: 20px;
                width: 0;
            }
            #div11
            {
                border-right: solid green 100vh;
                height: 20px;
                width: 0;
            }
            #div12
            {
                border-right: solid green 100vmin;
                height: 20px;
                width: 0;
            }
            #div13
            {
                border-right: solid green 6ch;
                height: 20px;
                width: 0;
            }
            #div14
            {
                border-right: solid green calc(0.625in*2);
                height: 20px;
                width: 0;
            }
            #div15:before
            {
                color: green;
                content: "123456";
            }
            #div16
            {
                width: 0.625in;
            }
            #div16 div
            {
                background: green;
                height: 20px;
                width: 200%;
            }
            #div17:before
            {
                color: green;
                content: attr(align);
            }
        </style>
    </head>
    <body>
        <p>Test passes if there is no red visible on the page.</p>
        <div id="parent">
            <div id="div1"></div>
            <div id="div2"></div>
            <div id="div3"></div>
            <div id="div4"></div>
            <div id="div5"></div>
            <div id="div6"></div>
            <div id="div7"></div>
            <div id="div8"></div>
            <div id="div9"></div>
            <div id="div10"></div>
            <div id="div11"></div>
            <div id="div12"></div>
            <div id="div13"></div>
            <div id="div14"></div>
            <div id="div15"></div>
            <div id="div16"><div></div></div>
            <div align="div17a" id="div17"></div>
        </div>
    </body>
</html>
