Example #1
0
def test_save_and_retrieve_energy():
    energy = Energy(10, 5)
    with time_traveler() as T:
        T( 0); assert energy == 10
        T( 1); energy.use(5)
        T( 2); assert energy == 5
        T(3)
        saved = energy.used
        saved_used, saved_used_at = energy.used, energy.used_at
        T(11)
        assert energy == 7
        loaded_energy = Energy(10, 5, used=saved_used, used_at=saved_used_at)
        assert loaded_energy == 7
        assert loaded_energy == energy
        loaded_energy2 = Energy(10, 5)
        loaded_energy2.used = saved_used
        loaded_energy2.used_at = saved_used_at
        assert loaded_energy2 == 7
        assert loaded_energy2 == energy
        loaded_energy3 = object.__new__(Energy)
        loaded_energy3.__init__(10, 5, used=saved_used, used_at=saved_used_at)
        assert loaded_energy3 == 7
        assert loaded_energy3 == energy
        loaded_energy4 = object.__new__(Energy)
        loaded_energy4.used = saved_used
        loaded_energy4.used_at = saved_used_at
        loaded_energy4.__init__(10, 5, used=saved_used, used_at=saved_used_at)
        assert loaded_energy4 == 7
        assert loaded_energy4 == energy
Example #2
0
def recover_energy():
    energy = Energy(10, 5)
    with time_traveler() as T:
        T(0)
        energy.use(1)
        T(1)
        assert energy == 9
        assert energy.recover_in() == 4
        T(2)
        assert energy == 9
        assert energy.recover_in() == 3
        T(3)
        assert energy == 9
        assert energy.recover_in() == 2
        T(4)
        assert energy == 9
        assert energy.recover_in() == 1
        T(5)
        assert energy == 10
        assert energy.recover_in() == None
        T(6)
        assert energy == 10
        assert energy.recover_in() == None
        T(99)
        assert energy == 10
        assert energy.recover_in() == None
Example #3
0
def test_float_recovery_interval():
    energy = Energy(10, 0.5)
    with time_traveler() as T:
        T( 0); energy == 10
        T( 1); energy.use(3)
        T( 2); energy == 9
        T( 3); energy == 10
Example #4
0
def use_energy_in_the_future():
    energy = Energy(10, 5)
    with time_traveler() as T:
        T( 5); energy.use()
        T( 6); assert energy.passed() == 1
        with raises(ValueError):
            T( 0); energy.passed()
Example #5
0
def test_extra_energy():
    energy = Energy(10, 300)
    with time_traveler() as T:
        T(0)
        energy.set(15)
        T(1)
        assert energy == 15
        assert energy.recover_in() is None
        assert energy.recover_fully_in() is None
        T(2)
        energy.use()
        assert energy.recover_in() is None
        assert energy.recover_fully_in() is None
        T(6)
        energy.use(6)
        T(7)
        assert energy.recover_in() == 299
        assert energy.recover_fully_in() == 599
        T(8)
        assert energy.recover_in() == 298
        assert energy.recover_fully_in() == 598
        T(9)
        energy.set(15)
        assert energy.recover_in() is None
        assert energy.recover_fully_in() is None
        T(10)
        assert energy.recover_in() is None
        assert energy.recover_fully_in() is None
Example #6
0
def test_future_tulerance():
    energy = Energy(10, 5, future_tolerance=4)
    with time_traveler() as T:
        T(5)
        energy.use()
        # used at the past
        T(6)
        assert energy.passed() == 1
        assert energy == 9
        # used at the near future
        T(4)
        assert energy.passed() == 0
        assert energy == 9
        T(3)
        assert energy.passed() == 0
        assert energy == 9
        T(2)
        assert energy.passed() == 0
        assert energy == 9
        T(1)
        assert energy.passed() == 0
        assert energy == 9
        # used at the remote future
        T(0)
        with raises(ValueError):
            energy.passed()
Example #7
0
def set_max_energy():
    energy = Energy(10, 300)
    with time_traveler() as T:
        T(0)
        assert energy == 10
        T(1)
        energy.max = 11
        T(2)
        assert energy == 11
        T(3)
        energy.use()
        T(4)
        assert energy == 10
        T(5)
        energy.max = 12
        T(6)
        assert energy == 10
        T(7)
        energy.max = 9
        T(8)
        assert energy == 9
        T(9)
        energy.max = 1
        T(10)
        assert energy == 1
        T(11)
        energy.max = 10
        T(12)
        assert energy == 10
