blob: 2820beb83e0ea96eb37ace8f489f162bf678a077 [file] [log] [blame]
<html>
<head>
<script src="../../resources/js-test.js"></script>
<script src="resources/scripted-random.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description("This test fuzzes the length list parser with semi-random attribute values and dumps the results of any values that parse successfully.");
var characters = [
"0",
// Long numeric string to force crossing page boundaries.
"-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
".",
"e",
"+",
"-",
",",
" ",
"\t"
];
var textElement = document.createElementNS("http://www.w3.org/2000/svg", "text");
function parseLengthList(string)
{
textElement.setAttributeNS(null, "x", string);
var lengthList = textElement.x.baseVal;
if (!lengthList.numberOfItems)
return;
var debugStr = "Parsed as " + lengthList.numberOfItems + " length(s)";
debugStr += " [ ";
for (var i = 0; i < lengthList.numberOfItems; i++) { //>
debugStr += lengthList.getItem(i).valueAsString;
if (i < lengthList.numberOfItems - 1) //>
debugStr += ", ";
}
debugStr += " ]";
debugStr += ": " + string;
debug(debugStr);
}
function fuzz()
{
// Random assortments of valid characters
for (var i = 0; i < 250; i++) { //>
var lengthList = "";
var count = Math.scriptedRandomInt(100);
for (var j = 0; j < count; j++) { //>
lengthList += characters[Math.scriptedRandomInt(characters.length)];
}
parseLengthList(lengthList);
}
// Empty-ish length lists
parseLengthList("");
parseLengthList(String.fromCharCode(0));
}
fuzz();
</script>
</html>