summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/db/msgdb/test/unit/test_maildb.js
blob: 9b6bca930350549585b0ef659e09ba0f9d3b26c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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);
}