# -*- 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.drivers import otultra2 from glucometerutils.support import lifescan from glucometerutils import exceptions 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()