aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/gears/database_test.html
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/gears/database_test.html')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/gears/database_test.html699
1 files changed, 0 insertions, 699 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/gears/database_test.html b/contexts/data/lib/closure-library/closure/goog/gears/database_test.html
deleted file mode 100644
index 120c031..0000000
--- a/contexts/data/lib/closure-library/closure/goog/gears/database_test.html
+++ /dev/null
@@ -1,699 +0,0 @@
-<!DOCTYPE html>
-<html>
-<!--
-Copyright 2007 The Closure Library Authors. All Rights Reserved.
-
-Use of this source code is governed by the Apache License, Version 2.0.
-See the COPYING file for details.
--->
-<!--
--->
-<head>
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
-<title>Closure Unit Tests - goog.gears.Database</title>
-<script src="../base.js"></script>
-<script>
- goog.require('goog.gears.Database');
- goog.require('goog.testing.jsunit');
-</script>
-</head>
-<body>
-<script>
-
-function isGearsAllowed() {
- return goog.gears.hasFactory() && goog.gears.getFactory().hasPermission;
-}
-
-var database;
-
-function setUpPage() {
- if (isGearsAllowed()) {
- try {
- database = new goog.gears.Database('tester', 'database-test');
- } catch (e) {
- debug('Could not create the database');
- }
- }
- setUpPageStatus = 'complete'; // jsunit magic
-}
-
-function setUp() {
- if (!database) {
- return;
- }
- database.execute('DROP TABLE IF EXISTS Test');
- database.execute('CREATE TABLE IF NOT EXISTS Test (x TEXT, y TEXT)');
-
- database.execute('INSERT INTO Test VALUES (?, ?)', 'a', 'alpha');
- database.execute('INSERT INTO Test VALUES (?, ?)', 'b', 'beta');
- database.execute('INSERT INTO Test VALUES (?, ?)', 'g', 'gamma');
-}
-
-function tearDown() {
- if (database) {
- goog.events.removeAll(database);
-
- // Rollback to clean up transaction state.
- while (database.isInTransaction()) {
- database.rollback();
- }
- }
-}
-
-function testCreateDatabase() {
- if (!database) {
- return;
- }
- assertNotNull('Could not create the database', database);
-}
-
-function testCreateTable() {
- if (!database) {
- return;
- }
-
- var created = database.queryValue('SELECT 1 FROM SQLITE_MASTER ' +
- 'WHERE TYPE=? AND NAME=?',
- 'table',
- 'Test') != null;
- assertTrue('Test table could not be created', created);
- assertEquals('Wrong number of rows after more insertions', 3,
- database.queryValue('SELECT COUNT(*) FROM Test'));
-}
-
-function testQueryValue() {
- if (!database) {
- return;
- }
- // testing retrieving a single value
- var val = database.queryValue('SELECT y FROM Test WHERE x=?', 'b');
- assertEquals('Wrong value returned by query', 'beta', val);
-
- // testing a query that returns nothing
- val = database.queryValue('SELECT y FROM Test WHERE x=?', 'd');
- assertNull('Should not have returned a value for the query', val);
-
- // testing that the query returns the first row of the query
- val = database.queryValue('SELECT y FROM Test');
- assertEquals('Wrong value returned by query', 'alpha', val);
-
- // testing that the query returns the first element of the row of the query
- val = database.queryValue('SELECT * FROM Test');
- assertEquals('Wrong value returned by query', 'a', val);
-
- // And the same with an array.
-
- // testing retrieving a single value
- val = database.queryValue('SELECT y FROM Test WHERE x=?', ['b']);
- assertEquals('Wrong value returned by query', 'beta', val);
-
- // testing a query that returns nothing
- val = database.queryValue('SELECT y FROM Test WHERE x=?', ['d']);
- assertNull('Should not have returned a value for the query', val);
-}
-
-function testQueryObject() {
- if (!database) {
- return;
- }
- // testing that the query returns the correct object
- var obj = database.queryObject('SELECT * FROM Test WHERE x=?', 'b');
- assertNotNull('Should have returned a value for the query', obj);
- assertEquals('Wrong value returned by query', 'b', obj['x']);
- assertEquals('Wrong value returned by query', 'beta', obj['y']);
-
- // testing that the query returns null when there is no match
- obj = database.queryValue('SELECT * FROM Test WHERE x=?', 'd');
- assertNull('Should not have returned a value for the query', obj);
-
- // testing that the query returns the first row when there are multiple
- // rows returned.
- obj = database.queryObject('SELECT * FROM Test');
- assertNotNull('Should have returned a value for the query', obj);
- assertEquals('Wrong value returned by query', 'a', obj['x']);
- assertEquals('Wrong value returned by query', 'alpha', obj['y']);
-
- // And the same with an array.
-
- // testing that the query returns the correct object
- obj = database.queryObject('SELECT * FROM Test WHERE x=?', ['b']);
- assertNotNull('Should have returned a value for the query', obj);
- assertEquals('Wrong value returned by query', 'b', obj['x']);
- assertEquals('Wrong value returned by query', 'beta', obj['y']);
-
- // testing that the query returns null when there is no match
- obj = database.queryValue('SELECT * FROM Test WHERE x=?', ['d']);
- assertNull('Should not have returned a value for the query', obj);
-}
-
-function testQueryValueArray() {
- if (!database) {
- return;
- }
- // testing selecting returning of multiple single values
- var arr = database.queryValueArray('SELECT y FROM Test');
- assertNotNull('Should have returned a value for the query', arr);
- assertEquals('Wrong value returned by query', 3, arr.length);
- assertEquals('Wrong value returned by query', 'alpha', arr[0]);
- assertEquals('Wrong value returned by query', 'beta', arr[1]);
- assertEquals('Wrong value returned by query', 'gamma', arr[2]);
-
- // testing selecting returning of multiple single values when there
- // are no matches.
- arr = database.queryValueArray('SELECT y FROM Test WHERE x=?', 'd');
- assertNotNull('Should have returned a value for the query', arr);
- assertEquals('Wrong value returned by query', 0, arr.length);
-
- // testing selecting returning of multiple single values even when
- // selecting multiple columns - should return the first column
- arr = database.queryValueArray('SELECT * FROM Test');
- assertNotNull('Should have returned a value for the query', arr);
- assertEquals('Wrong value returned by query', 3, arr.length);
- assertEquals('Wrong value returned by query', 'a', arr[0]);
- assertEquals('Wrong value returned by query', 'b', arr[1]);
- assertEquals('Wrong value returned by query', 'g', arr[2]);
-
- // And the same with an array.
-
- // testing selecting returning of multiple single values when there
- // are no matches.
- arr = database.queryValueArray('SELECT y FROM Test WHERE x=?', ['d']);
- assertNotNull('Should have returned a value for the query', arr);
- assertEquals('Wrong value returned by query', 0, arr.length);
-
-}
-
-function testQueryObjectArray() {
- if (!database) {
- return;
- }
- // testing selecting returning of array of objects
- var arr = database.queryObjectArray('SELECT * FROM Test');
- assertNotNull('Should have returned a value for the query', arr);
- assertEquals('Wrong value returned by query', 3, arr.length);
- assertEquals('Wrong value returned by query', 'a', arr[0]['x']);
- assertEquals('Wrong value returned by query', 'alpha', arr[0]['y']);
- assertEquals('Wrong value returned by query', 'b', arr[1]['x']);
- assertEquals('Wrong value returned by query', 'beta', arr[1]['y']);
- assertEquals('Wrong value returned by query', 'g', arr[2]['x']);
- assertEquals('Wrong value returned by query', 'gamma', arr[2]['y']);
-
- // testing selecting returning of multiple objects when there
- // are no matches.
- arr = database.queryObjectArray('SELECT y FROM Test WHERE x=?', 'd');
- assertNotNull('Should have returned a value for the query', arr);
- assertEquals('Wrong value returned by query', 0, arr.length);
-
- // And the same with an array.
-
- // testing selecting returning of multiple objects when there
- // are no matches.
- arr = database.queryObjectArray('SELECT y FROM Test WHERE x=?', ['d']);
- assertNotNull('Should have returned a value for the query', arr);
- assertEquals('Wrong value returned by query', 0, arr.length);
-
-}
-
-function testQueryToArrays() {
- if (!database) {
- return;
- }
- // testing selecting returning of array of arrays
- var arr = database.queryArrays('SELECT * FROM Test');
- assertNotNull('Should have returned a value for the query', arr);
- assertEquals('Wrong value returned by query', 3, arr.length);
- assertEquals('Wrong value returned by query', 'a', arr[0][0]);
- assertEquals('Wrong value returned by query', 'alpha', arr[0][1]);
- assertEquals('Wrong value returned by query', 'b', arr[1][0]);
- assertEquals('Wrong value returned by query', 'beta', arr[1][1]);
- assertEquals('Wrong value returned by query', 'g', arr[2][0]);
- assertEquals('Wrong value returned by query', 'gamma', arr[2][1]);
-
- arr = database.queryArrays('SELECT * FROM Test WHERE x=?', 'd');
- assertNotNull('Should have returned a value for the query', arr);
- assertEquals('Wrong value returned by query', 0, arr.length);
-
- // And the same with an array.
-
- arr = database.queryArrays('SELECT * FROM Test WHERE x=?', ['d']);
- assertNotNull('Should have returned a value for the query', arr);
- assertEquals('Wrong value returned by query', 0, arr.length);
-}
-
-function testForEachValue() {
- if (!database) {
- return;
- }
- // testing the foreach value when there are matching values
- var vals = [];
- database.forEachValue('SELECT * FROM Test',
- function(val, row, col, name) {
- vals.push({val: val, row: row, col: col, name: name});
- return true;
- },
- null);
- assertEquals('Wrong value returned by query', 6, vals.length);
- assertEquals('Wrong value returned by query', 'a', vals[0].val);
- assertEquals('Wrong value returned by query', 0, vals[0].row);
- assertEquals('Wrong value returned by query', 0, vals[0].col);
- assertEquals('Wrong value returned by query', 'x', vals[0].name);
- assertEquals('Wrong value returned by query', 'alpha', vals[1].val);
- assertEquals('Wrong value returned by query', 0, vals[1].row);
- assertEquals('Wrong value returned by query', 1, vals[1].col);
- assertEquals('Wrong value returned by query', 'y', vals[1].name);
- assertEquals('Wrong value returned by query', 'b', vals[2].val);
- assertEquals('Wrong value returned by query', 1, vals[2].row);
- assertEquals('Wrong value returned by query', 0, vals[2].col);
- assertEquals('Wrong value returned by query', 'x', vals[2].name);
- assertEquals('Wrong value returned by query', 'beta', vals[3].val);
- assertEquals('Wrong value returned by query', 1, vals[3].row);
- assertEquals('Wrong value returned by query', 1, vals[3].col);
- assertEquals('Wrong value returned by query', 'y', vals[3].name);
- assertEquals('Wrong value returned by query', 'g', vals[4].val);
- assertEquals('Wrong value returned by query', 2, vals[4].row);
- assertEquals('Wrong value returned by query', 0, vals[4].col);
- assertEquals('Wrong value returned by query', 'x', vals[4].name);
- assertEquals('Wrong value returned by query', 'gamma', vals[5].val);
- assertEquals('Wrong value returned by query', 2, vals[5].row);
- assertEquals('Wrong value returned by query', 1, vals[5].col);
- assertEquals('Wrong value returned by query', 'y', vals[5].name);
-
- vals = [];
- database.forEachValue('SELECT * FROM Test WHERE x=?',
- function(val, row, col, name) {
- vals.push({val: val, row: row, col: col, name: name});
- },
- null,
- 'd');
- assertEquals('Wrong value returned by query', 0, vals.length);
-
- // And the same with an array.
-
- vals = [];
- database.forEachValue('SELECT * FROM Test WHERE x=?',
- function(val, row, col, name) {
- vals.push({val: val, row: row, col: col, name: name});
- },
- null,
- ['d']);
- assertEquals('Wrong value returned by query', 0, vals.length);
-
-}
-
-function testForEachRow() {
- if (!database) {
- return;
- }
- var vals = [];
- database.forEachRow('SELECT * FROM Test',
- function(arr, row) {
- vals.push({arr: arr, row: row});
- return true;
- },
- null);
- assertEquals('Wrong value returned by query', 3, vals.length);
- assertEquals('Wrong value returned by query', 'a', vals[0].arr[0]);
- assertEquals('Wrong value returned by query', 'alpha', vals[0].arr[1]);
- assertEquals('Wrong value returned by query', 0, vals[0].row);
- assertEquals('Wrong value returned by query', 'b', vals[1].arr[0]);
- assertEquals('Wrong value returned by query', 'beta', vals[1].arr[1]);
- assertEquals('Wrong value returned by query', 1, vals[1].row);
- assertEquals('Wrong value returned by query', 'g', vals[2].arr[0]);
- assertEquals('Wrong value returned by query', 'gamma', vals[2].arr[1]);
- assertEquals('Wrong value returned by query', 2, vals[2].row);
-
- vals = [];
- database.forEachRow('SELECT * FROM Test WHERE x=?',
- function(arr, row) {
- vals.push({arr: arr, row: row});
- return true;
- },
- null,
- 'd');
- assertEquals('Wrong value returned by query', 0, vals.length);
-
- // And the same with an array.
-
- vals = [];
- database.forEachRow('SELECT * FROM Test WHERE x=?',
- function(arr, row) {
- vals.push({arr: arr, row: row});
- return true;
- },
- null,
- ['d']);
- assertEquals('Wrong value returned by query', 0, vals.length);
-
-}
-
-function testMultipleBegins() {
- if (!database) {
- return;
- }
- var db1;
- var db2;
- try {
- db1 = new goog.gears.Database('tester', 'database-test');
- db2 = new goog.gears.Database('tester', 'database-test');
- } catch (e) {
- fail('Could not create the databases');
- }
-
- db1.begin();
- try {
- // This should time out as being locked.
- db2.begin();
- fail('Should not have been able to get past second begin transaction.');
- } catch (e) {
- assertFalse(
- 'Second begin should have failed, but claims to be in a transaction.',
- db2.isInTransaction());
- assertTrue(
- 'Second begin not reported as being locked',
- goog.gears.Database.isLockedException(e));
- }
- db1.commit();
- db2.begin();
- assertTrue('New second begin failed', db2.isInTransaction());
- db2.commit();
-};
-
-
-function testIsLockedExceptionMessage() {
- if (!database) {
- return;
- }
-
- var lockedExStr = 'Database operation failed. ERROR: database is locked ' +
- 'DETAILS: database is locked';
-
- assertTrue(goog.gears.Database.isLockedException(lockedExStr));
- assertFalse(goog.gears.Database.isLockedException(
- 'Database operation failed. ERROR: invalid SQL operation'));
-
- assertTrue(goog.gears.Database.isLockedException(Error(lockedExStr)));
-}
-
-function testNestedBegins() {
- if (!database) {
- return;
- }
-
- // Try normal nested begins.
- database.begin();
- try {
- database.begin();
- database.commit();
- database.commit();
- } catch (e) {
- fail('Could not run nested transactions');
- }
-
- // Now try nested begins with lower begin levels
- database.begin();
- try {
- database.beginDeferred();
- database.commit();
- database.commit();
- } catch (e) {
- fail('Could not run nested transactions');
- }
-
- // Now try begins with increasing begin levels. This should throw
- // an error.
- database.beginDeferred();
- try {
- database.beginImmediate();
- fail('Could not run nested transactions');
- database.commit();
- database.commit();
- } catch (e) {
- database.rollback(e);
- }
-}
-
-
-function testCommit() {
- if (!database) {
- return;
- }
- var db;
- try {
- db = new goog.gears.Database('tester', 'database-test');
- } catch (e) {
- debug('Could not create the database');
- }
-
- var committed = false;
- var rollbacked = false;
-
- database.begin();
- goog.events.listen(database, 'commit', function(e) {committed = true;});
- goog.events.listen(database, 'rollback', function(e) {rollbacked = true;});
- assertTrue('Incorrect reporting of being in a transaction',
- database.isInTransaction());
- database.execute('INSERT INTO Test VALUES(?, ?)', 'o', 'omega');
- var cnt = database.queryValue('SELECT COUNT(*) FROM Test');
- assertEquals('Found wrong number of rows', 4, cnt);
- cnt = db.queryValue('SELECT COUNT(*) FROM Test');
- assertEquals('Found wrong number of rows', 3, cnt);
- database.commit();
- cnt = db.queryValue('SELECT COUNT(*) FROM Test');
- assertEquals('Found wrong number of rows', 4, cnt);
-
- assertFalse('Incorrect reporting of being in a transaction',
- database.isInTransaction());
-
- assertTrue('Commit event not dispatched', committed);
- assertFalse('Rollback event wrongly dispatched', rollbacked);
-}
-
-function testCommit2() {
- if (!database) {
- return;
- }
- var db;
- try {
- db = new goog.gears.Database('tester', 'database-test');
- } catch (e) {
- debug('Could not create the database');
- }
-
- var committed = false;
- var rollbacked = false;
-
- database.begin();
- goog.events.listen(database, 'commit', function(e) {committed = true;});
- goog.events.listen(database, 'rollback', function(e) {rollbacked = true;});
- database.execute('INSERT INTO Test VALUES(?, ?)', 's', 'sigma');
- assertTrue('Incorrect reporting of being in a transaction',
- database.isInTransaction());
- database.begin();
- assertTrue('Incorrect reporting of being in a transaction',
- database.isInTransaction());
- database.execute('INSERT INTO Test VALUES(?, ?)', 's', 'sigma');
- database.commit();
-
- assertFalse('Commit event wrongly dispatched', committed);
- assertFalse('Rollback event wrongly dispatched', rollbacked);
-
- assertTrue('Incorrect reporting of being in a transaction',
- database.isInTransaction());
- // the values should not be committed at this point.
- cnt = database.queryValue('SELECT COUNT(*) FROM Test');
- assertEquals('Found wrong number of rows', 5, cnt);
- cnt = db.queryValue('SELECT COUNT(*) FROM Test');
- assertEquals('Found wrong number of rows', 3, cnt);
- database.commit();
- cnt = db.queryValue('SELECT COUNT(*) FROM Test');
- assertEquals('Found wrong number of rows', 5, cnt);
- assertFalse('Incorrect reporting of being in a transaction',
- database.isInTransaction());
- assertTrue('Commit function not called', committed);
- assertFalse('Rollback function wrongly called', rollbacked);
-}
-
-function testRollback() {
- if (!database) {
- return;
- }
-
- var begun = false;
- var committed = false;
- var rollbacked = false;
-
- goog.events.listen(database, 'begin', function(e) {begun = true;});
- database.begin();
- assertTrue('Begin event not dispatched', begun);
- goog.events.listen(database, 'commit', function(e) {committed = true;});
- goog.events.listen(database, 'rollback', function(e) {rollbacked = true;});
- database.execute('INSERT INTO Test VALUES(?, ?)', 'o', 'omega');
- var cnt = database.queryValue('SELECT COUNT(*) FROM Test');
- assertEquals('Found wrong number of rows', 4, cnt);
- database.rollback();
- cnt = database.queryValue('SELECT COUNT(*) FROM Test');
- assertEquals('Found wrong number of rows', 3, cnt);
- assertFalse('Incorrect reporting of being in a transaction',
- database.isInTransaction());
- assertFalse('Commit event wrongly dispatched', committed);
- assertTrue('Rollback event not dispatched', rollbacked);
-}
-
-function testRollback2() {
- if (!database) {
- return;
- }
-
- var begun = false;
- var committed = false;
- var rollbacked = false;
-
- database.begin();
- goog.events.listen(database, 'commit', function(e) {committed = true;});
- goog.events.listen(database, 'rollback', function(e) {rollbacked = true;});
- database.execute('INSERT INTO Test VALUES(?, ?)', 's', 'sigma');
- database.begin();
- database.execute('INSERT INTO Test VALUES(?, ?)', 's', 'sigma');
- database.rollback();
- // the values should not be rolledback at this point.
- cnt = database.queryValue('SELECT COUNT(*) FROM Test');
- assertEquals('Found wrong number of rows', 5, cnt);
- assertFalse('Commit event wrongly dispatched', committed);
- assertFalse('Rollback event wrongly dispatched', rollbacked);
-
- database.rollback();
- cnt = database.queryValue('SELECT COUNT(*) FROM Test');
- assertEquals('Found wrong number of rows', 3, cnt);
- assertFalse('Incorrect reporting of being in a transaction',
- database.isInTransaction());
- assertFalse('Commit event wrongly dispatched', committed);
- assertTrue('Rollback event not dispatched', rollbacked);
-}
-
-function testPreventDefault() {
- if (!database) {
- return;
- }
-
- var committed = false;
- database.begin();
- goog.events.listen(database, 'beforecommit', function(e) {
- e.preventDefault();
- });
- goog.events.listen(database, 'commit', function(e) {committed = true;});
- database.execute('INSERT INTO Test VALUES(?, ?)', 'd', 'delta');
- database.commit();
- assertFalse('Commit ignored beforecommit preventDefault()', committed);
- database.rollback();
-}
-
-function testPreventDefault2() {
- if (!database) {
- return;
- }
-
- var rollbacked = false;
- database.begin();
- goog.events.listen(database, 'beforerollback', function(e) {
- e.preventDefault();
- });
- goog.events.listen(database, 'rollback', function(e) {
- rollbacked = true;
- });
- database.execute('INSERT INTO Test VALUES(?, ?)', 'd', 'delta');
- database.rollback();
- assertFalse('Rollback ignored beforerollback preventDefault()', rollbacked);
- goog.events.removeAll(database);
- database.rollback();
-}
-
-function testLastInsertId() {
- if (!database) {
- return;
- }
- database.execute('INSERT INTO Test VALUES (?, ?)', 'a', 'alpha');
- var id = database.getLastInsertRowId();
- database.execute('INSERT INTO Test VALUES (?, ?)', 'b', 'beta');
- assertEquals('Incorrect last insert id',
- id + 1, database.getLastInsertRowId());
-}
-
-function testError() {
- if (!database) {
- return;
- }
-
- var sql = 'INSERT INTO Unknown VALUES(?, ?)';
-
- try {
- database.execute('INSERT INTO Unknown VALUES(?, ?)', 'alpha', 1);
- fail('Should not have gotten here');
- } catch (e) {
- assertEquals('Wrong sql information', sql + ': ["alpha",1]', e.message0);
- }
-}
-
-function testThrowInBeforeSubmit() {
- if (!database) {
- return;
- }
-
- var errorSentinel = Error();
-
- var committed = false;
- database.begin();
- goog.events.listen(database, 'beforecommit', function(e) {
- throw errorSentinel;
- });
- goog.events.listen(database, 'commit', function(e) {
- committed = true;
- });
- database.execute('INSERT INTO Test VALUES(?, ?)', 'd', 'delta');
- try {
- database.commit();
- fail('Should have thrown an error');
- } catch (ex) {
- assertEquals(errorSentinel, ex);
- assertTrue('Should still be in the transaction',
- database.isInTransaction());
- }
-
- assertFalse('Should not have been commited since we threw an error ' +
- 'in beforecommit', committed);
- database.rollback();
-}
-
-function testThrowInBeforeRollback() {
- if (!database) {
- return;
- }
-
- var errorSentinel = Error();
-
- var rollbacked = false;
- database.begin();
- goog.events.listen(database, 'beforerollback', function(e) {
- throw errorSentinel;
- });
- goog.events.listen(database, 'rollback', function(e) {
- rollbacked = true;
- });
- database.execute('INSERT INTO Test VALUES(?, ?)', 'd', 'delta');
-
- try {
- database.rollback();
- fail('Should have thrown an error');
- } catch (ex) {
- assertEquals(errorSentinel, ex);
- assertTrue('Should still be in the transaction',
- database.isInTransaction());
- }
- assertFalse('Should not have been rolled back since we threw an error ' +
- 'in beforerollback', rollbacked);
- goog.events.removeAll(database);
- database.rollback();
-}
-
-</script>
-</body>
-</html>