public void CheckMessageFiltering_MessagesFiltered_ReturnsFilteredList()
        {
            //Arrange
            MessageFrame messages = new MessageFrame();

            String[]  filters = { "18", "test" };
            const int EXPECTED_MESSAGES_COUNT = 20;
            int       correctOutputCounter    = 0;
            var       chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
            Random    rand  = new Random();

            String[]        sortingMethods = { "Username", "Timestamp", "All Criteria" };
            List <String[]> output;

            //Act
            for (int i = 0; i < EXPECTED_MESSAGES_COUNT; i++)
            {
                Guid    id = new Guid();
                Message m  = new Message("test", DateTime.Now, id, new User("test", "test", "18"));
                messages.NewUserMessage(m);
            }

            for (int i = 0; i <= 300; i++)
            {
                Guid    id = new Guid();
                Message m  = new Message("test", DateTime.Now, id, new User("test" + rand.Next(chars.Length), "test", i.ToString()));
                messages.NewUserMessage(m);
            }

            List <Message> messageList = messages.messages.ToList();

            Shuffle(messageList);
            output = messages.DisplayFiltered_Messages(filters, "All Criteria", true);

            foreach (String[] message in output)
            {
                correctOutputCounter = ((message[0] == "test") && (message[3] == "18")) ? correctOutputCounter + 1 : correctOutputCounter;
            }

            //Assert
            Assert.AreEqual(EXPECTED_MESSAGES_COUNT, correctOutputCounter);
        }