def CreateUnitDatabaseLenTime(): """ :rtype: UnitDatabase :returns: Returns a unit database with length and time quantity types """ unit_database = units.UnitDatabase() unit_database.AddUnit("length", "milimeters", "mm", "%f * 1000.0", "%f / 1000.0") unit_database.AddUnit("length", "centimeters", "cm", "%f * 100.0", "%f / 100.0") unit_database.AddUnitBase("length", "meters", "m") unit_database.AddUnit("length", "kilometers", "km", "%f / 1000.0", "%f * 1000.0") unit_database.AddUnitBase("time", "seconds", "s") unit_database.AddUnit("time", "minutes", "minutes", "%f / 60.0", "%f * 60.0") unit_database.AddCategory(category="Table size", quantity_type="length", valid_units=["m", "cm"], default_unit="m") unit_database.AddCategory(category="City size", quantity_type="length", valid_units=["km", "m"], default_unit="km") unit_database.AddCategory(category="Time", quantity_type="time", default_unit="s") return unit_database
def CreateUnitDatabaseWellLength(): """ :rtype: UnitDatabase :returns: Returns a unit database with length and time quantity types """ unit_database = units.UnitDatabase() unit_database.AddUnit("length", "milimeters", "mm", "%f * 1000.0", "%f / 1000.0") unit_database.AddUnitBase("length", "meters", "m") unit_database.AddUnit("length", "centimeters", "cm", "%f * 100.0", "%f / 100.0") unit_database.AddUnit("length", "kilometers", "km", "%f / 1000.0", "%f * 1000.0") unit_database.AddUnit("length", "miles", "mi", "%f / 1609.347", "%f * 1609.347") unit_database.AddUnit("length", "inches", "in", "%f / 0.0254", "%f * 0.0254") unit_database.AddUnit("length", "micrometers", "um", "%f * 1000000.0", "%f / 1000000.0") unit_database.AddCategory("length", "length") unit_database.AddCategory("well-length", "length") unit_database.AddCategory("well-length-with-min-and-max", "length", min_value=0.0) return unit_database
def unit_database_empty() -> Iterator[units.UnitDatabase]: database = units.UnitDatabase() units.UnitDatabase.PushSingleton(database) yield database units.UnitDatabase.PopSingleton()
def unit_database_empty(): database = units.UnitDatabase() units.UnitDatabase.PushSingleton(database) yield database units.UnitDatabase.PopSingleton()
def testPrecision() -> None: unit_database = units.UnitDatabase() unit_database.AddUnitBase("Compressibility", "1/Bars", "1/Bars") unit_database.AddUnit("Compressibility", "1/Psi", "1/Psi", frombase="%f / 14.50377", tobase="%f * 14.50377") unit_database.AddUnit("Compressibility", "1/Atm", "1/Atm", frombase="%f / 0.986923", tobase="%f * 0.986923") assert (approx( abs(14.50377 * 10e-6 - unit_database.Convert("Compressibility", "1/Psi", "1/Bars", 1 * 10e-6)), 5, ) == 0) assert (approx( abs(0.000063816588 - unit_database.Convert("Compressibility", "1/Psi", "1/Bars", 4.4e-006)), 5, ) == 0)
def testFindCase(unit_database_custom_conversion) -> None: unit_database = units.UnitDatabase() # add some units for testing unit_database.AddUnitBase("temperature", "mang1", "mA") unit_database.AddUnit("temperature", "mang2", "Ma", frombase="%f", tobase="%f") unit_database.AddUnit("temperature", "Celsius", "C", frombase="%f", tobase="%f") unit_database.AddUnit("temperature", "mang3", "MA", frombase="%f", tobase="%f") unit_database.AddCategory("my", "temperature") with pytest.raises(AssertionError): unit_database.FindUnitCase("my", "ma") assert "C" == unit_database.FindUnitCase("my", "c") assert "C" == unit_database.FindUnitCase("my", "C")
def testFractionScalarConversion(): db = units.UnitDatabase() db.AddUnit("length", "milimeters", "mm", "%f * 1000.0", "%f / 1000.0") db.AddUnitBase("length", "meters", "m") f = units.FractionScalar("length", value=FractionValue(3, (1, 2)), unit="m") converted = db.Convert("length", "m", "mm", f.value) assert converted == FractionValue(3500)
def unit_database_posc(): """ Fixture to be used whenever a test needs a clean UnitDatabase. When using this fixture, it's safe to call UnitDatabase.GetSingleton(). """ unit_database = units.UnitDatabase() unit_database.FillUnitDatabaseWithPosc(unit_database) units.UnitDatabase.PushSingleton(unit_database) yield unit_database units.UnitDatabase.PopSingleton()
def unit_database_len(): database = units.UnitDatabase() units.UnitDatabase.PushSingleton(database) database.AddUnitBase("length", "meters", "m") database.AddUnit("length", "kilometers", "km", "%f / 1000.0", "%f * 1000.0") database.AddUnitBase("temperature", "degC", "degC") database.AddUnitBase("flow rate", "m3/s", "m3/s") database.AddCategory("length", "length") database.AddCategory("temperature", "temperature") database.AddCategory("flow rate", "flow rate", min_value=0.0) yield database units.UnitDatabase.PopSingleton()
def CreateUnitDatabaseStartUnits(): """ :rtype: UnitDatabase :returns: Returns a unit database with length and time quantity types """ unit_database = units.UnitDatabase() unit_database.AddUnitBase("length", "meters", "m") unit_database.AddUnit("length", "kilometers", "km", "%f / 1000.0", "%f * 1000.0") unit_database.AddUnit("length", "centimeters", "cm", "%f * 100.0", "%f / 100.0") unit_database.AddCategory("length", "length") return unit_database
def CreateUnitDatabasePoscLen(fill_categories=True): """ :rtype: UnitDatabase :returns: Returns a unit database with "length" quantity type only :param bool fill_categories: If a category "length" should also be created """ unit_database = units.UnitDatabase() unit_database.AddUnitBase("length", "meters", "m") unit_database.AddUnit("length", "kilometers", "km", "%f / 1000.0", "%f * 1000.0") if fill_categories: unit_database.AddCategory(category="length", quantity_type="length") return unit_database
def CreateUnitDatabaseLenPressure(): """ :rtype: UnitDatabase :returns: Returns a unit database with length and time quantity types """ unit_database = units.UnitDatabase() unit_database.AddUnitBase("length", "meters", "m") unit_database.AddUnit("length", "kilometers", "km", "%f / 1000.0", "%f * 1000.0") unit_database.AddUnitBase("pressure", "pascal", "Pa") unit_database.AddUnit("pressure", "pounds/square inch", "psi", "%f / 6894.757", "%f * 6894.757") unit_database.AddCategory("length", "length") unit_database.AddCategory("pressure", "pressure") return unit_database
def CreateUnitDatabaseCustomConversion(): from barril.units import UNKNOWN_QUANTITY_TYPE, UNKNOWN_UNIT unit_database = units.UnitDatabase() # add some units for testing unit_database.AddUnit(UNKNOWN_QUANTITY_TYPE, UNKNOWN_UNIT, UNKNOWN_UNIT, "%f", "%f") unit_database.AddUnit("length", "milimeters", "mm", "%f * 1000.0", "%f / 1000.0") unit_database.AddUnitBase("length", "meters", "m") unit_database.AddUnit("length", "centimeters", "cm", "%f * 100.0", "%f / 100.0") unit_database.AddUnit("length", "kilometers", "km", "%f / 1000.0", "%f * 1000.0") unit_database.AddUnit("length", "miles", "mi", "%f / 1609.347", "%f * 1609.347") unit_database.AddUnit("length", "inches", "in", "%f / 0.0254", "%f * 0.0254") unit_database.AddUnit("length", "micrometers", "µm", "%f * 1000000.0", "%f / 1000000.0") unit_database.AddUnitBase("temperature", "Celcius", "ºC") unit_database.AddCategory("length", "length", valid_units=["m", "mm", "cm", "km"]) def C_to_F(x): return x * 1.8 + 32 def F_to_C(x): return (x - 32) / 1.8 unit_database.AddUnit("temperature", "Fahrenheit", "F", C_to_F, F_to_C) def C_to_K(x): return x + 273.15 def K_to_C(x): return x - 273.15 unit_database.AddUnit("temperature", "Kelvin", "K", C_to_K, K_to_C) return unit_database
def testNotDefaultUnitDatabase() -> None: unit_database = units.UnitDatabase() with pytest.raises(AssertionError): unit_database.CheckDefaultUnitDatabase()