def test_add_sub(): u = Quantity("u", length, 10) v = Quantity("v", length, 5) w = Quantity("w", time, 2) assert isinstance(u + v, Add) assert (u + v.convert_to(u)) == (1 + S.Half)*u # TODO: eventually add this: # assert (u + v).convert_to(u) == (1 + S.Half)*u assert isinstance(u - v, Add) assert (u - v.convert_to(u)) == S.Half*u
def test_add_sub(): u = Quantity("u", length, 10) v = Quantity("v", length, 5) w = Quantity("w", time, 2) assert isinstance(u + v, Add) assert (u + v.convert_to(u)) == (1 + S.Half) * u # TODO: eventually add this: # assert (u + v).convert_to(u) == (1 + S.Half)*u assert isinstance(u - v, Add) assert (u - v.convert_to(u)) == S.Half * u
def test_convert_to(): q = Quantity("q1", length, 5000) assert q.convert_to(m) == 5000*m assert speed_of_light.convert_to(m / s) == 299792458 * m / s # TODO: eventually support this kind of conversion: # assert (2*speed_of_light).convert_to(m / s) == 2 * 299792458 * m / s assert day.convert_to(s) == 86400*s # Wrong dimension to convert: assert q.convert_to(s) == q assert speed_of_light.convert_to(m) == speed_of_light
def test_convert_to(): q = Quantity("q1") q.set_global_relative_scale_factor(S(5000), meter) assert q.convert_to(m) == 5000 * m assert speed_of_light.convert_to(m / s) == 299792458 * m / s # TODO: eventually support this kind of conversion: # assert (2*speed_of_light).convert_to(m / s) == 2 * 299792458 * m / s assert day.convert_to(s) == 86400 * s # Wrong dimension to convert: assert q.convert_to(s) == q assert speed_of_light.convert_to(m) == speed_of_light
def test_add_sub(): u = Quantity("u") v = Quantity("v") w = Quantity("w") u.set_global_relative_scale_factor(S(10), meter) v.set_global_relative_scale_factor(S(5), meter) w.set_global_relative_scale_factor(S(2), second) assert isinstance(u + v, Add) assert (u + v.convert_to(u)) == (1 + S.Half) * u # TODO: eventually add this: # assert (u + v).convert_to(u) == (1 + S.Half)*u assert isinstance(u - v, Add) assert (u - v.convert_to(u)) == S.Half * u
def test_add_sub(): u = Quantity("u") v = Quantity("v") w = Quantity("w") u.set_dimension(length) v.set_dimension(length) w.set_dimension(time) u.set_scale_factor(S(10)) v.set_scale_factor(S(5)) w.set_scale_factor(S(2)) assert isinstance(u + v, Add) assert (u + v.convert_to(u)) == (1 + S.Half)*u # TODO: eventually add this: # assert (u + v).convert_to(u) == (1 + S.Half)*u assert isinstance(u - v, Add) assert (u - v.convert_to(u)) == S.Half*u
def test_mul_div(): u = Quantity("u", length, 10) assert 1 / u == u**(-1) assert u / 1 == u v1 = u / Quantity("t", time, 2) v2 = Quantity("v", length / time, 5) # Pow only supports structural equality: assert v1 != v2 assert v1 == v2.convert_to(v1) # TODO: decide whether to allow such expression in the future # (requires somehow manipulating the core). #assert u / Quantity(length, 2) == 5 assert u * 1 == u ut1 = u * Quantity("t", time, 2) ut2 = Quantity("ut", length*time, 20) # Mul only supports structural equality: assert ut1 != ut2 assert ut1 == ut2.convert_to(ut1) # Mul only supports structural equality: assert u * Quantity("lp1", length**-1, 2) != 20 assert u**0 == 1 assert u**1 == u # TODO: Pow only support structural equality: assert u ** 2 != Quantity("u2", length ** 2, 100) assert u ** -1 != Quantity("u3", length ** -1, 0.1) assert u ** 2 == Quantity("u2", length ** 2, 100).convert_to(u) assert u ** -1 == Quantity("u3", length ** -1, S.One/10).convert_to(u)
def test_mul_div(): u = Quantity("u") v = Quantity("v") t = Quantity("t") ut = Quantity("ut") v2 = Quantity("v") u.set_dimension(length) v.set_dimension(length) t.set_dimension(time) ut.set_dimension(length*time) v2.set_dimension(length/time) u.set_scale_factor(S(10)) v.set_scale_factor(S(5)) t.set_scale_factor(S(2)) ut.set_scale_factor(S(20)) v2.set_scale_factor(S(5)) assert 1 / u == u**(-1) assert u / 1 == u v1 = u / t v2 = v # Pow only supports structural equality: assert v1 != v2 assert v1 == v2.convert_to(v1) # TODO: decide whether to allow such expression in the future # (requires somehow manipulating the core). # assert u / Quantity('l2', dimension=length, scale_factor=2) == 5 assert u * 1 == u ut1 = u * t ut2 = ut # Mul only supports structural equality: assert ut1 != ut2 assert ut1 == ut2.convert_to(ut1) # Mul only supports structural equality: lp1 = Quantity("lp1") lp1.set_dimension(length**-1) lp1.set_scale_factor(S(2)) assert u * lp1 != 20 assert u**0 == 1 assert u**1 == u # TODO: Pow only support structural equality: u2 = Quantity("u2") u3 = Quantity("u3") u2.set_dimension(length**2) u3.set_dimension(length**-1) u2.set_scale_factor(S(100)) u3.set_scale_factor(S(1)/10) assert u ** 2 != u2 assert u ** -1 != u3 assert u ** 2 == u2.convert_to(u) assert u ** -1 == u3.convert_to(u)