blob: d28410376a7e47e6f7a05c6000148462ae47408e [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dom_test</title>
<link rel="stylesheet" href="/filez/_main/third_party/js/qunit/qunit.css">
<script src="/filez/_main/third_party/js/qunit/qunit.js"></script>
<script src="/filez/_main/third_party/js/qunit/qunit_test_runner.js"></script>
<script src="test_bootstrap.js"></script>
<script type="text/javascript">
goog.require('bot.dom');
goog.require('bot.dom.core');
goog.require('bot.userAgent');
goog.require('goog.userAgent');
</script>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<script type="text/javascript">
var INPUT_IDS = ['text', 'search', 'tel', 'url', 'email', 'password', 'number',
'range', 'date', 'month', 'week', 'time', 'datetime-local', 'color'];
QUnit.test('standardize style attribute returns identical string with lowercased property names', function(assert) {
var toTest = [
{input: "Left: 0px; Text-align: center;",
expected: "left: 0px; text-align: center;"},
{input: "background-image: url('testdata/kitten3.jpg');",
expected: "background-image: url('testdata/kitten3.jpg');"},
{input: "-ms-filter: 'progid:DXImageTransform(strength=50)," +
" progid:DXImageTransform.(mirror=1)';",
expected: "-ms-filter: 'progid:DXImageTransform(strength=50)," +
" progid:DXImageTransform.(mirror=1)';"}
];
for (var i = 0; i < toTest.length; i++) {
assert.deepEqual(bot.dom.core.standardizeStyleAttribute_(toTest[i].input), toTest[i].expected);
}
});
QUnit.test('standardize style attribute appends a missing semicolon to the end of the string', function(assert) {
assert.strictEqual(
bot.dom.core.standardizeStyleAttribute_(
"background-color:green; width:100px; height:50px"),
"background-color:green; width:100px; height:50px;"
);
});
QUnit.test('standardize style attribute should work with quotes and parens', function(assert) {
if (goog.userAgent.IE && !bot.userAgent.isProductVersion(7)) {
assert.ok(true, 'Skipping: IE6 cannot properly parse the embedded semicolons');
return;
}
var toTest = [
{input: "key:value", expected: "key:value;"},
{input: "key:value;", expected: "key:value;"},
{input: "key1:value1; key2: value2",
expected: "key1:value1; key2: value2;"},
{input: "key1:value1; key2: value2(semi;colons;in;here;)",
expected: "key1:value1; key2: value2(semi;colons;in;here;);"},
{input: "key1:value1; key2: 'string; with; semicolons; and more';",
expected: "key1:value1; key2: 'string; with; semicolons; and more';"},
{input: "key1:value1; key2: 'string; with; semicolons; and more'",
expected: "key1:value1; key2: 'string; with; semicolons; and more';"},
{input: "key1:value1;" +
" key2: url('something;with;semicolons;?oh=yeah&x=y');" +
" key3:'string;with;semicolons;'",
expected: "key1:value1;" +
" key2: url('something;with;semicolons;?oh=yeah&x=y');" +
" key3:'string;with;semicolons;';"},
{input: "key1:\"double;quoted;string!\";" +
" key2:'single;quoted;string;';" +
" key3:it(is;in;parens);",
expected: "key1:\"double;quoted;string!\";" +
" key2:'single;quoted;string;'; key3:it(is;in;parens);"}
];
for (var i = 0; i < toTest.length; i++) {
assert.deepEqual(bot.dom.core.standardizeStyleAttribute_(toTest[i].input), toTest[i].expected);
}
});
QUnit.test('editable fields', function(assert) {
for (var i = 0; i < INPUT_IDS.length; i++) {
var inputBox = document.getElementById(INPUT_IDS[i]);
assert.ok(bot.dom.isEditable(inputBox), INPUT_IDS[i]);
}
});
</script>
<form action="" onsubmit="return false;">
<input type="text" id="text"/>
<input type="search" id="search"/>
<input type="tel" id="tel"/>
<input type="url" id="url"/>
<input type="email" id="email"/>
<input type="password" id="password"/>
<input type="number" id="number"/>
<input type="range" id="range"/>
<input type="date" id="date"/>
<input type="month" id="month"/>
<input type="week" id="week"/>
<input type="time" id="time"/>
<input type="datetime-local" id="datetime-local"/>
<input type="color" id="color"/>
</form>
</body>
</html>