<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<style>
/*
  === Warning ===

  This file intentionally contains scpecial characters which
  cannot be displayed by some text editors. Please
  carefully edit the file.
*/

/* basic */
#a61_a { color: red; }
#b61_\61 { color: green; }

#a65530_￺ { color: red; }
#b65530_\fffa { color: green; }

#a65532_￼ { color: red; }
#b65532_\fffc { color: green; }

#a65533_� { color: red; }
#b65533_\fffd { color: green; }

/* above the 0xffff */
#a65536_𐀀 { color: red; }
#b65536_\10000 { color: green; }

#a119558_𝌆 { color: red; }
#b119558_\01d306 { color: green; }
</style>

<script>

function runTest()
{
    if (window.testRunner)
        testRunner.dumpAsText();

    var rules = document.styleSheets[0].cssRules;
    var text = "";
    for (var i = 0; i < rules.length; i++) {
        text += rules.item(i).cssText;
        text += "\n";
    }

    document.getElementById("result").appendChild(document.createTextNode(text));

    if (document.getElementById("result").firstChild.data === document.getElementById("expected").firstChild.data)
        document.getElementById("message").firstChild.data = "SUCCESS";
    else
        document.getElementById("message").firstChild.data = "FAILURE";
}

</script>

</head>

<body onload="runTest()">

<p>Test parsing of CSS surrogate pairs.</p>

<p id="message">TEST DID NOT COMPLETE</p>

<p>Rules from the stylesheet:</p>

<pre id="result"></pre>

<p>Expected result:</p>

<pre id="expected">#a61_a { color: red; }
#b61_a { color: green; }
#a65530_￺ { color: red; }
#b65530_￺ { color: green; }
#a65532_￼ { color: red; }
#b65532_￼ { color: green; }
#a65533_� { color: red; }
#b65533_� { color: green; }
#a65536_𐀀 { color: red; }
#b65536_𐀀 { color: green; }
#a119558_𝌆 { color: red; }
#b119558_𝌆 { color: green; }
<script>

</script>
</body>
</html>

