summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/local/test/unit/test_nsIMsgPluggableStore.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/local/test/unit/test_nsIMsgPluggableStore.js')
-rw-r--r--comm/mailnews/local/test/unit/test_nsIMsgPluggableStore.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/comm/mailnews/local/test/unit/test_nsIMsgPluggableStore.js b/comm/mailnews/local/test/unit/test_nsIMsgPluggableStore.js
new file mode 100644
index 0000000000..c9e7d63864
--- /dev/null
+++ b/comm/mailnews/local/test/unit/test_nsIMsgPluggableStore.js
@@ -0,0 +1,52 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/**
+ * nsIMsgPluggableStore interface tests
+ */
+
+function test_discoverSubFolders() {
+ let mailbox = setup_mailbox("none", create_temporary_directory());
+ mailbox.msgStore.discoverSubFolders(mailbox, true);
+}
+
+function test_sliceStream() {
+ let mailbox = setup_mailbox("none", create_temporary_directory());
+
+ let str = "Just a test string.";
+ let strStream = Cc["@mozilla.org/io/string-input-stream;1"].createInstance(
+ Ci.nsIStringInputStream
+ );
+ strStream.setData(str, str.length);
+
+ let sliced = mailbox.msgStore.sliceStream(strStream, 7, 4);
+
+ let s = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(
+ Ci.nsIScriptableInputStream
+ );
+ s.init(sliced);
+
+ let chunk = s.read(1024);
+ Assert.equal(chunk, "test", "Check we got the expected subset.");
+ Assert.equal(s.available(), 0, "Check no more bytes available.");
+ Assert.equal(s.read(1024), "", "Check read() returns EOF.");
+}
+
+// Return a wrapper which sets the store type before running fn().
+function withStore(store, fn) {
+ return () => {
+ Services.prefs.setCharPref("mail.serverDefaultStoreContractID", store);
+ fn();
+ };
+}
+
+const pluggableStores = [
+ "@mozilla.org/msgstore/berkeleystore;1",
+ "@mozilla.org/msgstore/maildirstore;1",
+];
+
+for (let store of pluggableStores) {
+ add_task(withStore(store, test_discoverSubFolders));
+ add_task(withStore(store, test_sliceStream));
+}