Example #1
0
def test_units():
    nT = get_unit('nT')
    assert str(nT) == 'nanotesla'
    assert str(nT.abbrev) == 'nT'

    R_E = get_unit('R_E')
    assert str(R_E) == 'earth radii'
    assert str(R_E.abbrev) == 'R_E'
Example #2
0
def test_unit_composition():
    kamodo = Kamodo('m[kg] = x', verbose=True)
    kamodo['v[km/s]'] = 'y'
    kamodo['p(x,y)'] = 'm*v'
    try:
        assert get_unit(kamodo.signatures['p']['units']) == get_unit('kg*km/s')
    except:
        print(kamodo.signatures)
        raise
Example #3
0
def test_compose_unit_add():
    kamodo = Kamodo(verbose=True)

    @kamodofy(units='m', arg_units={'x': 'kg'})
    def a(x):
        return x

    kamodo['a'] = a
    kamodo['b(y[cm])[km]'] = 'y'
    kamodo['c(x,y)[km]'] = '2*a + 3*b'
    assert kamodo.c.meta['arg_units']['x'] == str(get_abbrev(get_unit('kg')))
    assert kamodo.c.meta['arg_units']['y'] == str(get_abbrev(get_unit('cm')))
    result = 2*(3)/1000 + 3*(3)
    assert kamodo.c(3, 3) == result
Example #4
0
def test_multi_unit_composition():
    kamodo = Kamodo('a(x[s])[km] = x', verbose=True)
    kamodo['b(x[cm])[g]'] = 'x'
    kamodo['c'] = 'b(a)'
    print(kamodo.c.meta)
    assert kamodo.c.meta['units'] == 'g'
    assert kamodo.c.meta['arg_units']['x'] == str(get_abbrev(get_unit('s')))
Example #5
0
def test_get_arg_units():

    def assign_unit(symbol, **units):
        if isinstance(symbol, str):
            symbol = sympify(symbol)
        return symbol.subs(units)

    f_units = assign_unit('f(x,y)', x=get_unit('s'), y=get_unit('hour'))
    g_units = assign_unit('g(a,b,c)', a=get_unit('km'), b=get_unit('cm'), c=get_unit('m'))
    unit_registry = {
        sympify('f(x,y)'): f_units,
        f_units: get_unit('kg/m^3'),
        sympify('g(a,b,c)'): g_units,
        g_units: get_unit('m^2')
    }
    x, c = symbols('x c')
    result = get_arg_units(sympify('h(g(f(x,y)))'), unit_registry)
    assert result[x] == get_unit('s')
    result = get_arg_units(sympify('f(x,y)*g(a,b,c)'), unit_registry)
    assert result[c] == get_unit('m')
Example #6
0
def test_get_unit_quantity():
    from kamodo import get_unit
    mykm = get_unit_quantity('mykm', 'km', scale_factor=2)
    mygm = get_unit_quantity('mygm', 'gram', scale_factor=4)
    assert str(mykm.convert_to(get_unit('m'))) == '2000*meter'
    assert str(mygm.convert_to(get_unit('kg'))) == 'kilogram/250'
Example #7
0
def test_get_unit():
    assert get_unit('kg/m^3') == get_unit('kg/m**3')
Example #8
0
def test_get_unit_quantity():
    mykm = get_unit_quantity('mykm', 'km', scale_factor=2)
    mygm = get_unit_quantity('mygm', 'gram', scale_factor=4)
    assert str(convert_to(mykm, get_unit('m'))) == '2000*meter'
    assert str(convert_to(mygm, get_unit('kg'))) == 'kilogram/250'
Example #9
0
def test_get_unit_fail():
    with pytest.raises(NameError):
        get_unit('unregistered units$')
    with pytest.raises(NameError):
        get_unit('runregistered')
Example #10
0
def test_frequency_units():
    omega = get_unit('rad')/get_unit('s')
    freq = get_unit('deg')/get_unit('s')
    kamodo_units = get_kamodo_unit_system()
    convert_unit_to(omega, freq, kamodo_units)
Example #11
0
def test_broken_unit():
    k = Kamodo()
    k['f[N]'] = 'x'

    get_unit('newton')
    get_unit('N')