blob: 8129e14fd492c8edb3fdaad6b565998d66b31e91 [file] [log] [blame]
<html>
<head>
<meta charset="utf-8">
<script src="../resources/js-test-pre.js"></script>
<script>
if (window.testRunner)
testRunner.overridePreference("WebKitJavaEnabled", "1");
</script>
</head>
<body>
<p>Test that Java arrays work with generic JS array methods.</p>
<p>Also test that they work when passed as the second argument to apply(). This may or may not be correct behavior per LiveConnect spec.</p>
<div id="console"></div>
<applet CODE="SharedApplet.class" NAME="javaTest" WIDTH=150 HEIGHT=25 MAYSCRIPT></applet>
<script>
debug("call");
var array = document.javaTest.stringArray();
Array.prototype.sort.call(array);
shouldBe("array[0] + ''", "'One'");
shouldBe("array[1] + ''", "'Three'");
shouldBe("array[2] + ''", "'Two'");
debug("apply");
array = document.javaTest.stringArray();
Array.prototype.sort.apply(array, []);
shouldBe("array[0] + ''", "'One'");
shouldBe("array[1] + ''", "'Three'");
shouldBe("array[2] + ''", "'Two'");
function concat()
{
var result = "";
for (i = 0; i < arguments.length; ++i)
result += arguments[i];
return result;
}
debug("passing array as function arguments, potentially parser-optimized apply");
array = document.javaTest.stringArray();
shouldBe("concat.apply({}, array)", "'OneTwoThree'");
debug("passing array as function arguments, unoptimized apply");
array = document.javaTest.stringArray();
shouldBe('concat["apply"]({}, array)', "'OneTwoThree'");
shouldThrow("array.length = 5");
</script>
<script src="../resources/js-test-post.js"></script>
</body>
</html>