Revision control

Copy as Markdown

Other Tools

/* -*- 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]);
}
}
}