<html>
<head>
<script src="../htmlrunner.js"></script>
<script>
window.onload = function(){ startTest("dromaeo-object-string", 'b5657afe');

// Try to force real results
var ret;
var num = 80000;

// TESTS: String concatenation

	test( "Concat String", function(){
		var str = "";
		for ( var i = 0; i < num; i++ )
			str += "a";
		ret = str;
	});

	test( "Concat String Object", function(){
		var str = new String();
		for ( var i = 0; i < num; i++ )
			str += "a";
		ret = str;
	});

	test( "Concat String from charCode", function(){
		var str = "";
		for ( var i = 0; i < num / 2; i++ )
			str += String.fromCharCode(97);
		ret = str;
	});

	test( "Array String Join", function(){
		var str = [];
		for ( var i = 0; i < num / 2; i++ )
			str.push("a");
		ret = str.join("");
	});

var ostr = [], tmp, num = 5000, tmpstr;

for ( var i = 0; i < 16384; i++ )
	ostr.push( String.fromCharCode( (25 * Math.random()) + 97 ) );

ostr = ostr.join("");
ostr += ostr;
ostr += ostr;

var str;
var i = 52288;

	prep(function(){
		str = new String(ostr);
	});

	// TESTS: split
	test( "String Split", function(){
		ret = str.split("");
	});

	prep(function(){
		tmpstr = str;
		tmpstr += tmpstr;
		tmpstr += tmpstr;
		tmpstr += tmpstr;
		tmpstr += tmpstr;
	});

	test( "String Split on Char", function(){
		ret = tmpstr.split("a");
	});

	prep(function(){
		str += str;
	});

	// TESTS: characters

	test( "charAt", function(){
		for ( var j = 0; j < num; j++ ) {
			ret = str.charAt(0);
			ret = str.charAt(str.length - 1);
			ret = str.charAt( 15000 );
			ret = str.charAt( 12000 );
		}
	});

	test( "[Number]", function(){
		for ( var j = 0; j < num; j++ ) {
			ret = str[0];
			ret = str[str.length - 1];
			ret = str[ 15000 ];
			ret = str[ 10000 ];
			ret = str[ 5000 ];
		}
	});

	test( "charCodeAt", function(){
		for ( var j = 0; j < num; j++ ) {
			ret = str.charCodeAt(0);
			ret = str.charCodeAt(str.length - 1);
			ret = str.charCodeAt( 15000 );
			ret = str.charCodeAt( 10000 );
			ret = str.charCodeAt( 5000 );
		}
	});

	// TESTS: indexOf

	test( "indexOf", function(){
		for ( var j = 0; j < num; j++ ) {
			ret = str.indexOf("a");
			ret = str.indexOf("b");
			ret = str.indexOf("c");
			ret = str.indexOf("d");
		}
	});

	test( "lastIndexOf", function(){
		for ( var j = 0; j < num; j++ ) {
			ret = str.lastIndexOf("a");
			ret = str.lastIndexOf("b");
			ret = str.lastIndexOf("c");
			ret = str.lastIndexOf("d");
		}
	});

	// TESTS: slice

	test( "slice", function(){
		for ( var j = 0; j < num; j++ ) {
			ret = str.slice(0);
			ret = str.slice(0,5);
			ret = str.slice(-1);
			ret = str.slice(-6,-1);
			ret = str.slice( 15000, 15005 );
			ret = str.slice( 12000, -1 );
		}
	});

	// TESTS: substr

	test( "substr", function(){
		for ( var j = 0; j < num; j++ ) {
			ret = str.substr(0);
			ret = str.substr(0,5);
			ret = str.substr(-1);
			ret = str.substr(-6,1);
			ret = str.substr( 15000, 5 );
			ret = str.substr( 12000, 5 );
		}
	});

	// TESTS: substring

	test( "substring", function(){
		for ( var j = 0; j < num; j++ ) {
			ret = str.substring(0);
			ret = str.substring(0,5);
			ret = str.substring(-1);
			ret = str.substring(-6,-1);
			ret = str.substring( 15000, 15005 );
			ret = str.substring( 12000, -1 );
		}
	});

	// TESTS: toLower/UpperCase

	test( "toLowerCase", function(){
		for ( var j = 0; j < num / 1000; j++ ) {
			ret = str.toLowerCase();
		}
	});

	test( "toUpperCase", function(){
		for ( var j = 0; j < num / 1000; j++ ) {
			ret = str.toUpperCase();
		}
	});

	// TESTS: comparing

	test( "comparing", function(){
		var tmp = str + "a";
		for ( var j = 0; j < num / 1000; j++ ) {
			ret = str == tmp;
			ret = str < tmp;
			ret = str > tmp;
		}
	});

endTest(); };
</script>
</head>
<body></body>
</html>
