public _TimerTask_78(StatisticsCollector _enclosing)
 {
     this._enclosing = _enclosing;
 }
        /// <exception cref="System.Exception"/>
        public virtual void TestMovingWindow()
        {
            StatisticsCollector collector = new StatisticsCollector(1);

            StatisticsCollector.TimeWindow window = new StatisticsCollector.TimeWindow("test"
                                                                                       , 6, 2);
            StatisticsCollector.TimeWindow   sincStart = StatisticsCollector.SinceStart;
            StatisticsCollector.TimeWindow[] windows   = new StatisticsCollector.TimeWindow[] {
                sincStart, window
            };
            StatisticsCollector.Stat stat = collector.CreateStat("m1", windows);
            stat.Inc(3);
            collector.Update();
            NUnit.Framework.Assert.AreEqual(0, stat.GetValues()[window].GetValue());
            NUnit.Framework.Assert.AreEqual(3, stat.GetValues()[sincStart].GetValue());
            stat.Inc(3);
            collector.Update();
            NUnit.Framework.Assert.AreEqual((3 + 3), stat.GetValues()[window].GetValue());
            NUnit.Framework.Assert.AreEqual(6, stat.GetValues()[sincStart].GetValue());
            stat.Inc(10);
            collector.Update();
            NUnit.Framework.Assert.AreEqual((3 + 3), stat.GetValues()[window].GetValue());
            NUnit.Framework.Assert.AreEqual(16, stat.GetValues()[sincStart].GetValue());
            stat.Inc(10);
            collector.Update();
            NUnit.Framework.Assert.AreEqual((3 + 3 + 10 + 10), stat.GetValues()[window].GetValue
                                                ());
            NUnit.Framework.Assert.AreEqual(26, stat.GetValues()[sincStart].GetValue());
            stat.Inc(10);
            collector.Update();
            stat.Inc(10);
            collector.Update();
            NUnit.Framework.Assert.AreEqual((3 + 3 + 10 + 10 + 10 + 10), stat.GetValues()[window
                                            ].GetValue());
            NUnit.Framework.Assert.AreEqual(46, stat.GetValues()[sincStart].GetValue());
            stat.Inc(10);
            collector.Update();
            NUnit.Framework.Assert.AreEqual((3 + 3 + 10 + 10 + 10 + 10), stat.GetValues()[window
                                            ].GetValue());
            NUnit.Framework.Assert.AreEqual(56, stat.GetValues()[sincStart].GetValue());
            stat.Inc(12);
            collector.Update();
            NUnit.Framework.Assert.AreEqual((10 + 10 + 10 + 10 + 10 + 12), stat.GetValues()[window
                                            ].GetValue());
            NUnit.Framework.Assert.AreEqual(68, stat.GetValues()[sincStart].GetValue());
            stat.Inc(13);
            collector.Update();
            NUnit.Framework.Assert.AreEqual((10 + 10 + 10 + 10 + 10 + 12), stat.GetValues()[window
                                            ].GetValue());
            NUnit.Framework.Assert.AreEqual(81, stat.GetValues()[sincStart].GetValue());
            stat.Inc(14);
            collector.Update();
            NUnit.Framework.Assert.AreEqual((10 + 10 + 10 + 12 + 13 + 14), stat.GetValues()[window
                                            ].GetValue());
            NUnit.Framework.Assert.AreEqual(95, stat.GetValues()[sincStart].GetValue());
            //  test Stat class
            IDictionary updaters = collector.GetUpdaters();

            NUnit.Framework.Assert.AreEqual(updaters.Count, 2);
            IDictionary <string, StatisticsCollector.Stat> ststistics = collector.GetStatistics
                                                                            ();

            NUnit.Framework.Assert.IsNotNull(ststistics["m1"]);
            StatisticsCollector.Stat newStat = collector.CreateStat("m2");
            NUnit.Framework.Assert.AreEqual(newStat.name, "m2");
            StatisticsCollector.Stat st = collector.RemoveStat("m1");
            NUnit.Framework.Assert.AreEqual(st.name, "m1");
            NUnit.Framework.Assert.AreEqual((10 + 10 + 10 + 12 + 13 + 14), stat.GetValues()[window
                                            ].GetValue());
            NUnit.Framework.Assert.AreEqual(95, stat.GetValues()[sincStart].GetValue());
            st = collector.RemoveStat("m1");
            // try to remove stat again
            NUnit.Framework.Assert.IsNull(st);
            collector.Start();
            // waiting 2,5 sec
            Sharpen.Thread.Sleep(2500);
            NUnit.Framework.Assert.AreEqual(69, stat.GetValues()[window].GetValue());
            NUnit.Framework.Assert.AreEqual(95, stat.GetValues()[sincStart].GetValue());
        }