public void BasicStatisticTrackerTest()
        {
            AList alist = NewList();
            AListStatisticTracker <T> tracker = alist.StatisticTracker(_selector);

            double sum = 0, sumOfSquares = 0;

            for (int i = 0; i < 250; i++)
            {
                Add(alist, i, _r.Next(alist.Count));
                sum          += i;
                sumOfSquares += i * i;
                Assert.AreEqual(sum, tracker.Statistic.SumTotal);
                Assert.AreEqual(sumOfSquares, tracker.Statistic.SumOfSquares);
            }
        }
        public void CanTrackMultipleLists()
        {
            AList alist1 = NewList(), alist2 = NewList();

            AListStatisticTracker <T> tracker = alist1.StatisticTracker(_selector);

            alist2.AddObserver(tracker);

            double sum = 0, sumOfSquares = 0;

            for (int i = 0; i < 250; i++)
            {
                var alist = (i & 1) == 0 ? alist1 : alist2;
                Add(alist, i, _r.Next(alist.Count));
                sum          += i;
                sumOfSquares += i * i;
                Assert.AreEqual(sum, tracker.Statistic.SumTotal);
                Assert.AreEqual(sumOfSquares, tracker.Statistic.SumOfSquares);
            }
        }