Mozilla/mozilla/intl/uconv/tests/test_nsIConverterInputStream.html
smontagu%smontagu.org 5ec340ed68 Testcase for bug 340714
git-svn-id: svn://10.0.0.236/trunk@203471 18797224-902f-48f8-a5cc-f745e15eee43
2006-07-23 17:50:05 +00:00

114 lines
4.6 KiB
HTML
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<html>
<head>
<title>Test nsIConverterInputStream with UTF-16</title>
<meta http-equiv="content-type"; content="text/html; charset=utf-8">
<script type="text/javascript">
const beBOM="%FE%FF";
const leBOM="%FF%FE";
const sampleUTF16BE="%00%22%04%12%04A%045%00%20%04A%04G%040%04A%04B%04%3B%048%042%04K%045%00%20%04A%045%04%3C%04L%048%00%20%04%3F%04%3E%04E%04%3E%046%048%00%20%044%04%40%04C%043%00%20%04%3D%040%00%20%044%04%40%04C%043%040%00%2C%00%20%04%3A%040%046%044%040%04O%00%20%04%3D%045%04A%04G%040%04A%04B%04%3B%048%042%040%04O%00%20%04A%045%04%3C%04L%04O%00%20%04%3D%045%04A%04G%040%04A%04B%04%3B%048%042%040%00%20%04%3F%04%3E%00-%04A%042%04%3E%045%04%3C%04C%00.%00%22";
const sampleUTF16LE="%22%00%12%04A%045%04%20%00A%04G%040%04A%04B%04%3B%048%042%04K%045%04%20%00A%045%04%3C%04L%048%04%20%00%3F%04%3E%04E%04%3E%046%048%04%20%004%04%40%04C%043%04%20%00%3D%040%04%20%004%04%40%04C%043%040%04%2C%00%20%00%3A%040%046%044%040%04O%04%20%00%3D%045%04A%04G%040%04A%04B%04%3B%048%042%040%04O%04%20%00A%045%04%3C%04L%04O%04%20%00%3D%045%04A%04G%040%04A%04B%04%3B%048%042%040%04%20%00%3F%04%3E%04-%00A%042%04%3E%045%04%3C%04C%04.%00%22%00";
function makeText(withBOM, charset)
{
var theText = eval("sample" + charset);
if (withBOM) {
if (charset == "UTF16BE") {
theText = beBOM + theText;
} else {
theText = leBOM + theText;
}
}
return theText;
}
function testCase(withBOM, charset, charsetDec, decoder, bufferLength)
{
document.write("<tr><td>");
document.write(charset);
document.write("</td><td>");
if (withBOM)
document.write("with BOM");
else
document.write("without BOM");
document.write("</td><td>");
document.write(decoder);
document.write("</td><td>");
document.write(bufferLength);
document.write("<td>");
var dataURI = "data:text/plain;charset=" + charsetDec + "," +
makeText(withBOM, charset);
try {
var ioService = Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService);
var channel = ioService.newChannel(dataURI, "", null);
var testInputStream = channel.open();
var testConverter =
Components.classes["@mozilla.org/intl/converter-input-stream;1"].
createInstance(Components.interfaces.nsIConverterInputStream);
testConverter.init(testInputStream, decoder, bufferLength,
Components.interfaces.nsIConverterInputStream.
DEFAULT_REPLACEMENT_CHARACTER);
if (!(testConverter instanceof
Components.interfaces.nsIUnicharLineInputStream))
throw "not line input stream";
var more;
do {
// read the line and check for eof
var line = {};
more = testConverter.readLine(line);
document.write(line.value);
} while (more)
} catch (e) {
document.write("Insufficient privileges!");
}
document.write("</td></tr>\n");
}
</script>
</head>
<body>
<table border=1>
<tr>
<th colspan="2">Input file encoding</th>
<th>Decoder</th>
<th>Buffer length</th>
<th>Results</th>
<tr>
<th colspan="4">Reference rendering</td>
<td>"Все счастливые семьи похожи друг на друга, каждая несчастливая семья несчастлива по-своему."</td>
</tr>
<script type="text/javascript">
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch(e) {
}
/* BOM charset charset decoder buffer
declaration length */
testCase(true, "UTF16LE", "UTF-16", "UTF-16", 64);
testCase(true, "UTF16BE", "UTF-16", "UTF-16", 64);
testCase(true, "UTF16LE", "UTF-16", "UTF-16LE", 64);
testCase(true, "UTF16BE", "UTF-16", "UTF-16BE", 64);
testCase(false, "UTF16LE", "UTF-16", "UTF-16", 64);
testCase(false, "UTF16BE", "UTF-16", "UTF-16", 64);
testCase(false, "UTF16LE", "UTF-16", "UTF-16LE", 64);
testCase(false, "UTF16BE", "UTF-16", "UTF-16BE", 64);
testCase(true, "UTF16LE", "UTF-16", "UTF-16", 65);
testCase(true, "UTF16BE", "UTF-16", "UTF-16", 65);
testCase(true, "UTF16LE", "UTF-16", "UTF-16LE", 65);
testCase(true, "UTF16BE", "UTF-16", "UTF-16BE", 65);
testCase(false, "UTF16LE", "UTF-16", "UTF-16", 65);
testCase(false, "UTF16BE", "UTF-16", "UTF-16", 65);
testCase(false, "UTF16LE", "UTF-16", "UTF-16LE", 65);
testCase(false, "UTF16BE", "UTF-16", "UTF-16BE", 65);
</script>
</table>
</body>
</html>