summaryrefslogblamecommitdiffstats
path: root/test/test_otultra2.py
blob: 6b36602c00e867d7732ac7fd8d0ef7d84ea280ec (plain) (tree)
1
2
3
4
5
6
7
8
9
                       

                              

                                                     

                                                    
                         
 
                                      
                                      
                                            
                                            
 
 
                                           
                            
                                                     

                                          
                                 
                                                                                    

                                          
                                    









                                                                       

                                                                         
                                                        

                                                                            
                                                  

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