| <html> |
| <head> |
| <script src="../../resources/js-test-pre.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> |
| <script src="../../resources/js-test-post.js"></script> |
| </html> |