Exemple #1
0
    def test_repeating(self):
        time = TestingTimeFunction()
        callback = MockCallback()
        timer = Timer(callback, 10, repeat=True, _time_function=time)
        
        time.time = 7

        still_alive = timer.run()
        assert still_alive
        assert callback.nb_calls == 0
        assert timer.sleep_time() == 3

        time.time = 34

        still_alive = timer.run()
        assert still_alive
        assert callback.nb_calls == 1
        assert timer.sleep_time() == 6

        time.time = 40

        still_alive = timer.run()
        assert still_alive
        assert callback.nb_calls == 2
        assert timer.sleep_time() == 10
Exemple #2
0
    def test_cancel_repeating(self):
        time = TestingTimeFunction()
        callback = MockCallback()
        timer = Timer(callback, 10, repeat=True, _time_function=time)
        
        time.time = 10
        timer.run()
        time.time = 34

        still_alive = timer.run()
        assert still_alive
        assert callback.nb_calls == 2
        assert timer.sleep_time() == 6

        time.time = 40
        timer.cancel()

        for time.time in (40, 43, 60, 138):
            still_alive = timer.run()
            assert not still_alive
            assert callback.nb_calls == 2
            assert timer.sleep_time() == Decimal('inf')
Exemple #3
0
    def test_cancel(self):
        time = TestingTimeFunction()
        callback = MockCallback()
        timer = Timer(callback, 10, _time_function=time)
        
        time.time = 9

        still_alive = timer.run()
        assert still_alive
        assert timer.sleep_time() == 1

        timer.cancel()

        still_alive = timer.run()
        assert not still_alive
        assert callback.nb_calls == 0
        assert timer.sleep_time() == Decimal('inf')
Exemple #4
0
    def _non_repeating(self, decorate):
        for delay in (0, 1):
            time = TestingTimeFunction()
            callback = MockCallback()
            if decorate:
                timer = Timer.decorate(10, _time_function=time)(callback)
            else:
                timer = Timer(callback, 10, _time_function=time)
            
            still_alive = timer.run()
            assert still_alive
            assert callback.nb_calls == 0
            assert timer.sleep_time() == 10
            
            # Not yet
            time.time = 9
            
            still_alive = timer.run()
            assert still_alive
            assert callback.nb_calls == 0
            assert timer.sleep_time() == 1

            # Either just on time or after
            time.time = 10 + delay
            
            assert timer.sleep_time() == 0
            still_alive = timer.run()
            assert not still_alive
            assert callback.nb_calls == 1
            assert timer.sleep_time() == Decimal('inf')

            # More runs do nothing
            still_alive = timer.run()
            assert not still_alive
            assert callback.nb_calls == 1
            assert timer.sleep_time() == Decimal('inf')

            time.time = 15
            
            still_alive = timer.run()
            assert not still_alive
            assert callback.nb_calls == 1
            assert timer.sleep_time() == Decimal('inf')
Exemple #5
0
    def test_reset_repeating(self):
        time = TestingTimeFunction()
        callback = MockCallback()
        timer = Timer(callback, 10, repeat=True, _time_function=time)
        
        time.time = 12

        still_alive = timer.run()
        assert still_alive
        assert callback.nb_calls == 1
        assert timer.sleep_time() == 8

        timer.reset()
        assert timer.sleep_time() == 10

        time.time = 34
        assert timer.sleep_time() == 0
        
        timer.reset()
        assert timer.sleep_time() == 10
        
        still_alive = timer.run()
        assert still_alive
        assert callback.nb_calls == 1
        assert timer.sleep_time() == 10
Exemple #6
0
    def test_reset_late(self):
        time = TestingTimeFunction()
        callback = MockCallback()
        timer = Timer(callback, 10, _time_function=time)
        
        time.time = 13

        assert timer.sleep_time() == 0
        still_alive = timer.run()
        assert not still_alive
        assert callback.nb_calls == 1
        assert timer.sleep_time() == Decimal('inf')
        
        timer.reset()

        # reset brings back a "dead" timer.
        still_alive = timer.run()
        assert still_alive
        assert callback.nb_calls == 1
        assert timer.sleep_time() == 10

        time.time = 21
        
        still_alive = timer.run()
        assert still_alive
        assert callback.nb_calls == 1
        assert timer.sleep_time() == 2

        time.time = 30

        assert timer.sleep_time() == 0
        still_alive = timer.run()
        assert not still_alive
        assert callback.nb_calls == 2
        assert timer.sleep_time() == Decimal('inf')
Exemple #7
0
    def test_reset_early(self):
        time = TestingTimeFunction()
        callback = MockCallback()
        timer = Timer(callback, 10, _time_function=time)
        
        time.time = 7

        assert timer.sleep_time() == 3
        timer.reset()
        assert timer.sleep_time() == 10
        
        time.time = 16
        
        still_alive = timer.run()
        assert still_alive
        # reset delayed the trigger.
        assert callback.nb_calls == 0
        assert timer.sleep_time() == 1

        time.time = 17

        assert timer.sleep_time() == 0
        still_alive = timer.run()
        assert not still_alive
        assert callback.nb_calls == 1
        assert timer.sleep_time() == Decimal('inf')