def test_interpolation_ramps(): t = Value(0) for x in range(-2, 5): exp = Interpolation(0, x, t) for i in range(-10, 20): t.set(i / 10) assert exp == simplify(exp) == t * x
def test_value_setting(): exp = Value(4) assert exp == 4 exp.set(6) assert exp == 6 with pytest.raises(ValueError): exp.set(6, 7)
def test_value_fix_1(): exp = Value(6) exp.fix() assert exp == 6 with pytest.raises(ValueError): exp.set(4) assert exp == 6 assert simplify(exp) == 6 assert isinstance(simplify(exp), Constant)
def test_interpolation(): val1 = Value(0, 1, 5, 1) val2 = Value(10, 1, 0, 2) t = Value(0) exp = Interpolation(val1, val2, t) assert all(exp == simplify(exp)) assert all(exp == (0, 1, 5, 1)) t.set(1) assert all(exp == simplify(exp)) assert all(exp == (10, 1, 0, 2)) t.set(0.5) assert all(exp == simplify(exp)) assert all(exp == (5, 1, 2.5, 1.5))
def test_index_get(): val = Value(1, 2, 3) assert val[1] == 2 assert val[2] == 3 assert val[-2] == 2 assert val[-3] == 1 assert all(val[:-1] == (1, 2)) assert val[-1:] == (3, ) with pytest.raises(IndexError): val[3] with pytest.raises(IndexError): val[-80] assert len(val[1:1]) == 0 assert len(val[2:1]) == 0 with pytest.raises(TypeError): val[None] first_item = val[0] last_item = val[-1] first_two = val[:2] assert first_item == 1 assert last_item == 3 assert all(first_two == (1, 2)) val.set(2, 3, 4) assert first_item == 2 assert last_item == 4 assert all(first_two == (2, 3)) assert len(val[1]) == 1 assert len(val[:1]) == 1 assert len(val[1:]) == 2 assert len(val[:]) == 3 assert len(val[:-1]) == 2
def test_concat(): val = Value(3) cat = Concat(val, 2, Value(5, 4)) assert all(cat == (3, 2, 5, 4)) val.set(8) assert all(cat == (8, 2, 5, 4))