blob: 13e6bdc077e85d3a8af259f7063d52ce4cbc3ef2 [file] [log] [blame]
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>HTML5 storage</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.storage');
goog.require('bot.html5');
goog.require('goog.array');
goog.require('goog.userAgent.product');
</script>
<script type="text/javascript">
// WebDriver does not enable storage for Firefox (b/5787180).
var LOCAL_STORAGE_NOT_WORKING =
!bot.html5.isSupported(bot.html5.API.LOCAL_STORAGE) ||
goog.userAgent.product.FIREFOX;
var SESSION_STORAGE_NOT_WORKING =
!bot.html5.isSupported(bot.html5.API.SESSION_STORAGE) ||
goog.userAgent.product.FIREFOX;
QUnit.test('getLocalStorage', function(assert) {
if (LOCAL_STORAGE_NOT_WORKING) {
assert.ok(true, 'Skipping: local storage not working');
return;
}
var storage = bot.storage.getLocalStorage();
assert.strictEqual(storage.getStorageMap(), localStorage);
});
QUnit.test('getLocalStorageWithWindow', function(assert) {
if (LOCAL_STORAGE_NOT_WORKING) {
assert.ok(true, 'Skipping: local storage not working');
return;
}
var storage = bot.storage.getLocalStorage(bot.getWindow());
assert.strictEqual(storage.getStorageMap(), localStorage);
});
QUnit.test('getSessionStorage', function(assert) {
if (SESSION_STORAGE_NOT_WORKING) {
assert.ok(true, 'Skipping: session storage not working');
return;
}
var storage = bot.storage.getSessionStorage();
assert.strictEqual(storage.getStorageMap(), sessionStorage);
});
QUnit.test('getSessionStorageWithWindow', function(assert) {
if (SESSION_STORAGE_NOT_WORKING) {
assert.ok(true, 'Skipping: session storage not working');
return;
}
var storage = bot.storage.getSessionStorage(bot.getWindow());
assert.strictEqual(storage.getStorageMap(), storage.getStorageMap());
});
QUnit.test('clear', function(assert) {
if (LOCAL_STORAGE_NOT_WORKING) {
assert.ok(true, 'Skipping: local storage not working');
return;
}
var storage = bot.storage.getLocalStorage();
storage.clear();
assert.strictEqual(storage.size(), 0);
storage.setItem('first', 'one');
storage.setItem('second', 'two');
storage.setItem('third', 'two');
storage.clear();
assert.strictEqual(storage.size(), 0);
assert.strictEqual(storage.getItem('first'), null);
assert.strictEqual(storage.getItem('second'), null);
assert.strictEqual(storage.getItem('third'), null);
});
QUnit.test('setAndGetSimpleItem', function(assert) {
if (SESSION_STORAGE_NOT_WORKING) {
assert.ok(true, 'Skipping: session storage not working');
return;
}
var storage = bot.storage.getSessionStorage();
// set-get
storage.setItem('first', 'one');
assert.strictEqual(storage.getItem('first'), 'one');
storage.setItem('second', 2);
assert.strictEqual(storage.getItem('second'), '2');
assert.strictEqual(storage.getItem('third'), null);
// resetItem
storage.setItem('first', '1');
assert.strictEqual(storage.getItem('first'), '1');
storage.clear();
});
QUnit.test('setArbitraryValue', function(assert) {
if (SESSION_STORAGE_NOT_WORKING) {
assert.ok(true, 'Skipping: session storage not working');
return;
}
var storage = bot.storage.getSessionStorage();
// set different types of value
storage.setItem('foo', '');
assert.strictEqual(storage.getItem('foo'), '');
var d = new Date(2011, 02, 29, 12, 33, 44, 44);
storage.setItem('date', d);
assert.strictEqual(storage.getItem('date'), d.toString());
// set null value.
storage.setItem('foo1', null);
assert.strictEqual(storage.getItem('foo1'), 'null');
storage.setItem('foo2', 'null');
assert.strictEqual(storage.getItem('foo1'), storage.getItem('foo2'));
storage.clear();
});
QUnit.test('removeItem', function(assert) {
if (SESSION_STORAGE_NOT_WORKING) {
assert.ok(true, 'Skipping: session storage not working');
return;
}
var storage = bot.storage.getSessionStorage();
storage.clear();
storage.setItem('first', 'one');
storage.setItem('second', 'two');
assert.strictEqual(storage.removeItem('first'), 'one');
assert.strictEqual(storage.removeItem('second'), 'two');
assert.strictEqual(storage.removeItem('first'), null);
assert.strictEqual(storage.removeItem('foo'), null);
});
QUnit.test('size', function(assert) {
if (SESSION_STORAGE_NOT_WORKING) {
assert.ok(true, 'Skipping: session storage not working');
return;
}
var storage = bot.storage.getSessionStorage();
storage.clear();
storage.setItem('first', 'one');
storage.setItem('second', 'two');
storage.setItem('third', 'three');
assert.strictEqual(storage.size(), 3);
});
QUnit.test('keySet', function(assert) {
if (SESSION_STORAGE_NOT_WORKING) {
assert.ok(true, 'Skipping: session storage not working');
return;
}
var storage = bot.storage.getSessionStorage();
storage.clear();
storage.setItem('third', 'three');
storage.setItem('first', 'one');
storage.setItem('second', 'two');
assert.strictEqual(storage.size(), 3);
// keySet
var keys = storage.keySet();
// Use goog.array.indexOf because IE9 doesn't have Array.indexOf
assert.notStrictEqual(goog.array.indexOf(keys, 'first'), -1);
assert.notStrictEqual(goog.array.indexOf(keys, 'second'), -1);
assert.strictEqual(goog.array.indexOf(keys, 'five'), -1);
var sortedKeys = keys.sort();
assert.deepEqual(sortedKeys, ['first', 'second', 'third']);
});
QUnit.test('identicalLocalStorage', function(assert) {
if (LOCAL_STORAGE_NOT_WORKING) {
assert.ok(true, 'Skipping: local storage not working');
return;
}
var localStorage1 = bot.storage.getLocalStorage();
var localStorage2 = bot.storage.getLocalStorage();
localStorage1.clear();
assert.strictEqual(localStorage1.size(), 0);
assert.strictEqual(localStorage2.size(), 0);
localStorage1.setItem('foo', 'bar');
assert.strictEqual(localStorage1.getItem('foo'), 'bar');
assert.strictEqual(localStorage2.getItem('foo'), 'bar');
localStorage2.removeItem('foo');
assert.strictEqual(localStorage1.getItem('foo'), null);
assert.strictEqual(localStorage2.getItem('foo'), null);
});
QUnit.test('persistentLocalStorage', function(assert) {
if (LOCAL_STORAGE_NOT_WORKING) {
assert.ok(true, 'Skipping: local storage not working');
return;
}
var localStorage = bot.storage.getLocalStorage();
if (localStorage.getItem('foosession') === null) {
localStorage.setItem('foosession', 'barsession');
}
assert.strictEqual(localStorage.getItem('foosession'), 'barsession');
localStorage.removeItem('foosession');
assert.strictEqual(localStorage.getItem('foosession'), null);
});
</script>
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
</body>
</html>