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):
|
with self.assertRaises(AssertionError):
|
||||||
self.assertEqual([0,1,2], [1,2,3])
|
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):
|
def testNotEqual(self):
|
||||||
self.assertNotEqual([0,1,2], [0,2,1])
|
self.assertNotEqual([0,1,2], [0,2,1])
|
||||||
with self.assertRaises(AssertionError):
|
with self.assertRaises(AssertionError):
|
||||||
|
|
|
@ -33,6 +33,46 @@ class TestCase:
|
||||||
msg = "%r not expected to be equal %r" % (x, y)
|
msg = "%r not expected to be equal %r" % (x, y)
|
||||||
assert x != y, msg
|
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=''):
|
def assertIs(self, x, y, msg=''):
|
||||||
if not msg:
|
if not msg:
|
||||||
msg = "%r is not %r" % (x, y)
|
msg = "%r is not %r" % (x, y)
|
||||||
|
@ -74,6 +114,7 @@ class TestCase:
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def skip(msg):
|
def skip(msg):
|
||||||
def _decor(fun):
|
def _decor(fun):
|
||||||
# We just replace original fun with _inner
|
# We just replace original fun with _inner
|
||||||
|
|
Ładowanie…
Reference in New Issue