public void TestArgumentExceptions() { var messages = new List <MessageSummary> { new MessageSummary(0) }; var orderBy = new OrderBy[] { OrderBy.Arrival }; var emptyOrderBy = new OrderBy[0]; Assert.Throws <ArgumentNullException> (() => MessageSorter.Sort((List <MessageSummary>)null, orderBy)); Assert.Throws <ArgumentNullException> (() => MessageSorter.Sort(messages, null)); Assert.Throws <ArgumentException> (() => MessageSorter.Sort(messages, emptyOrderBy)); Assert.Throws <ArgumentException> (() => MessageSorter.Sort(messages, orderBy)); Assert.Throws <ArgumentNullException> (() => MessageSorter.Sort((IEnumerable <MessageSummary>)null, orderBy)); Assert.Throws <ArgumentNullException> (() => MessageSorter.Sort((IEnumerable <MessageSummary>)messages, null)); Assert.Throws <ArgumentException> (() => MessageSorter.Sort((IEnumerable <MessageSummary>)messages, emptyOrderBy)); Assert.Throws <ArgumentException> (() => MessageSorter.Sort((IEnumerable <MessageSummary>)messages, orderBy)); }
/// <summary> /// Gets mail headers /// </summary> /// <param name="searchTerm"></param> /// <returns></returns> public static ObservableCollection <MailHeader> GetMailHeaders(string searchTerm) { ObservableCollection <MailHeader> headerList = new ObservableCollection <MailHeader>(); if (LoggedIn) { var inbox = client.Inbox; inbox.Open(FolderAccess.ReadWrite); //Debug.WriteLine("Total messages: {0}", inbox.Count); var orderBy = new[] { OrderBy.ReverseArrival }; List <IMessageSummary> msgList = null; //If the searchTerm isnt null or empty, search for messages matching the searchterm and sort them //in reverse arrival order if (!string.IsNullOrEmpty(searchTerm)) { //Search query var query = (SearchQuery.SubjectContains(searchTerm)).Or(SearchQuery.BodyContains(searchTerm)); //Searches the mail folder using the query var uidList = inbox.Search(query); if (uidList.Count != 0) { //Fetches the messagesummaries of uidList msgList = inbox.Fetch(uidList, MessageSummaryItems.Envelope | MessageSummaryItems.UniqueId).ToList(); //Sorts msgList in reverse arrival sort order MessageSorter.Sort(msgList, orderBy); isMailSearchSuccess = true; } else { isMailSearchSuccess = false; return(null); } } //If the searchTerm is null or empty, fetch all messagesummaries and sort them in //reverse arrival order else { //Fetches all messagesummaries msgList = inbox.Fetch(0, -1, MessageSummaryItems.Envelope | MessageSummaryItems.UniqueId).ToList(); if (msgList.Count != 0) { //Sorts msgList in reverse arrival sort order MessageSorter.Sort(msgList, orderBy); } else { return(null); } } foreach (MessageSummary summary in msgList) { MailHeader mailHeader = ConvertMessageSummary(summary); headerList.Add(mailHeader); } } else { if (Login()) { GetMailHeaders(searchTerm); } } return(headerList); }
public void TestSorting() { var messages = new List <MessageSummary> (); IList <MessageSummary> sorted; MessageSummary summary; summary = new MessageSummary(0); summary.Envelope = new Envelope(); summary.Envelope.Date = DateTimeOffset.Now; summary.Envelope.Subject = "aaaa"; summary.Envelope.From = InternetAddressList.Parse("Jeffrey Stedfast <*****@*****.**>"); summary.Envelope.To = InternetAddressList.Parse("Jeffrey Stedfast <*****@*****.**>"); summary.Envelope.Cc = new InternetAddressList(); summary.MessageSize = 520; messages.Add(summary); summary = new MessageSummary(1); summary.Envelope = new Envelope(); summary.Envelope.Date = DateTimeOffset.Now; summary.Envelope.Subject = "bbbb"; summary.Envelope.From = InternetAddressList.Parse("Jeffrey Stedfast <*****@*****.**>"); summary.Envelope.To = InternetAddressList.Parse("Jeffrey Stedfast <*****@*****.**>"); summary.Envelope.Cc = new InternetAddressList(); summary.MessageSize = 265; messages.Add(summary); summary = new MessageSummary(2); summary.Envelope = new Envelope(); summary.Envelope.Date = DateTimeOffset.Now; summary.Envelope.Subject = "cccc"; summary.Envelope.From = InternetAddressList.Parse("Jeffrey Stedfast <*****@*****.**>"); summary.Envelope.To = InternetAddressList.Parse("Jeffrey Stedfast <*****@*****.**>"); summary.Envelope.Cc = new InternetAddressList(); summary.MessageSize = 520; messages.Add(summary); sorted = MessageSorter.Sort(messages, new [] { OrderBy.Arrival }); Assert.AreEqual(0, sorted[0].Index, "Sorting by arrival failed."); Assert.AreEqual(1, sorted[1].Index, "Sorting by arrival failed."); Assert.AreEqual(2, sorted[2].Index, "Sorting by arrival failed."); sorted = MessageSorter.Sort(messages, new [] { OrderBy.ReverseArrival }); Assert.AreEqual(2, sorted[0].Index, "Sorting by reverse arrival failed."); Assert.AreEqual(1, sorted[1].Index, "Sorting by reverse arrival failed."); Assert.AreEqual(0, sorted[2].Index, "Sorting by reverse arrival failed."); sorted = MessageSorter.Sort(messages, new [] { OrderBy.Subject }); Assert.AreEqual(0, sorted[0].Index, "Sorting by subject failed."); Assert.AreEqual(1, sorted[1].Index, "Sorting by subject failed."); Assert.AreEqual(2, sorted[2].Index, "Sorting by subject failed."); sorted = MessageSorter.Sort(messages, new [] { OrderBy.ReverseSubject }); Assert.AreEqual(2, sorted[0].Index, "Sorting by reverse subject failed."); Assert.AreEqual(1, sorted[1].Index, "Sorting by reverse subject failed."); Assert.AreEqual(0, sorted[2].Index, "Sorting by reverse subject failed."); sorted = MessageSorter.Sort(messages, new [] { OrderBy.Size }); Assert.AreEqual(1, sorted[0].Index, "Sorting by size failed."); sorted = MessageSorter.Sort(messages, new [] { OrderBy.Size, OrderBy.Subject }); Assert.AreEqual(1, sorted[0].Index, "Sorting by size+subject failed."); Assert.AreEqual(0, sorted[1].Index, "Sorting by size+subject failed."); Assert.AreEqual(2, sorted[2].Index, "Sorting by size+subject failed."); sorted = MessageSorter.Sort(messages, new [] { OrderBy.ReverseSize, OrderBy.ReverseSubject }); Assert.AreEqual(2, sorted[0].Index, "Sorting by size+subject failed."); Assert.AreEqual(0, sorted[1].Index, "Sorting by size+subject failed."); Assert.AreEqual(1, sorted[2].Index, "Sorting by size+subject failed."); }