kopia lustrzana https://github.com/micropython/micropython-lib
unittest: Add assertAlmostEqual and assertNotAlmostEqual
rodzic
316d960880
commit
729d5b6446
|
@ -14,6 +14,47 @@ class TestUnittestAssertions(unittest.TestCase):
|
|||
with self.assertRaises(AssertionError):
|
||||
self.assertEqual([0,1,2], [1,2,3])
|
||||
|
||||
def test_AlmostEqual(self):
|
||||
self.assertAlmostEqual( 1.00000001, 1.0)
|
||||
self.assertNotAlmostEqual( 1.0000001, 1.0)
|
||||
with self.assertRaises(AssertionError):
|
||||
self.assertAlmostEqual(1.0000001, 1.0)
|
||||
with self.assertRaises(AssertionError):
|
||||
self.assertNotAlmostEqual(1.00000001, 1.0)
|
||||
|
||||
self.assertAlmostEqual(1.1, 1.0, places=0)
|
||||
with self.assertRaises(AssertionError):
|
||||
self.assertAlmostEqual(1.1, 1.0, places=1)
|
||||
|
||||
self.assertAlmostEqual(0, .1+.1j, places=0)
|
||||
self.assertNotAlmostEqual(0, .1+.1j, places=1)
|
||||
with self.assertRaises(AssertionError):
|
||||
self.assertAlmostEqual(0, .1+.1j, places=1)
|
||||
with self.assertRaises(AssertionError):
|
||||
self.assertNotAlmostEqual(0, .1+.1j, places=0)
|
||||
|
||||
self.assertAlmostEqual(float('inf'), float('inf'))
|
||||
with self.assertRaises(AssertionError):
|
||||
self.assertNotAlmostEqual(float('inf'), float('inf'))
|
||||
|
||||
def test_AmostEqualWithDelta(self):
|
||||
self.assertAlmostEqual(1.1, 1.0, delta=0.5)
|
||||
self.assertAlmostEqual(1.0, 1.1, delta=0.5)
|
||||
self.assertNotAlmostEqual(1.1, 1.0, delta=0.05)
|
||||
self.assertNotAlmostEqual(1.0, 1.1, delta=0.05)
|
||||
|
||||
self.assertAlmostEqual(1.0, 1.0, delta=0.5)
|
||||
with self.assertRaises(AssertionError):
|
||||
self.assertNotAlmostEqual(1.0, 1.0, delta=0.5)
|
||||
with self.assertRaises(AssertionError):
|
||||
self.assertAlmostEqual(1.1, 1.0, delta=0.05)
|
||||
with self.assertRaises(AssertionError):
|
||||
self.assertNotAlmostEqual(1.1, 1.0, delta=0.5)
|
||||
with self.assertRaises(TypeError):
|
||||
self.assertAlmostEqual(1.1, 1.0, places=2, delta=2)
|
||||
with self.assertRaises(TypeError):
|
||||
self.assertNotAlmostEqual(1.1, 1.0, places=2, delta=2)
|
||||
|
||||
def testNotEqual(self):
|
||||
self.assertNotEqual([0,1,2], [0,2,1])
|
||||
with self.assertRaises(AssertionError):
|
||||
|
|
|
@ -33,6 +33,46 @@ class TestCase:
|
|||
msg = "%r not expected to be equal %r" % (x, y)
|
||||
assert x != y, msg
|
||||
|
||||
def assertAlmostEqual(self, x, y, places=None, msg='', delta=None):
|
||||
if x == y:
|
||||
return
|
||||
if delta is not None and places is not None:
|
||||
raise TypeError("specify delta or places not both")
|
||||
|
||||
if delta is not None:
|
||||
if abs(x - y) <= delta:
|
||||
return
|
||||
if not msg:
|
||||
msg = '%r != %r within %r delta' % (x, y, delta)
|
||||
else:
|
||||
if places is None:
|
||||
places = 7
|
||||
if round(abs(y-x), places) == 0:
|
||||
return
|
||||
if not msg:
|
||||
msg = '%r != %r within %r places' % (x, y, places)
|
||||
|
||||
assert False, msg
|
||||
|
||||
def assertNotAlmostEqual(self, x, y, places=None, msg='', delta=None):
|
||||
if delta is not None and places is not None:
|
||||
raise TypeError("specify delta or places not both")
|
||||
|
||||
if delta is not None:
|
||||
if not (x == y) and abs(x - y) > delta:
|
||||
return
|
||||
if not msg:
|
||||
msg = '%r == %r within %r delta' % (x, y, delta)
|
||||
else:
|
||||
if places is None:
|
||||
places = 7
|
||||
if not (x == y) and round(abs(y-x), places) != 0:
|
||||
return
|
||||
if not msg:
|
||||
msg = '%r == %r within %r places' % (x, y, places)
|
||||
|
||||
assert False, msg
|
||||
|
||||
def assertIs(self, x, y, msg=''):
|
||||
if not msg:
|
||||
msg = "%r is not %r" % (x, y)
|
||||
|
@ -74,6 +114,7 @@ class TestCase:
|
|||
raise
|
||||
|
||||
|
||||
|
||||
def skip(msg):
|
||||
def _decor(fun):
|
||||
# We just replace original fun with _inner
|
||||
|
|
Ładowanie…
Reference in New Issue