Example #8
0
def test_save_and_retrieve_energy():
    energy = Energy(10, 5)
    with time_traveler() as T:
        T(0)
        assert energy == 10
        T(1)
        energy.use(5)
        T(2)
        assert energy == 5
        T(3)
        saved = energy.used
        saved_used, saved_used_at = energy.used, energy.used_at
        T(11)
        assert energy == 7
        loaded_energy = Energy(10, 5, used=saved_used, used_at=saved_used_at)
        assert loaded_energy == 7
        assert loaded_energy == energy
        loaded_energy2 = Energy(10, 5)
        loaded_energy2.used = saved_used
        loaded_energy2.used_at = saved_used_at
        assert loaded_energy2 == 7
        assert loaded_energy2 == energy
        loaded_energy3 = object.__new__(Energy)
        loaded_energy3.__init__(10, 5, used=saved_used, used_at=saved_used_at)
        assert loaded_energy3 == 7
        assert loaded_energy3 == energy
        loaded_energy4 = object.__new__(Energy)
        loaded_energy4.used = saved_used
        loaded_energy4.used_at = saved_used_at
        loaded_energy4.__init__(10, 5, used=saved_used, used_at=saved_used_at)
        assert loaded_energy4 == 7
        assert loaded_energy4 == energy
Example #9
0
def test_future_tulerance():
    energy = Energy(10, 5, future_tolerance=4)
    with time_traveler() as T:
        T(5)
        energy.use()
        # used at the past
        T(6)
        assert energy.passed() == 1
        assert energy == 9
        # used at the near future
        T(4)
        assert energy.passed() == 0
        assert energy == 9
        T(3)
        assert energy.passed() == 0
        assert energy == 9
        T(2)
        assert energy.passed() == 0
        assert energy == 9
        T(1)
        assert energy.passed() == 0
        assert energy == 9
        # used at the remote future
        T(0)
        with raises(ValueError):
            energy.passed()
Example #10
0
def test_use_energy_after_recovered():
    energy = Energy(10, 5)
    with time_traveler() as T:
        T( 0); energy.use(10)
        T( 1); assert energy == 0
        T( 5); energy.use(1)
        T( 6); assert energy == 0
Example #11
0
def test_extra_energy():
    energy = Energy(10, 300)
    with time_traveler() as T:
        T(0)
        energy.set(15)
        T(1)
        assert energy == 15
        assert energy.recover_in() is None
        assert energy.recover_fully_in() is None
        T(2)
        energy.use()
        assert energy.recover_in() is None
        assert energy.recover_fully_in() is None
        T(6)
        energy.use(6)
        T(7)
        assert energy.recover_in() == 299
        assert energy.recover_fully_in() == 599
        T(8)
        assert energy.recover_in() == 298
        assert energy.recover_fully_in() == 598
        T(9)
        energy.set(15)
        assert energy.recover_in() is None
        assert energy.recover_fully_in() is None
        T(10)
        assert energy.recover_in() is None
        assert energy.recover_fully_in() is None
Example #12
0
def test_restored_extra_energy():
    energy = Energy(10, 300, used=-5, used_at=0)
    assert energy.used_at is None
    with time_traveler() as T:
        T(0)
        assert energy == 15
        energy.use()
        assert energy == 14
    assert energy.used_at is None
Example #13
0
def repr_energy():
    energy = Energy(10, 300)
    with time_traveler() as T:
        T(0)
        assert repr(energy) == '<Energy 10/10>'
        T(1)
        energy.use()
        T(2)
        assert repr(energy) == '<Energy 9/10 recover in 04:59>'
Example #14
0
def test_restored_extra_energy():
    energy = Energy(10, 300, used=-5, used_at=0)
    assert energy.used_at is None
    with time_traveler() as T:
        T(0)
        assert energy == 15
        energy.use()
        assert energy == 14
    assert energy.used_at is None
Example #15
0
def use_energy_in_the_future():
    energy = Energy(10, 5)
    with time_traveler() as T:
        T(5)
        energy.use()
        T(6)
        assert energy.passed() == 1
        with raises(ValueError):
            T(0)
            energy.passed()
Example #16
0
def use_energy_after_recovered():
    energy = Energy(10, 5)
    with time_traveler() as T:
        T(0)
        energy.use(10)
        T(1)
        assert energy == 0
        T(5)
        energy.use(1)
        T(6)
        assert energy == 0
