summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/db/msgdb/test/unit/test_maildb.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/db/msgdb/test/unit/test_maildb.js')
-rw-r--r--comm/mailnews/db/msgdb/test/unit/test_maildb.js67
1 files changed, 67 insertions, 0 deletions
diff --git a/comm/mailnews/db/msgdb/test/unit/test_maildb.js b/comm/mailnews/db/msgdb/test/unit/test_maildb.js
new file mode 100644
index 0000000000..9b6bca9303
--- /dev/null
+++ b/comm/mailnews/db/msgdb/test/unit/test_maildb.js
@@ -0,0 +1,67 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+ * Test suite for msg database functions.
+ */
+
+/* import-globals-from ../../../../test/resources/MessageGenerator.jsm */
+load("../../../../resources/MessageGenerator.jsm");
+
+var dbService;
+var gTestFolder;
+var gCurTestNum = 0;
+var kNumTestMessages = 10;
+
+var gTestArray = [
+ function test_db_open() {
+ dbService = Cc["@mozilla.org/msgDatabase/msgDBService;1"].getService(
+ Ci.nsIMsgDBService
+ );
+ // Get the root folder
+ let root = localAccountUtils.incomingServer.rootFolder;
+ root.createSubfolder("dbTest", null);
+ gTestFolder = root.getChildNamed("dbTest");
+ let db = dbService.openFolderDB(gTestFolder, true);
+ Assert.notEqual(db, null);
+ db.dBFolderInfo.highWater = 10;
+ db.close(true);
+ db = dbService.openFolderDB(gTestFolder, true);
+ Assert.notEqual(db, null);
+ Assert.equal(db.dBFolderInfo.highWater, 10);
+ db.dBFolderInfo.onKeyAdded(15);
+ Assert.equal(db.dBFolderInfo.highWater, 15);
+ db.close(true);
+ db.forceClosed();
+ db = null;
+ doTest(++gCurTestNum);
+ },
+];
+
+function doTest(test) {
+ if (test <= gTestArray.length) {
+ dump("Doing test " + test + "\n");
+ gCurTestNum = test;
+
+ var testFn = gTestArray[test - 1];
+ // Set a limit of 10 seconds; if the notifications haven't arrived by then there's a problem.
+ do_timeout(10000, function () {
+ if (gCurTestNum == test) {
+ do_throw(
+ "Notifications not received in 10000 ms for operation " + testFn.name
+ );
+ }
+ });
+ try {
+ testFn();
+ } catch (ex) {
+ do_throw(ex);
+ }
+ } else {
+ do_test_finished(); // for the one in run_test()
+ }
+}
+
+function run_test() {
+ localAccountUtils.loadLocalMailAccount();
+ do_test_pending();
+ doTest(1);
+}