示例#1
0
        private SingleNumberConversation GetDummyConversation()
        {
            SingleNumberConversation conversation = new SingleNumberConversation(GetDummyContact());

            conversation.AddMessage(GetMessage1());
            conversation.AddMessage(GetMessage2());
            conversation.AddMessage(GetMessage3());

            return(conversation);
        }
        public void StandardConversationTest()
        {
            SingleNumberConversation conversation = new SingleNumberConversation(GetDummyContact());

            conversation.AddMessage(GetMessage1());
            conversation.AddMessage(GetMessage3());
            conversation.AddMessage(GetMessage2());
            conversation.AddMessage(GetMessage4());

            TextMessage[] textMessagesExpected = { GetMessage1(), GetMessage2(), GetMessage3(), GetMessage4() };
            VerifyMessagesMatch(conversation, textMessagesExpected);
        }
        public void EmptyTest()
        {
            SingleNumberConversation conversation = new SingleNumberConversation(GetDummyContact());
            Assert.AreEqual(0, conversation.MessageCount);

            int messagesSeen = 0;
            foreach (IConversationMessage message in conversation)
            {
                messagesSeen++;
            }
            Assert.AreEqual(0, messagesSeen);
        }
        public void CalculateEmptyStatisticsTest()
        {
            Contact dummyContact = DummyConversationDataGenerator.GetContacts(DummyContactId.NeverTexter)[0];
            IConversation conversation = new SingleNumberConversation(dummyContact);
            IConversationStatistics statsActual = ConversationStatisticsGenerator.CalculateStatistics(conversation);

            Assert.AreEqual(0, statsActual.MessagesSent);
            Assert.AreEqual(0, statsActual.MessagesReceived);
            Assert.AreEqual(0, statsActual.MessagesExchanged);
            Assert.AreEqual(0, statsActual.DayCount);
            Assert.AreEqual(0, statsActual.MessagesPerDay);
        }
示例#5
0
        public void NullMessageContentsTest()
        {
            SingleNumberConversation conversation = new SingleNumberConversation(GetDummyContact());

            conversation.AddMessage(GetMessage1());
            conversation.AddMessage(GetMessage3());
            conversation.AddMessage(GetNullContentMessage());
            conversation.AddMessage(GetMessage4());

            TextMessage[] textMessagesExpected = { GetMessage1(), GetMessage3(), GetMessage4() };
            VerifyMessagesMatch(conversation, textMessagesExpected);
        }
        public void CalculateEmptyStatisticsTest()
        {
            Contact                 dummyContact = DummyConversationDataGenerator.GetContacts(DummyContactId.NeverTexter)[0];
            IConversation           conversation = new SingleNumberConversation(dummyContact);
            IConversationStatistics statsActual  = ConversationStatisticsGenerator.CalculateStatistics(conversation);

            Assert.AreEqual(0, statsActual.MessagesSent);
            Assert.AreEqual(0, statsActual.MessagesReceived);
            Assert.AreEqual(0, statsActual.MessagesExchanged);
            Assert.AreEqual(0, statsActual.DayCount);
            Assert.AreEqual(0, statsActual.MessagesPerDay);
        }