Example #17
0
def recover_energy():
    energy = Energy(10, 5)
    with time_traveler() as T:
        T( 0); energy.use(1)
        T( 1); assert energy == 9;  assert energy.recover_in() == 4
        T( 2); assert energy == 9;  assert energy.recover_in() == 3
        T( 3); assert energy == 9;  assert energy.recover_in() == 2
        T( 4); assert energy == 9;  assert energy.recover_in() == 1
        T( 5); assert energy == 10; assert energy.recover_in() == None
        T( 6); assert energy == 10; assert energy.recover_in() == None
        T(99); assert energy == 10; assert energy.recover_in() == None
Example #18
0
def float_recovery_interval():
    energy = Energy(10, 0.5)
    with time_traveler() as T:
        T(0)
        energy == 10
        T(1)
        energy.use(3)
        T(2)
        energy == 9
        T(3)
        energy == 10
Example #19
0
def save_and_retrieve_energy():
    energy = Energy(10, 5)
    with time_traveler() as T:
        T( 0); assert energy == 10
        T( 1); energy.use(5)
        T( 2); assert energy == 5
        saved = energy.used
        saved_used, saved_used_at = energy.used, energy.used_at
        loaded_energy = Energy(10, 5, used=saved_used, used_at=saved_used_at)
        assert energy == loaded_energy
        T( 3); assert energy == 5
Example #20
0
def test_use_energy():
    energy = Energy(10, 1000)
    assert energy == 10
    energy.use()
    assert energy == 9
    energy.use(5)
    assert energy == 4
    with raises(ValueError):
        energy.use(5)
    energy.use(10, timestamp() + 10000)
    with raises(ValueError):
        energy.use(10, timestamp() + 10010)
Example #21
0
def pickle_energy():
    try:
        import cPickle as pickle
    except ImportError:
        import pickle
    energy = Energy(10, 5)
    with time_traveler() as T:
        T( 0); assert energy == 10
        T( 1); energy.use(5)
        T( 2); assert energy == 5
        dump = pickle.dumps(energy)
        loaded_energy = pickle.loads(dump)
        assert energy == loaded_energy
        T( 3); assert energy == 5
Example #22
0
def save_and_retrieve_energy():
    energy = Energy(10, 5)
    with time_traveler() as T:
        T(0)
        assert energy == 10
        T(1)
        energy.use(5)
        T(2)
        assert energy == 5
        saved = energy.used
        saved_used, saved_used_at = energy.used, energy.used_at
        loaded_energy = Energy(10, 5, used=saved_used, used_at=saved_used_at)
        assert energy == loaded_energy
        T(3)
        assert energy == 5
Example #23
0
def test_use_energy_at_the_future():
    energy = Energy(10, 5)
    with time_traveler() as T:
        T( 5); energy.use()
        T( 6); assert energy.passed() == 1
        with raises(ValueError):
            T( 4); energy.passed()
        with raises(ValueError):
            T( 3); energy.passed()
        with raises(ValueError):
            T( 2); energy.passed()
        with raises(ValueError):
            T( 1); energy.passed()
        with raises(ValueError):
            T( 0); energy.passed()
Example #24
0
def test_set_max_energy():
    energy = Energy(10, 300)
    with time_traveler() as T:
        T( 0); assert energy == 10
        T( 1); energy.max = 11
        T( 2); assert energy == 11
        T( 3); energy.use()
        T( 4); assert energy == 10
        T( 5); energy.max = 12
        T( 6); assert energy == 10
        T( 7); energy.max = 9
        T( 8); assert energy == 9
        T( 9); energy.max = 1
        T(10); assert energy == 1
        T(11); energy.max = 10
        T(12); assert energy == 10
Example #25
0
def test_pickle_energy_compatibility():
    try:
        import cPickle as pickle
    except ImportError:
        import pickle
    energy = OldEnergy(10, 5)
    with time_traveler() as T:
        T( 0); assert energy == 10
        T( 1); energy.use(5)
        T( 2); assert energy == 5
        dump = pickle.dumps(energy)
        dump = dump.replace('energytests\nOldEnergy'.encode(),
                            'energy\nEnergy'.encode())
        loaded_energy = pickle.loads(dump)
        assert type(loaded_energy) is Energy
        T( 3); assert energy == 5
        T( 3); assert loaded_energy == 5
Example #26
0
def pickle_energy():
    try:
        import cPickle as pickle
    except ImportError:
        import pickle
    energy = Energy(10, 5)
    with time_traveler() as T:
        T(0)
        assert energy == 10
        T(1)
        energy.use(5)
        T(2)
        assert energy == 5
        dump = pickle.dumps(energy)
        loaded_energy = pickle.loads(dump)
        assert energy == loaded_energy
        T(3)
        assert energy == 5
