Felbook.Models.MessageService.NumberOfUnreadMessages C# (CSharp) Method

NumberOfUnreadMessages() public method

Zjistí počet nepřečtených zpráv daného uživatele
public NumberOfUnreadMessages ( User user ) : int
user User uživatel, jehož počet nepřečtených zpráv se bude zjišťovat
return int
        public int NumberOfUnreadMessages(User user)
        {
            // pomalejší, ale jistější algoritmus
            int count = 0;

            foreach (var message in user.Messages)
            {
                if (!user.ReadMessages.Contains(message))
                {
                    count++;
                }
            }

            return count;
            //return user.Messages.Count - user.ReadMessages.Count;
        }

Usage Example

示例#1
0
        public void NumberOfUnreadMessagesTest()
        {
            FelBookDBEntities DbEntities = new FelBookDBEntities();
            MessageService target = new MessageService(DbEntities);

            User mockSender = User.CreateUser(0, "test", "test",
                DateTime.Now, "mail", "sender", "");
            DbEntities.UserSet.AddObject(mockSender);
            User mockReciever = User.CreateUser(0, "test", "test",
                DateTime.Now, "mail", "reciever", "");
            DbEntities.UserSet.AddObject(mockReciever);
            DbEntities.SaveChanges();

            Assert.AreEqual(target.NumberOfUnreadMessages(mockReciever), 0);

            Message msg1 = Message.CreateMessage(0, "Text", DateTime.Now);
            msg1.Sender = mockSender;
            msg1.Recievers.Add(mockReciever);
            DbEntities.MessageSet.AddObject(msg1);
            DbEntities.SaveChanges();

            Assert.AreEqual(target.NumberOfUnreadMessages(mockReciever), 1);

            Message msg2 = Message.CreateMessage(0, "Text", DateTime.Now);
            msg2.Sender = mockSender;
            msg2.Recievers.Add(mockReciever);
            DbEntities.MessageSet.AddObject(msg2);
            DbEntities.SaveChanges();

            Assert.AreEqual(target.NumberOfUnreadMessages(mockReciever), 2);

            msg2.Readers.Add(mockReciever);
            DbEntities.SaveChanges();
            Assert.AreEqual(target.NumberOfUnreadMessages(mockReciever), 1);

            msg1.Readers.Add(mockReciever);
            DbEntities.SaveChanges();
            Assert.AreEqual(target.NumberOfUnreadMessages(mockReciever), 0);

            msg1.Readers.Remove(mockReciever);
            msg2.Readers.Remove(mockReciever);
            DbEntities.SaveChanges();
            Assert.AreEqual(target.NumberOfUnreadMessages(mockReciever), 2);

            DbEntities.MessageSet.DeleteObject(msg1);
            DbEntities.MessageSet.DeleteObject(msg2);
            DbEntities.UserSet.DeleteObject(mockReciever);
            DbEntities.UserSet.DeleteObject(mockSender);
            DbEntities.SaveChanges();
        }