Exemplo n.º 1
0
        public void testTimers()
        {
            var timers = new Timers <double>();

            O.freezeNow("2008/11/11 11:11:11");
            timers.add(0.0, millisAhead(100), () => call(0));
            O.wait(() => didCall(0));
            IsFalse(timers.has(0.0));
            timers.add(0.0, millisAhead(100), () => call(0));
            timers.add(1.0, millisAhead(100), () => call(1));
            O.wait(() => didCall(0));
            O.wait(() => didCall(1));
            timers.add(0.0, millisAhead(1000), () => call(0));
            Bombs(() => timers.add(0.0, millisAhead(100), () => call(1)), "value exists");
            timers.replace(0.0, millisAhead(100), () => call(1));
            O.wait(() => didCall(1));
            IsFalse(timers.remove(0.0));
            timers.replace(0.0, millisAhead(200), () => call(1));
            IsTrue(timers.remove(0.0));
            O.sleep(300);
            IsFalse(didCall(1));
            timers.add(0.0, millisAhead(800), () => call(0)); // adding removeOne tracking to Timers::clear method added
            timers.add(1.0, millisAhead(800), () => call(1)); // enough overhead to require loosening this deadline by 400 millis.
            timers.clear();
            O.sleep(300);
            IsFalse(didCall(0));
            IsFalse(didCall(1));
            timers.add(1.0, Objects.now().AddMilliseconds(100), d => call((int)d));
            O.wait(() => didCall(1));
            IsFalse(didCall(0));
        }
Exemplo n.º 2
0
        public static void waitMatches <T>(T expected, Producer <T> actual)
        {
            var actual_ = default(T);

            try { O.wait(() => (actual_ = actual()).Equals(expected)); }
            catch (Exception e) {
                if (actual_.ToString().Equals(expected.ToString()))
                {
                    Bomb.toss(
                        "actual != but string matched\n" + expected + "\n" +
                        "actual Type:" + actual_.GetType().FullName + "\n" +
                        "expected type:" + expected.GetType().FullName, e);
                }
                Bomb.toss(actual_ + "\n    Did not match\n" + expected, e);
            }
        }
Exemplo n.º 3
0
        public void testTimerSequence()
        {
            Objects.freezeNow("2008/11/11 11:11:11");
            double currentState = -1;
            var    sequence     = new TimerSequence <double>(d => { currentState = d; });

            sequence.add(1.1, 500);
            sequence.add(2.2, 500);
            sequence.add(3.3);
            IsFalse(sequence.running());
            // starts in 1.1
            sequence.startAsOf(O.now());
            O.wait(() => currentState == 1.1);
            IsTrue(sequence.running());
            Objects.advanceNow(500);
            O.wait(() => currentState == 2.2);
            Objects.advanceNow(500);
            O.wait(() => currentState == 3.3);
            IsFalse(sequence.running());

            sequence.startAsOf(O.now());
            O.wait(() => currentState == 1.1);
            Objects.advanceNow(500);
            O.wait(() => currentState == 2.2);
            sequence.startAsOf(O.now());
            O.wait(() => currentState == 1.1);
            Objects.advanceNow(500);
            O.wait(() => currentState == 2.2);
            Objects.advanceNow(500);
            O.wait(() => currentState == 3.3);

            // starts in 2.2
            var asOf = O.now();

            Objects.advanceNow(500);
            sequence.startAsOf(asOf);
            O.wait(() => currentState == 2.2);
            Objects.advanceNow(500);
            O.wait(() => currentState == 3.3);

            // starts in 3.3
            asOf         = O.now();
            currentState = -1;
            Objects.advanceNow(1000);
            sequence.startAsOf(asOf);
            O.wait(() => currentState == 3.3);
        }