示例#7
0
        public void EmptyTest()
        {
            SingleNumberConversation conversation = new SingleNumberConversation(GetDummyContact());

            Assert.AreEqual(0, conversation.MessageCount);

            int messagesSeen = 0;

            foreach (IConversationMessage message in conversation)
            {
                messagesSeen++;
            }
            Assert.AreEqual(0, messagesSeen);
        }
        private void LoadMessage(Dictionary<string, IConversation> conversationHashTable, TextMessage message, ILoadingProgressCallback progressCallback)
        {
            CheckForCancel(progressCallback);

            string conversationKey;
            PhoneNumber messagePhoneNumber = new PhoneNumber(message.Address, message.Country);
            string phoneNumberStripped = PhoneNumber.Strip(messagePhoneNumber);

            if (message.ChatId != null)
            {
                conversationKey = message.ChatId;
            }
            else
            {
                conversationKey = phoneNumberStripped;
            }

            if (string.IsNullOrEmpty(conversationKey))
            {
                return;
            }

            Contact unknownContact = new Contact(Contact.UnknownContactId, null, null, null, messagePhoneNumber);
            message.Contact = GetContactByPhoneNumber(messagePhoneNumber);
            if (message.Contact == null)
            {
                message.Contact = unknownContact;
            }
            else
            {
                //
                // Update the contact's phone number to include country information.
                //

                foreach (PhoneNumber contactPhoneNumber in message.Contact.PhoneNumbers)
                {
                    if (PhoneNumber.NumbersAreEquivalent(contactPhoneNumber, messagePhoneNumber))
                    {
                        contactPhoneNumber.Country = message.Country;
                        break;
                    }
                }
            }

            IConversation conversation;
            if (conversationHashTable.ContainsKey(conversationKey))
            {
                conversation = conversationHashTable[conversationKey];

                // If The contact is not part of the conversation, add them here. This can happen with "orphaned" chat
                // messages.
                if (!message.Contact.Equals(unknownContact) && !conversation.AssociatedContacts.Contains(message.Contact))
                {
                    conversation.AssociatedContacts.Add(message.Contact);
                }
            }
            else if (message.ChatId != null)
            {
                // It's possible to have "orphaned" chat messages, where they appear in the message database with a chat ID
                // but the chat ID was not in the chat room database. Handle those here.
                List<IContact> chatContacts = new List<IContact>();
                if (!message.Contact.Equals(unknownContact))
                {
                    chatContacts.Add(message.Contact);
                }
                conversation = new ChatConversation(chatContacts);
                conversationHashTable.Add(message.ChatId, conversation);
            }
            else
            {
                conversation = new SingleNumberConversation(unknownContact);
                conversationHashTable.Add(conversationKey, conversation);
            }

            _messageLookupTable.Add(message.MessageId, message);

            conversation.AddMessage(message);

            IncrementWorkProgress(progressCallback);
        }
        private void LoadContact(Dictionary<string, IConversation> conversationHashTable, IContact contact, ILoadingProgressCallback progressCallback)
        {
            foreach (PhoneNumber contactPhoneNumber in contact.PhoneNumbers)
            {
                CheckForCancel(progressCallback);

                string strippedNumber = PhoneNumber.Strip(contactPhoneNumber);

                //
                // If multiple contacts share a single phone number, the duplicate phone numbers are ignored and
                // only the first contact seen is associated with the number.
                //

                if (!conversationHashTable.ContainsKey(strippedNumber))
                {
                    SingleNumberConversation conversation = new SingleNumberConversation(contact);
                    conversationHashTable.Add(strippedNumber, conversation);
                }

                if (!_contactLookupTable.ContainsKey(strippedNumber))
                {
                    _contactLookupTable[strippedNumber] = contact;
                }
            }

            IncrementWorkProgress(progressCallback);
        }
        private SingleNumberConversation GetDummyConversation()
        {
            SingleNumberConversation conversation = new SingleNumberConversation(GetDummyContact());

            conversation.AddMessage(GetMessage1());
            conversation.AddMessage(GetMessage2());
            conversation.AddMessage(GetMessage3());

            return conversation;
        }
        public void EmptyMessageAccessTest()
        {
            SingleNumberConversation conversation = new SingleNumberConversation(GetDummyContact());

            conversation.GetMessage(0);
        }
示例#12
0
        public void NegativeMessageIndexTest()
        {
            SingleNumberConversation conversation = GetDummyConversation();

            conversation.GetMessage(-1);
        }
示例#13
0
        public void OutOfRangeMessageAccessTest()
        {
            SingleNumberConversation conversation = GetDummyConversation();

            conversation.GetMessage(conversation.MessageCount);
        }
示例#14
0
        public void EmptyMessageAccessTest()
        {
            SingleNumberConversation conversation = new SingleNumberConversation(GetDummyContact());

            conversation.GetMessage(0);
        }