예제 #1
0
def test_convert_to_family():
    um = firkin.UnitManager()
    um.add(firkin.SIFamily(base='l', name='liter'))

    f = firkin.Family(name='brit', base='gallon')
    f.add('barrel', 36, 'gallon')
    f.add('kilderkin', 0.5, 'barrel')
    f.add('firkin', 0.5, 'kilderkin')
    um.add(f, other='liter', factor=4.54609)
    um.add(firkin.Family(base='°C'))
    um.add(firkin.Family(base='°F'),
           other='°C',
           offset=(-32 / 1.8),
           factor=5.0 / 9)

    assert um.convert_to_family(1, 'firkin',
                                'liter') == (Decimal("40.91481"), 'l')
    assert um.convert_to_family(0.01, 'firkin',
                                'liter') == (Decimal("409.1481"), 'ml')
    assert um.convert_to_family(1e-5, 'gallon',
                                'liter') == (Decimal("45.4609"), 'µl')

    assert um.convert_to_family(1, 'l', 'brit') == (Decimal("0.219969248299"),
                                                    'gallon')

    assert um.convert_to_family(
        50, 'l',
        'brit') == (Decimal("1.222051379438888888888888889"), 'firkin')

    assert um.convert_to_family(1, 'barrel', 'brit') == (1, 'barrel')
    assert um.convert_to_family(32, '°F', '°C') == (Decimal("-8E-12"), '°C')
    assert um.convert_to_family(100, '°C', '°F') == (Decimal("212.0"), '°F')
    assert um.convert_to_family(1, '°C', 'brit') == (None, None)
예제 #2
0
def test_convert_to_group():
    um=firkin.UnitManager()    
    um.add(firkin.SIFamily(base='l', name='liter'), groups='metric')
    f=firkin.Family(name='brit', base='gallon')
    f.add('barrel', 36, 'gallon')
    f.add('kilderkin', 0.5, 'barrel')
    f.add('firkin', 0.5, 'kilderkin')
    um.add(f, other='liter',  factor=4.54609, groups='brit')

    assert um.convert_to_group(1, 'firkin', 'metric') == (Decimal("40.9148100"),
                                                         'l')
예제 #3
0
def test_convert_to_unit():
    um = firkin.UnitManager()
    um.add(firkin.SIFamily(base='l', name='liter'))

    f = firkin.Family(name='brit', base='gallon')
    f.add('barrel', 36, 'gallon')
    f.add('kilderkin', 0.5, 'barrel')
    f.add('firkin', 0.5, 'kilderkin')
    um.add(f, other='liter', factor=4.54609)
    um.add(firkin.Family(base='°C'))
    um.add(firkin.Family(base='°F'),
           other='°C',
           offset=(-32 / 1.8),
           factor=5.0 / 9)

    assert um.convert_to_unit(1e4, 'ml', 'l') == (10, 'l')
    assert um.convert_to_unit(1, 'firkin', 'gallon') == (9, 'gallon')
    assert um.convert_to_unit(1, 'firkin', 'ml') == (Decimal("40914.81"), 'ml')

    assert um.convert_to_unit(32, '°F', '°C') == (Decimal("-8E-12"), '°C')
    assert um.convert_to_unit(100, '°C', '°F') == (Decimal("212.0"), '°F')
    assert um.convert_to_unit(1, '°C', 'ml') == (None, None)
예제 #4
0
def test_convert():
    fam = firkin.SIFamily('m')
    assert fam.convert(1, 'm', 'mm') == (1000, 'mm')
    assert fam.convert(5.2, 'km', 'm') == (5200, 'm')
예제 #5
0
def test_autoconvert():
    fam = firkin.SIFamily('m')
    assert fam.autoconvert(2e-8, 'm') == (20, 'nm')
    assert fam.autoconvert(2e8, 'm') == (200, 'Mm')
    assert fam.autoconvert(2e7, 'mm') == (20, 'km')