def test_get_dimensions(): ''' Test various ways of getting/comparing the dimensions of a quantity. ''' q = 500 * ms assert get_dimensions(q) is get_or_create_dimension(q.dimensions._dims) assert get_dimensions(q) is q.dimensions assert q.has_same_dimensions(3 * second) dims = q.dimensions assert_equal(dims.get_dimension('time'), 1.) assert_equal(dims.get_dimension('length'), 0) assert get_dimensions(5) is DIMENSIONLESS assert get_dimensions(5.0) is DIMENSIONLESS assert get_dimensions(np.array(5, dtype=np.int)) is DIMENSIONLESS assert get_dimensions(np.array(5.0)) is DIMENSIONLESS assert get_dimensions(np.float32(5.0)) is DIMENSIONLESS assert get_dimensions(np.float64(5.0)) is DIMENSIONLESS assert is_scalar_type(5) assert is_scalar_type(5.0) assert is_scalar_type(np.array(5, dtype=np.int)) assert is_scalar_type(np.array(5.0)) assert is_scalar_type(np.float32(5.0)) assert is_scalar_type(np.float64(5.0)) with pytest.raises(TypeError): get_dimensions('a string') # wrong number of indices with pytest.raises(TypeError): get_or_create_dimension([1, 2, 3, 4, 5, 6]) # not a sequence with pytest.raises(TypeError): get_or_create_dimension(42)
def test_get_dimensions(): ''' Test various ways of getting/comparing the dimensions of a quantity. ''' q = 500 * ms assert get_dimensions(q) is get_or_create_dimension(q.dimensions._dims) assert get_dimensions(q) is q.dimensions assert q.has_same_dimensions(3 * second) dims = q.dimensions assert_equal(dims.get_dimension('time'), 1.) assert_equal(dims.get_dimension('length'), 0) assert get_dimensions(5) is DIMENSIONLESS assert get_dimensions(5.0) is DIMENSIONLESS assert get_dimensions(np.array(5, dtype=np.int)) is DIMENSIONLESS assert get_dimensions(np.array(5.0)) is DIMENSIONLESS assert get_dimensions(np.float32(5.0)) is DIMENSIONLESS assert get_dimensions(np.float64(5.0)) is DIMENSIONLESS assert is_scalar_type(5) assert is_scalar_type(5.0) assert is_scalar_type(np.array(5, dtype=np.int)) assert is_scalar_type(np.array(5.0)) assert is_scalar_type(np.float32(5.0)) assert is_scalar_type(np.float64(5.0)) assert_raises(TypeError, lambda: get_dimensions('a string')) # wrong number of indices assert_raises(TypeError, lambda: get_or_create_dimension([1, 2, 3, 4, 5, 6])) # not a sequence assert_raises(TypeError, lambda: get_or_create_dimension(42))
def test_str_repr(): ''' Test that str representations do not raise any errors and that repr fullfills eval(repr(x)) == x. ''' from numpy import array # necessary for evaluating repr units_which_should_exist = [ metre, meter, kilogram, kilogramme, second, amp, kelvin, mole, candle, radian, steradian, hertz, newton, pascal, joule, watt, coulomb, volt, farad, ohm, siemens, weber, tesla, henry, lumen, lux, becquerel, gray, sievert, katal, gram, gramme, molar, liter, litre ] # scaled versions of all these units should exist (we just check farad as an example) some_scaled_units = [ Yfarad, Zfarad, Efarad, Pfarad, Tfarad, Gfarad, Mfarad, kfarad, hfarad, dafarad, dfarad, cfarad, mfarad, ufarad, nfarad, pfarad, ffarad, afarad, zfarad, yfarad ] # some powered units powered_units = [cmetre2, Yfarad3] # Combined units complex_units = [ (kgram * metre2) / (amp * second3), 5 * (kgram * metre2) / (amp * second3), metre * second**-1, 10 * metre * second**-1, array([1, 2, 3]) * kmetre / second, np.ones(3) * nS / cm**2, Unit(1, dim=get_or_create_dimension(length=5, time=2)), 8000 * umetre**3, [0.0001, 10000] * umetre**3, 1 / metre, 1 / (coulomb * metre**2), Unit(1) / second, 3. * mM, 5 * mole / liter, 7 * liter / meter3 ] unitless = [second / second, 5 * second / second, Unit(1)] for u in itertools.chain(units_which_should_exist, some_scaled_units, powered_units, complex_units, unitless): assert (len(str(u)) > 0) assert_allclose(eval(repr(u)), u) # test the `DIMENSIONLESS` object assert str(DIMENSIONLESS) == '1' assert repr(DIMENSIONLESS) == 'Dimension()' # test DimensionMismatchError (only that it works without raising an error for error in [ DimensionMismatchError('A description'), DimensionMismatchError('A description', DIMENSIONLESS), DimensionMismatchError('A description', DIMENSIONLESS, second.dim) ]: assert len(str(error)) assert len(repr(error))
def test_str_repr(): ''' Test that str representations do not raise any errors and that repr fullfills eval(repr(x)) == x. ''' from numpy import array # necessary for evaluating repr units_which_should_exist = [metre, meter, kilogram, kilogramme, second, amp, kelvin, mole, candle, radian, steradian, hertz, newton, pascal, joule, watt, coulomb, volt, farad, ohm, siemens, weber, tesla, henry, lumen, lux, becquerel, gray, sievert, katal, gram, gramme, molar, liter, litre] # scaled versions of all these units should exist (we just check farad as an example) some_scaled_units = [Yfarad, Zfarad, Efarad, Pfarad, Tfarad, Gfarad, Mfarad, kfarad, hfarad, dafarad, dfarad, cfarad, mfarad, ufarad, nfarad, pfarad, ffarad, afarad, zfarad, yfarad] # some powered units powered_units = [cmetre2, Yfarad3] # Combined units complex_units = [(kgram * metre2)/(amp * second3), 5 * (kgram * metre2)/(amp * second3), metre * second**-1, 10 * metre * second**-1, array([1, 2, 3]) * kmetre / second, np.ones(3) * nS / cm**2, Unit(1, dim=get_or_create_dimension(length=5, time=2)), 8000*umetre**3, [0.0001, 10000] * umetre**3, 1/metre, 1/(coulomb*metre**2), Unit(1)/second, 3.*mM, 5*mole/liter, 7*liter/meter3] unitless = [second/second, 5 * second/second, Unit(1)] for u in itertools.chain(units_which_should_exist, some_scaled_units, powered_units, complex_units, unitless): assert(len(str(u)) > 0) assert_allclose(eval(repr(u)), u) # test the `DIMENSIONLESS` object assert str(DIMENSIONLESS) == '1' assert repr(DIMENSIONLESS) == 'Dimension()' # test DimensionMismatchError (only that it works without raising an error for error in [DimensionMismatchError('A description'), DimensionMismatchError('A description', DIMENSIONLESS), DimensionMismatchError('A description', DIMENSIONLESS, second.dim)]: assert len(str(error)) assert len(repr(error))