<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description("Test the parsing of the cursor property.");

function makeCursorRule(rule)
{
    return "cursor: " + rule + ";";
}

function testCursorRule(rule)
{
    var cssText = makeCursorRule(rule);
    shouldBeEqualToString('roundtripCssRule("' + cssText + '")', cssText);
}

function testInvalidCursorRule(rule)
{
    shouldBeEqualToString('roundtripCssRule("' + makeCursorRule(rule) + '")', '');
}

function roundtripCssRule(cssText)
{
    var div = document.createElement("div");
    div.setAttribute("style", cssText);
    document.body.appendChild(div);
    var result = div.style.cssText;
    document.body.removeChild(div);
    return result;
}

// Note that any absolute URL will suffice for these tests (can't use relative URLs
// since they'll be converted to absolute form in the output).  I chose file URLs just
// to avoid triggering any network activity.

debug('Test a bunch of cursor rules which should round-trip exactly.');
testCursorRule('auto');
testCursorRule('none');
testCursorRule('copy');
testCursorRule('-webkit-grabbing');
testCursorRule('url(file:///foo.png)');   //  IE compatibility 
testCursorRule('url(file:///foo.png), crosshair');
testCursorRule('url(file:///foo.png), url(file:///foo2.png), pointer');
testCursorRule('url(file:///foo.png) 12 3, pointer');
testCursorRule('url(file:///foo.png) 0 0, pointer');
testCursorRule('url(file:///foo.png) 12 3, url(file:///foo2.png), url(file:///foo3.png) 6 7, crosshair');
testCursorRule('url(file:///foo.png) -2 3, pointer');
testCursorRule('url(file:///foo.png) 2 -3, pointer');
testCursorRule('url(file:///foo.png) -1 -1, pointer');

debug('');
debug('Test a bunch of invalid cursor rules which shouldn\'t parse at all.');
testInvalidCursorRule('nonexistent');
testInvalidCursorRule('ltr');
testInvalidCursorRule('inline');
testInvalidCursorRule('url(file:///foo.png), url(file:///foo2.png)');
testInvalidCursorRule('url(file:///foo.png) 12');
testInvalidCursorRule('url(file:///foo.png) 12 3 5');
testInvalidCursorRule('url(file:///foo.png) x y');
testInvalidCursorRule('url(file:///foo.png) auto');

successfullyParsed = true;
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
