diff options
Diffstat (limited to 'glucometerutils/drivers/tests/test_otultra2.py')
-rw-r--r-- | glucometerutils/drivers/tests/test_otultra2.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/glucometerutils/drivers/tests/test_otultra2.py b/glucometerutils/drivers/tests/test_otultra2.py new file mode 100644 index 0000000..6b36602 --- /dev/null +++ b/glucometerutils/drivers/tests/test_otultra2.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# +# SPDX-License-Identifier: MIT +"""Tests for the LifeScan OneTouch Ultra 2 driver.""" + +# pylint: disable=protected-access,missing-docstring + +from unittest import mock + +from absl.testing import parameterized +from glucometerutils import exceptions +from glucometerutils.drivers import otultra2 +from glucometerutils.support import lifescan + + +class TestOTUltra2(parameterized.TestCase): + def test_checksum(self): + checksum = otultra2._calculate_checksum(b"T") + self.assertEqual(0x0054, checksum) + + def test_checksum_full(self): + checksum = otultra2._calculate_checksum(b'T "SAT","08/03/13","22:12:00 "') + self.assertEqual(0x0608, checksum) + + @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() |