def test_allow_derivation(self): u = unitconv.determine_compatible_units('b', 'datasize', 1, 's', 'time', allow_integration=False) self.assertEqual(u['b'], (1.0, 'derive')) self.assertEqual(u['B'], (8.0, 'derive')) self.assertEqual(u['b/s'], (1.0, None)) self.assertAlmostEqual(u['B/d'][0], 9.26e-05) self.assertIsNone(u['B/d'][1]) self.assertNotIn('h', u)
def test_allow_integration(self): u = unitconv.determine_compatible_units('Eggnog', None, 0.125, allow_integration=True) self.assertEqual(u['Eggnog'], (8.0, None)) self.assertAlmostEqual(u['Eggnog/h'][0], 0.0022222) self.assertEqual(u['Eggnog/h'][1], 'integrate') self.assertNotIn('derive', [extra_op for (_multiplier, extra_op) in u.values()])
def test_compatible_to_simple_primary_type(self): all_time_units = [pair[0] for pair in unitconv.unit_classes_by_name['time']] u = unitconv.determine_compatible_units('s', 'time', allow_integration=False) compatunits = u.keys() for timeunit in all_time_units: self.assertIn(timeunit, compatunits) self.assertEqual(u['MM'], (60000000.0, None)) self.assertEqual(u['h'], (3600.0, None)) self.assertEqual([extra_op for (_multiplier, extra_op) in u.values()], [None] * len(u))
def test_allow_derivation(self): u = unitconv.determine_compatible_units('b', 'datasize', 1, 's', 'time', allow_integration=False) self.assertEqual(u['b'], (1.0, 'derive')) self.assertEqual(u['B'], (8.0, 'derive')) self.assertEqual(u['b/s'], (1.0, None)) self.assertAlmostEqual(u['B/d'][0], 9.26e-05) self.assertIsNone(u['B/d'][1]) self.assertNotIn('h', u)
def test_compatible_to_simple_primary_type(self): all_time_units = [ pair[0] for pair in unitconv.unit_classes_by_name['time'] ] u = unitconv.determine_compatible_units('s', 'time', allow_integration=False) compatunits = u.keys() for timeunit in all_time_units: self.assertIn(timeunit, compatunits) self.assertEqual(u['MM'], (60000000.0, None)) self.assertEqual(u['h'], (3600.0, None)) self.assertEqual([extra_op for (_multiplier, extra_op) in u.values()], [None] * len(u))
def run_scenario(user_asked_for, data_exists_as, allow_derivation=True, allow_integration=False, allow_prefixes_in_denominator=False, round_result=6): userunit = unitconv.parse_unitname(user_asked_for, fold_scale_prefix=False) prefixclass = unitconv.prefix_class_for(userunit['scale_multiplier']) use_unit = userunit['base_unit'] compatibles = unitconv.determine_compatible_units( allow_derivation=allow_derivation, allow_integration=allow_integration, allow_prefixes_in_denominator=allow_prefixes_in_denominator, **userunit) try: scale, extra_op = compatibles[data_exists_as] except KeyError: return if round_result is not None: scale = round(scale, round_result) return (data_exists_as, use_unit, scale, extra_op, prefixclass)
def run_scenario(user_asked_for, data_exists_as, allow_derivation=True, allow_integration=False, allow_prefixes_in_denominator=False, round_result=6): userunit = unitconv.parse_unitname(user_asked_for, fold_scale_prefix=False) prefixclass = unitconv.prefix_class_for(userunit['scale_multiplier']) use_unit = userunit['base_unit'] compatibles = unitconv.determine_compatible_units( allow_derivation=allow_derivation, allow_integration=allow_integration, allow_prefixes_in_denominator=allow_prefixes_in_denominator, **userunit) try: scale, extra_op = compatibles[data_exists_as] except KeyError: return if round_result is not None: scale = round(scale, round_result) return (data_exists_as, use_unit, scale, extra_op, prefixclass)
def test_allow_integration(self): u = unitconv.determine_compatible_units('Eggnog', None, 0.125, allow_integration=True) self.assertEqual(u['Eggnog'], (8.0, None)) self.assertAlmostEqual(u['Eggnog/h'][0], 0.0022222) self.assertEqual(u['Eggnog/h'][1], 'integrate') self.assertNotIn('derive', [extra_op for (_multiplier, extra_op) in u.values()])