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)
Example #2
0
 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))
Example #4
0
 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)
Example #5
0
    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)
Example #7
0
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()])