Example #27
0
def use_energy_while_recovering():
    energy = Energy(10, 5)
    with time_traveler() as T:
        T(0)
        energy.use(5)
        T(1)
        assert energy == 5
        T(2)
        energy.use(1)
        T(3)
        assert energy == 4
        T(4)
        assert energy == 4
        T(5)
        assert energy == 5
        T(6)
        assert energy == 5
        T(7)
        energy.use(1)
        T(8)
        assert energy == 4
        T(9)
        assert energy == 4
        T(10)
        assert energy == 5
Example #28
0
def bonus_energy():
    energy = Energy(10, 300)
    with time_traveler() as T:
        T(0)
        energy.set(15)
        T(1)
        assert energy == 15
        T(2)
        energy.use()
        T(3)
        assert energy.recover_in() is None
        T(4)
        energy.use()
        T(5)
        assert energy.recover_in() is None
        T(6)
        energy.use(5)
        T(7)
        assert energy.recover_in() == 299
        T(8)
        assert energy.recover_in() == 298
        T(9)
        energy.set(15)
        T(10)
        assert energy.recover_in() is None
Example #29
0
def test_pickle_energy_compatibility():
    try:
        import cPickle as pickle
    except ImportError:
        import pickle
    energy = OldEnergy(10, 5)
    with time_traveler() as T:
        T(0)
        assert energy == 10
        T(1)
        energy.use(5)
        T(2)
        assert energy == 5
        dump = pickle.dumps(energy)
        dump = dump.replace('energytests\nOldEnergy'.encode(),
                            'energy\nEnergy'.encode())
        loaded_energy = pickle.loads(dump)
        assert type(loaded_energy) is Energy
        T(3)
        assert energy == 5
        T(3)
        assert loaded_energy == 5
Example #30
0
def test_use_energy_at_the_future():
    energy = Energy(10, 5)
    with time_traveler() as T:
        T(5)
        energy.use()
        T(6)
        assert energy.passed() == 1
        with raises(ValueError):
            T(4)
            energy.passed()
        with raises(ValueError):
            T(3)
            energy.passed()
        with raises(ValueError):
            T(2)
            energy.passed()
        with raises(ValueError):
            T(1)
            energy.passed()
        with raises(ValueError):
            T(0)
            energy.passed()
Example #31
0
def test_recover_energy():
    energy = Energy(10, 5)
    with time_traveler() as T:
        T(0)
        energy.use(2)
        T(1)
        assert energy == 8
        assert energy.recover_in() == 4
        assert energy.recover_fully_in() == 9
        T(2)
        assert energy == 8
        assert energy.recover_in() == 3
        assert energy.recover_fully_in() == 8
        T(3)
        assert energy == 8
        assert energy.recover_in() == 2
        assert energy.recover_fully_in() == 7
        T(4)
        assert energy == 8
        assert energy.recover_in() == 1
        assert energy.recover_fully_in() == 6
        T(5)
        assert energy == 9
        assert energy.recover_in() == 5
        assert energy.recover_fully_in() == 5
        T(9)
        assert energy == 9
        assert energy.recover_in() == 1
        assert energy.recover_fully_in() == 1
        T(10)
        assert energy == 10
        assert energy.recover_in() == None
        assert energy.recover_fully_in() == None
        T(100)
        assert energy == 10
        assert energy.recover_in() == None
        assert energy.recover_fully_in() == None
Example #32
0
def test_recover_energy():
    energy = Energy(10, 5)
    with time_traveler() as T:
        T(0)
        energy.use(2)
        T(1)
        assert energy == 8
        assert energy.recover_in() == 4
        assert energy.recover_fully_in() == 9
        T(2)
        assert energy == 8
        assert energy.recover_in() == 3
        assert energy.recover_fully_in() == 8
        T(3)
        assert energy == 8
        assert energy.recover_in() == 2
        assert energy.recover_fully_in() == 7
        T(4)
        assert energy == 8
        assert energy.recover_in() == 1
        assert energy.recover_fully_in() == 6
        T(5)
        assert energy == 9
        assert energy.recover_in() == 5
        assert energy.recover_fully_in() == 5
        T(9)
        assert energy == 9
        assert energy.recover_in() == 1
        assert energy.recover_fully_in() == 1
        T(10)
        assert energy == 10
        assert energy.recover_in() == None
        assert energy.recover_fully_in() == None
        T(100)
        assert energy == 10
        assert energy.recover_in() == None
        assert energy.recover_fully_in() == None
