summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/compose/test/unit/test_splitRecipients.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/compose/test/unit/test_splitRecipients.js')
-rw-r--r--comm/mailnews/compose/test/unit/test_splitRecipients.js163
1 files changed, 163 insertions, 0 deletions
diff --git a/comm/mailnews/compose/test/unit/test_splitRecipients.js b/comm/mailnews/compose/test/unit/test_splitRecipients.js
new file mode 100644
index 0000000000..b51da1c7a2
--- /dev/null
+++ b/comm/mailnews/compose/test/unit/test_splitRecipients.js
@@ -0,0 +1,163 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+ * Test suite for nsMsgCompFields functions.
+ * Currently only tests nsIMsgCompFields::SplitRecipients
+ */
+
+var splitRecipientsTests = [
+ {
+ recipients: "me@foo.invalid",
+ emailAddressOnly: false,
+ count: 1,
+ result: ["me@foo.invalid"],
+ },
+ {
+ recipients: "me@foo.invalid, me2@foo.invalid",
+ emailAddressOnly: false,
+ count: 2,
+ result: ["me@foo.invalid", "me2@foo.invalid"],
+ },
+ {
+ recipients: '"foo bar" <me@foo.invalid>',
+ emailAddressOnly: false,
+ count: 1,
+ result: ["foo bar <me@foo.invalid>"],
+ },
+ {
+ recipients: '"foo bar" <me@foo.invalid>',
+ emailAddressOnly: true,
+ count: 1,
+ result: ["me@foo.invalid"],
+ },
+ {
+ recipients: '"foo bar" <me@foo.invalid>, "bar foo" <me2@foo.invalid>',
+ emailAddressOnly: false,
+ count: 2,
+ result: ["foo bar <me@foo.invalid>", "bar foo <me2@foo.invalid>"],
+ },
+ {
+ recipients: '"foo bar" <me@foo.invalid>, "bar foo" <me2@foo.invalid>',
+ emailAddressOnly: true,
+ count: 2,
+ result: ["me@foo.invalid", "me2@foo.invalid"],
+ },
+ {
+ recipients:
+ "A Group:Ed Jones <c@a.invalid>,joe@where.invalid,John <jdoe@one.invalid>;",
+ emailAddressOnly: false,
+ count: 3,
+ result: [
+ "Ed Jones <c@a.invalid>",
+ "joe@where.invalid",
+ "John <jdoe@one.invalid>",
+ ],
+ },
+ {
+ recipients:
+ "mygroup:;, empty:;, foo@foo.invalid, othergroup:bar@foo.invalid, bar2@foo.invalid;, y@y.invalid, empty:;",
+ emailAddressOnly: true,
+ count: 4,
+ result: [
+ "foo@foo.invalid",
+ "bar@foo.invalid",
+ "bar2@foo.invalid",
+ "y@y.invalid",
+ ],
+ },
+ {
+ recipients: "Undisclosed recipients:;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,",
+ emailAddressOnly: true,
+ count: 0,
+ result: [],
+ },
+ {
+ recipients: "a@xxx.invalid; b@xxx.invalid",
+ emailAddressOnly: true,
+ count: 2,
+ result: ["a@xxx.invalid", "b@xxx.invalid"],
+ },
+ {
+ recipients: "a@xxx.invalid; B <b@xxx.invalid>",
+ emailAddressOnly: false,
+ count: 2,
+ result: ["a@xxx.invalid", "B <b@xxx.invalid>"],
+ },
+ {
+ recipients: '"A " <a@xxx.invalid>; b@xxx.invalid',
+ emailAddressOnly: false,
+ count: 2,
+ result: ["A <a@xxx.invalid>", "b@xxx.invalid"],
+ },
+ {
+ recipients: "A <a@xxx.invalid>; B <b@xxx.invalid>",
+ emailAddressOnly: false,
+ count: 2,
+ result: ["A <a@xxx.invalid>", "B <b@xxx.invalid>"],
+ },
+ {
+ recipients:
+ "A (this: is, a comment;) <a.invalid>; g: (this: is, <a> comment;) C <c.invalid>, d.invalid;",
+ emailAddressOnly: false,
+ count: 3,
+ result: [
+ "A (this: is, a comment;) <a.invalid>",
+ "(this: is, <a> comment;) C <c.invalid>",
+ "d.invalid <>",
+ ],
+ },
+ {
+ recipients:
+ 'Mary Smith <mary@x.invalid>, extra:;, group:jdoe@example.invalid; Who? <one@y.invalid>; <boss@nil.invalid>, "Giant; \\"Big\\" Box" <sysservices@example.invalid>, ',
+ emailAddressOnly: false,
+ count: 5,
+ result: [
+ "Mary Smith <mary@x.invalid>",
+ "jdoe@example.invalid",
+ "Who? <one@y.invalid>",
+ "boss@nil.invalid",
+ 'Giant; "Big" Box <sysservices@example.invalid>',
+ ],
+ },
+ {
+ recipients: "Undisclosed recipients: a@foo.invalid ;;extra:;",
+ emailAddressOnly: true,
+ count: 1,
+ result: ["a@foo.invalid"],
+ },
+ {
+ recipients: "Undisclosed recipients:;;extra:a@foo.invalid;",
+ emailAddressOnly: true,
+ count: 1,
+ result: ["a@foo.invalid"],
+ },
+ {
+ recipients: "",
+ emailAddressOnly: false,
+ count: 0,
+ result: [],
+ },
+];
+
+function run_test() {
+ var fields = Cc[
+ "@mozilla.org/messengercompose/composefields;1"
+ ].createInstance(Ci.nsIMsgCompFields);
+
+ // As most of SplitRecipients functionality is in the nsIMsgHeaderParser
+ // functionality, here (at least initially), we're just interested in checking
+ // the basic argument/return combinations.
+
+ for (var part = 0; part < splitRecipientsTests.length; ++part) {
+ print("Test: " + splitRecipientsTests[part].recipients);
+ var result = fields.splitRecipients(
+ splitRecipientsTests[part].recipients,
+ splitRecipientsTests[part].emailAddressOnly
+ );
+
+ Assert.equal(splitRecipientsTests[part].count, result.length);
+
+ for (var item = 0; item < result.length; ++item) {
+ Assert.equal(splitRecipientsTests[part].result[item], result[item]);
+ }
+ }
+}