public void Statistics_Calculated_In_Constructor()
        {
            var chats = Data.GetChatsB();
            var calculator = new SummaryStatisticsCalculator();

            var lines = calculator.GetStatisticsFromEnumerable(chats.Select(chat => (double)chat.Lines));
            var minutes = calculator.GetStatisticsFromEnumerable(chats.Select(chat => (double)chat.Minutes));

            var collection = new ChatCollection(chats);

            Assert.AreEqual(lines, collection.LineStatistics);
            Assert.AreEqual(minutes, collection.MinuteStatistics);
        }
        public void Statistics_Updated_On_Add()
        {
            var collection = new ChatCollection(Data.GetChatsB());
            collection.Add(Data.GetChatA());

            var chats = Data.GetChatsB().ToList();
            chats.Add(Data.GetChatA());

            var calculator = new SummaryStatisticsCalculator();
            var lines = calculator.GetStatisticsFromEnumerable(chats.Select(chat => (double)chat.Lines));
            var minutes = calculator.GetStatisticsFromEnumerable(chats.Select(chat => (double)chat.Minutes));

            Assert.AreEqual(lines, collection.LineStatistics);
            Assert.AreEqual(minutes, collection.MinuteStatistics);
        }
        public void Overloads_Match()
        {
            var data = new[]
            {
                new { x = 1, y = 2 },
                new { x = 5, y = 17 },
                new { x = 12, y = -9 }
            };

            var calculator = new SummaryStatisticsCalculator();
            var selectorSummary = calculator.GetStatisticsFromEnumerable(data, obj => obj.x + obj.y);

            var array = data.Select(obj => (double)obj.x + obj.y);
            var nonSelectorSummary = calculator.GetStatisticsFromEnumerable(array);

            Assert.AreEqual(selectorSummary, nonSelectorSummary);
        }