Example #33
0
def use_energy():
    energy = Energy(10, 1000)
    assert energy == 10
    energy.use()
    assert energy == 9
    energy.use(5)
    assert energy == 4
    with raises(ValueError):
        energy.use(5)
Example #34
0
def use_energy():
    energy = Energy(10, 1000)
    assert energy == 10
    energy.use()
    assert energy == 9
    energy.use(5)
    assert energy == 4
    with raises(ValueError):
        energy.use(5)
Example #35
0
def bonus_energy():
    energy = Energy(10, 300)
    with time_traveler() as T:
        T( 0); energy.set(15)
        T( 1); assert energy == 15
        T( 2); energy.use()
        T( 3); assert energy.recover_in() is None
        T( 4); energy.use()
        T( 5); assert energy.recover_in() is None
        T( 6); energy.use(5)
        T( 7); assert energy.recover_in() == 299
        T( 8); assert energy.recover_in() == 298
        T( 9); energy.set(15)
        T(10); assert energy.recover_in() is None
Example #36
0
def test_use_energy_while_recovering():
    energy = Energy(10, 5)
    with time_traveler() as T:
        T( 0); energy.use(5)
        T( 1); assert energy == 5
        T( 2); energy.use(1)
        T( 3); assert energy == 4
        T( 4); assert energy == 4
        T( 5); assert energy == 5
        T( 6); assert energy == 5
        T( 7); energy.use(1)
        T( 8); assert energy == 4
        T( 9); assert energy == 4
        T(10); assert energy == 5
Example #37
0
def test_recovery_quantity():
    with time_traveler() as T:
        T(0)
        energy = Energy(10, 3, 2)
        assert energy == 10
        energy.use()
        energy.use()
        energy.use()
        assert energy == 7
        T(1)
        assert energy == 7
        T(2)
        assert energy == 7
        T(3)
        assert energy == 9
        T(6)
        assert energy == 10
Example #38
0
def test_recovery_quantity():
    with time_traveler() as T:
        T(0)
        energy = Energy(10, 3, 2)
        assert energy == 10
        energy.use()
        energy.use()
        energy.use()
        assert energy == 7
        T(1)
        assert energy == 7
        T(2)
        assert energy == 7
        T(3)
        assert energy == 9
        T(6)
        assert energy == 10
Example #39
0
def reset_energy():
    energy = Energy(10, 1000)
    energy.use(5)
    assert energy == 5
    energy.reset()
    assert energy == 10
Example #40
0
def test_repr_energy():
    energy = Energy(10, 300)
    with time_traveler() as T:
        T( 0); assert repr(energy) == '<Energy 10/10>'
        T( 1); energy.use()
        T( 2); assert repr(energy) == '<Energy 9/10 recover in 04:59>'
Example #41
0
def test_use_energy():
    energy = Energy(10, 1000)
    assert energy == 10
    energy.use()
    assert energy == 9
    energy.use(5)
    assert energy == 4
    with raises(ValueError):
        energy.use(5)
    energy.use(10, timestamp() + 10000)
    assert energy.current(timestamp() + 10000) == 0
    with raises(ValueError):
        energy.use(10, timestamp() + 10010)
    energy.use(10, timestamp() + 10010, force=True)
    assert energy.recover_in(timestamp() + 10010) == 11000
    assert energy.current(timestamp() + 10010) == 0
    assert energy.debt(timestamp() + 10010) == 10
    energy.use(10, timestamp() + 10010, force=True)
    assert energy.recover_in(timestamp() + 10010) == 21000
    assert energy.debt(timestamp() + 10010) == 20
Example #42
0
def test_use_energy():
    energy = Energy(10, 1000)
    assert energy == 10
    energy.use()
    assert energy == 9
    energy.use(5)
    assert energy == 4
    with raises(ValueError):
        energy.use(5)
    energy.use(10, timestamp() + 10000)
    assert energy.current(timestamp() + 10000) == 0
    with raises(ValueError):
        energy.use(10, timestamp() + 10010)
    energy.use(10, timestamp() + 10010, force=True)
    assert energy.recover_in(timestamp() + 10010) == 11000
    assert energy.current(timestamp() + 10010) == 0
    assert energy.debt(timestamp() + 10010) == 10
    energy.use(10, timestamp() + 10010, force=True)
    assert energy.recover_in(timestamp() + 10010) == 21000
    assert energy.debt(timestamp() + 10010) == 20
Example #43
0
def test_reset_energy():
    energy = Energy(10, 1000)
    energy.use(5)
    assert energy == 5
    energy.reset()
    assert energy == 10