chromium/third_party/blink/web_tests/svg/dom/points-parser.html

<html>
<head>
<script src="../../resources/js-test.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>

description("This tests the parser for points attribute values.");

var polyElement = document.createElementNS("http://www.w3.org/2000/svg", "polyline");

function parsePoints(str, result)
{
    polyElement.setAttributeNS(null, "points", " ");
    polyElement.setAttributeNS(null, "points", str);
    debug("Test string: '" + str + "'");
    var len = polyElement.points.numberOfItems;
    var points = "";
    for (var i = 0; i < len; ++i) {
        var p = polyElement.points.getItem(i);
        if (i > 0) points += " ";
        points = points + p.x + " " + p.y;
    }
    if (points === result) {
        testPassed("'" + points + "' is '" + result + "'");
    } else {
        testFailed("'" + str + "' should be '" + result + "', but is '" + points + "'");
    }
    debug("");
}

parsePoints(" ", "");
parsePoints("10 10", "10 10");
parsePoints("10,10", "10 10");
parsePoints("10, 10", "10 10");
parsePoints("10 10 20 20", "10 10 20 20");
parsePoints("10, 10 20 20", "10 10 20 20");
parsePoints("10, 10, 20 20", "10 10 20 20");
parsePoints("10, 10, 20, 20", "10 10 20 20");
parsePoints("10, 10 20, 20", "10 10 20 20");
parsePoints("10 10, 20, 20", "10 10 20 20");
parsePoints("10 10 20, 20", "10 10 20 20");
parsePoints("10+10", "10 10");
parsePoints("10-10", "10 -10");
parsePoints("10,+10", "10 10");
parsePoints("10,-10", "10 -10");
parsePoints("            10,10", "10 10");
parsePoints("10,10            ", "10 10");
parsePoints("10,            10", "10 10");
parsePoints("10            ,10", "10 10");
parsePoints("10     ,       10", "10 10");
parsePoints("			10,10", "10 10");
parsePoints("10,10			", "10 10");
parsePoints("10,			10", "10 10");
parsePoints("10			,10", "10 10");
parsePoints("10		,	10", "10 10");

debug('Strings that fail to parse, and hence parse as "".');
debug('');

parsePoints("a", "");
parsePoints("10", "");
parsePoints("10,", "");
parsePoints("10,,", "");
parsePoints("10,,10", "");
parsePoints("10,10,", "10 10");
parsePoints("10,10a", "10 10");
parsePoints(",10", "");
parsePoints(",10,", "");
parsePoints(",10,,", "");
parsePoints(",10,10", "");


</script>
</body>
</html>