def test_conversion(self): m1 = skdb.Unit("m") m2 = sympy.physics.units.m self.assertTrue(m1.compatible(m2)) m3 = skdb.Unit(sympy.physics.units.m) self.assertTrue(m1.compatible(m3)) self.assertTrue(m3.compatible(m1))
def test_imaginary(self): self.assertTrue(skdb.Unit('nanometer').check( )) #actually i dont think we will ever see 'nano' in the result self.assertRaises(skdb.NaNError, skdb.Unit, 'sqrt(-1)') self.assertRaises(skdb.NaNError, skdb.Unit, 'sqrt(-1mm^2)') self.assertRaises(skdb.NaNError, skdb.Unit, '(-1.5e2mm^3)^(1/3)') self.assertRaises(skdb.NaNError, skdb.Unit(1).compatible, 'sqrt(-1)')
def test_check(self): #what am i testing here? self.assertTrue(skdb.Unit(0).check()) self.assertTrue( skdb.Unit(None).check()) #do we really want None to pass? self.assertTrue(skdb.Unit('mm').check()) self.assertTrue(skdb.Unit('in-25.4mm').check()) self.assertTrue(skdb.Unit('25.4mm').check()) #self.assertFalse(skdb.Unit('inch+second').check()) self.assertRaises(skdb.UnitError, skdb.Unit, 'inch+second')
def test_compatibility(self): m1 = skdb.Unit("m") m2 = quantities.meter m3 = quantities.Quantity([0], 'm') m4 = quantities.Quantity([0], 'meter') self.assertTrue(m1.compatible(m2)) self.assertTrue(m1.compatible(m3)) self.assertTrue(m1.compatible(m4))
def test_div(self): self.assertEqual(1 / skdb.Unit('16rev/in'), skdb.Unit('(1/16)*(in/rev)')) self.assertEqual(1 / skdb.Unit('16rev/in'), 1. / skdb.Unit('16rev/in'))
def test_nounits(self): self.assertEqual(skdb.Unit(None), skdb.Unit(0)) self.assertEqual(skdb.Unit(0), skdb.Unit(0)) self.assertEqual(skdb.Unit('-1'), skdb.Unit('0-1')) self.assertEqual(skdb.Unit('1-1'), skdb.Unit(0)) self.assertTrue(skdb.Unit(0).compatible(skdb.Unit(1))) self.assertTrue(skdb.Unit(1234).compatible(skdb.Unit(1))) self.assertTrue(skdb.Unit(-1).compatible(skdb.Unit(1)))
def test_mul(self): self.assertTrue((skdb.Unit('V') * skdb.Unit('A')).compatible('W')) self.assertFalse((skdb.Unit('V') * skdb.Unit('W')).compatible('W')) self.assertEqual( skdb.Unit('V') * skdb.Unit('A'), skdb.Unit('A') * skdb.Unit('V'))
def test_add(self): self.assertEqual(skdb.Unit('1') + skdb.Unit('1'), skdb.Unit('2')) self.assertEqual( skdb.Unit('1m') + skdb.Unit('1yd'), skdb.Unit('1.9144m'))
def test_nonscalar(self): self.assertEqual(skdb.Unit('tempF(212)'), skdb.Unit('tempC(100)'))
def test_compatible(self): self.assertTrue(skdb.Unit('25.4mm').compatible(skdb.Unit('in'))) self.assertFalse(skdb.Unit('inch').compatible(skdb.Unit('second'))) self.assertTrue(skdb.Unit('inch').compatible('inch')) self.assertFalse(skdb.Unit('inch').compatible('blargh'))
def test_negative_cmp( self ): #this may not even make any sense in terms of real measurements, since they should never be negative self.assertFalse(skdb.Unit('1') < skdb.Unit('-10')) self.assertTrue(skdb.Unit('1') > skdb.Unit('-10')) self.assertTrue(skdb.Unit('1') > skdb.Unit('0')) self.assertTrue(skdb.Unit('0') > skdb.Unit('-1')) self.assertTrue(skdb.Unit('1') > skdb.Unit('-1')) self.assertTrue(skdb.Unit('1') < skdb.Unit('0')) self.assertTrue(skdb.Unit('0') < skdb.Unit('-1')) self.assertTrue(skdb.Unit('1') < skdb.Unit('-1')) #now, to the left! self.assertFalse(skdb.Unit('0') > skdb.Unit('1')) self.assertFalse(skdb.Unit('-1') > skdb.Unit('0')) self.assertFalse(skdb.Unit('-1') > skdb.Unit('1')) self.assertFalse(skdb.Unit('0') < skdb.Unit('1')) self.assertFalse(skdb.Unit('-1') < skdb.Unit('0')) self.assertFalse(skdb.Unit('-1') < skdb.Unit('1')) self.assertTrue(skdb.Unit('0') >= skdb.Unit('0'))
def test_yaml_units(self): import yaml try: yaml.dump(skdb.Unit('1')) #this blew up once for some reason except skdb.UnitError: return False
def test_units(self): testrange = skdb.load('1..2m') self.assertEqual(testrange.min, skdb.Unit('1m')) self.assertEqual(testrange.max, skdb.Unit('2m'))
def test_compatibility(self): m1 = skdb.Unit("m") m2 = sympycore.physics.units.Unit("m") self.assertTrue(m1.compatible(m2))
def test_compound_quantities(self): m1 = skdb.Unit("m**2/m**3") m2 = quantities.CompoundUnit("m**2/m**3") self.assertTrue(m1.compatible(m2))
def test_conversion(self): self.assertEqual(skdb.Unit('25.4mm').to('in').string, '1.0*in') self.assertRaises(skdb.UnitError, skdb.Unit('60 degrees').to, 'rad') self.assertRaises(skdb.UnitError, skdb.Unit('60 degrees').to, 'fart')
def test_supplemental_units(self): self.assertTrue(skdb.Unit('man').check()) self.assertTrue(skdb.Unit('5*teeth').compatible('tooth'))
def test_somethingorother(self): #is this even desirable? self.assertTrue(skdb.Unit('1') > 0.9)
def test_one_labeled_equal(self): self.assertEqual(skdb.load('1..2m'), skdb.Range(skdb.Unit('1m'), skdb.Unit('2m')))
def test_order_of_operations(self): self.assertEqual( skdb.Unit('25.4mm').to('inch'), skdb.Unit('in').to('25.4mm')) self.assertEqual(skdb.Unit('2mm'), skdb.Unit('sqrt(4mm^2)'))
def index(self, *extra, **keywords): if len(keywords)==2: first = skdb.Unit(keywords[keywords.keys()[0]]) second = skdb.Unit(keywords[keywords.keys()[1]]) return str(first.to(second)) else: raise cherrypy.HTTPError(404, "try units/?one=50+m&two=km")
def test_cmp(self): self.assertTrue(skdb.Unit('1') >= skdb.Unit('1')) self.assertTrue(skdb.Unit('1') <= skdb.Unit('1')) self.assertTrue(skdb.Unit('1m') <= skdb.Unit('1000mm')) self.assertTrue(skdb.Unit('1m') <= skdb.Unit('1000mm')) self.assertFalse(skdb.Unit('1') < skdb.Unit('1')) self.assertFalse(skdb.Unit('1') > skdb.Unit('1')) self.assertTrue(skdb.Unit('1m') < skdb.Unit('1001mm'))