Пример #1
0
        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));
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        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.");
        }