public static IncomingEmailMessageMock CreateWithRandomData(int numAttachments)
        {
            var mock = new IncomingEmailMessageMock
                {
                    Subject = RandomDataHelper.GetSubject(_seed++),
                    RawBody = RandomDataHelper.GetBody(_seed++),
                    PlainTextBody = RandomDataHelper.GetBody(_seed++),
                    ConversationIndex = RandomDataHelper.GetConversationId(_seed++),
                    ConversationTopic = RandomDataHelper.GetSubject(_seed++),
                    SenderName = RandomDataHelper.GetName(_seed++),
                    SenderAlias = RandomDataHelper.GetAlias(_seed++)
                };
            mock.SenderAddress = mock.SenderAlias + "@blah.com";
            mock.ToAddresses = GetRandomAliasList(Rand.Next(1, 30));
            mock.CcAddresses = GetRandomAliasList(Rand.Next(0, 30));
            mock.ToNames = GetRandomNamesList(mock.ToAddresses.Count());
            mock.CcNames = GetRandomNamesList(mock.CcAddresses.Count());
            mock.SentOn = new DateTime(Rand.Next(2012, 2525), Rand.Next(1, 12), Rand.Next(1, 28));
            mock.ReceivedOn = new DateTime(Rand.Next(2012, 2525), Rand.Next(1, 12), Rand.Next(1, 28));
            mock.IsHtmlBody = Rand.Next(0, 1) == 0;

            var attachments = new List<IIncomingEmailAttachment>(numAttachments);
            for (var i = 0; i < numAttachments; i++)
            {
                attachments.Add(new IncomingAttachmentMock(Rand.Next(1, 100000)));
            }

            mock.Attachments = attachments;
            
            return mock;
        }
        public void TestGetLastMessageTextBasic()
        {
            var message = new IncomingEmailMessageMock();

            var lastMessageText = RandomDataHelper.GetBody(_rand.Next());
            var numOfReplies = _rand.Next(0, 100);
            var bodyBuilder = new StringBuilder(lastMessageText);

            for (var i = 0; i < numOfReplies; i++)
            {
                bodyBuilder.AppendLine(RandomDataHelper.GetRandomMessageSeparator(_rand.Next()));
                bodyBuilder.Append(RandomDataHelper.GetBody(_rand.Next()));
            }
            message.PlainTextBody = bodyBuilder.ToString();

            Assert.AreEqual(lastMessageText, EmailBodyProcessingUtils.GetLastMessageText(message), "Verifying extracted last message text correctness");
        }
        IIncomingEmailMessage[] CreateMessages(
            int numMessages,
            string subjectBase,
            DateTime startTime,
            TimeSpan intervalBetweenMessages)
        {
            var result = new IIncomingEmailMessage[numMessages];
            var receivedTime = startTime;
            for (var i = 0; i < numMessages; ++i, receivedTime += intervalBetweenMessages)
            {
                var message = new IncomingEmailMessageMock
                {
                    Subject = string.Format("{0}_{1}", subjectBase, i),
                    ReceivedOn = receivedTime
                };
                result[i] = message;
            }

            return result;
        }