/* -*- 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" ', emailAddressOnly: false, count: 1, result: ["foo bar "], }, { recipients: '"foo bar" ', emailAddressOnly: true, count: 1, result: ["me@foo.invalid"], }, { recipients: '"foo bar" , "bar foo" ', emailAddressOnly: false, count: 2, result: ["foo bar ", "bar foo "], }, { recipients: '"foo bar" , "bar foo" ', emailAddressOnly: true, count: 2, result: ["me@foo.invalid", "me2@foo.invalid"], }, { recipients: "A Group:Ed Jones ,joe@where.invalid,John ;", emailAddressOnly: false, count: 3, result: [ "Ed Jones ", "joe@where.invalid", "John ", ], }, { 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 ", emailAddressOnly: false, count: 2, result: ["a@xxx.invalid", "B "], }, { recipients: '"A " ; b@xxx.invalid', emailAddressOnly: false, count: 2, result: ["A ", "b@xxx.invalid"], }, { recipients: "A ; B ", emailAddressOnly: false, count: 2, result: ["A ", "B "], }, { recipients: "A (this: is, a comment;) ; g: (this: is, comment;) C , d.invalid;", emailAddressOnly: false, count: 3, result: [ "A (this: is, a comment;) ", "(this: is, comment;) C ", "d.invalid <>", ], }, { recipients: 'Mary Smith , extra:;, group:jdoe@example.invalid; Who? ; , "Giant; \\"Big\\" Box" , ', emailAddressOnly: false, count: 5, result: [ "Mary Smith ", "jdoe@example.invalid", "Who? ", "boss@nil.invalid", 'Giant; "Big" Box ', ], }, { 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]); } } }