# -*- 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()