summaryrefslogtreecommitdiffstats
path: root/test/test_otultra2.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_otultra2.py')
-rw-r--r--test/test_otultra2.py69
1 files changed, 21 insertions, 48 deletions
diff --git a/test/test_otultra2.py b/test/test_otultra2.py
index 3099604..5713987 100644
--- a/test/test_otultra2.py
+++ b/test/test_otultra2.py
@@ -3,14 +3,15 @@
__author__ = 'Diego Elio Pettenò'
__email__ = 'flameeyes@flameeyes.eu'
-__copyright__ = 'Copyright © 2013, Diego Elio Pettenò'
+__copyright__ = 'Copyright © 2013-2017, Diego Elio Pettenò'
__license__ = 'MIT'
import os
import sys
import unittest
+from unittest import mock
-import mock
+from absl.testing import parameterized
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
@@ -18,61 +19,33 @@ from glucometerutils.drivers import otultra2
from glucometerutils.support import lifescan
from glucometerutils import exceptions
-class TestOTUltra2(unittest.TestCase):
- def setUp(self):
- self.addCleanup(mock.patch.stopall)
-
- mock_serial = mock.patch('serial.Serial').start()
- self.mock_readline = mock_serial.return_value.readline
-
- self.device = otultra2.Device('mockdevice')
-
- def _set_return_string(self, string):
- self.mock_readline.return_value = bytes(string, 'ascii')
+class TestOTUltra2(parameterized.TestCase):
def test_checksum(self):
checksum = otultra2._calculate_checksum(bytes('T', 'ascii'))
self.assertEqual(0x0054, checksum)
+ def test_checksum_full(self):
checksum = otultra2._calculate_checksum(
bytes('T "SAT","08/03/13","22:12:00 "', 'ascii'))
self.assertEqual(0x0608, checksum)
- def test_missing_checksum(self):
- self._set_return_string('INVALID')
-
- self.assertRaises(lifescan.MissingChecksum,
- self.device.get_serial_number)
-
- def test_short_response(self):
- self._set_return_string('.\r')
-
- self.assertRaises(exceptions.InvalidResponse,
- self.device.get_serial_number)
-
- def test_invalid_response(self):
- self._set_return_string('% 2500\r')
-
- self.assertRaises(exceptions.InvalidResponse,
- self.device.get_serial_number)
-
- def test_invalid_serial_number(self):
- self._set_return_string('@ "12345678O" 0297\r')
-
- self.assertRaises(lifescan.InvalidSerialNumber,
- self.device.get_serial_number)
-
- def test_invalid_checksum(self):
- self._set_return_string('% 1337\r')
-
- self.assertRaises(exceptions.InvalidChecksum,
- self.device.get_serial_number)
-
- def test_broken_checksum(self):
- self._set_return_string('% 13AZ\r')
-
- self.assertRaises(lifescan.MissingChecksum,
- self.device.get_serial_number)
+ @parameterized.named_parameters(
+ ('_missing_checksum', b'INVALID', lifescan.MissingChecksum),
+ ('_short', b'.\r', exceptions.InvalidResponse),
+ ('_generic', b'% 2500\r', exceptions.InvalidResponse),
+ ('_invalid_serial_number', b'@ "12345678O" 0297\r',
+ lifescan.InvalidSerialNumber),
+ ('_invalid_checksum', b'% 1337\r', exceptions.InvalidChecksum),
+ ('_broken_checksum', b'% 13AZ\r', lifescan.MissingChecksum),
+ )
+ def test_invalid_response(self, returned_string, expected_exception):
+ with mock.patch('serial.Serial') as mock_serial:
+ mock_serial.return_value.readline.return_value = returned_string
+
+ device = otultra2.Device('mockdevice')
+ with self.assertRaises(expected_exception):
+ device.get_serial_number()
if __name__ == '__main__':
unittest.main()