summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorDiego Elio Pettenò <flameeyes@flameeyes.com>2020-03-16 19:51:27 +0100
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2020-03-16 20:06:33 +0100
commitf5143327b243fc616f37252d76bd31f2690b088d (patch)
tree0c165ca6b5a6a0783d594b2beeb50295e52f6a5f /test
parentMergify: configuration update (diff)
downloadglucometerutils-f5143327b243fc616f37252d76bd31f2690b088d.tar
glucometerutils-f5143327b243fc616f37252d76bd31f2690b088d.tar.gz
glucometerutils-f5143327b243fc616f37252d76bd31f2690b088d.tar.bz2
glucometerutils-f5143327b243fc616f37252d76bd31f2690b088d.tar.lz
glucometerutils-f5143327b243fc616f37252d76bd31f2690b088d.tar.xz
glucometerutils-f5143327b243fc616f37252d76bd31f2690b088d.tar.zst
glucometerutils-f5143327b243fc616f37252d76bd31f2690b088d.zip
Diffstat (limited to 'test')
-rw-r--r--test/__init__.py9
-rw-r--r--test/test_common.py124
-rw-r--r--test/test_construct_extras.py72
-rw-r--r--test/test_contourusb.py114
-rw-r--r--test/test_freestyle.py22
-rw-r--r--test/test_fsoptium.py32
-rwxr-xr-xtest/test_lifescan.py20
-rw-r--r--test/test_otultra2.py43
-rw-r--r--test/test_otultraeasy.py23
-rw-r--r--test/test_td4277.py28
10 files changed, 0 insertions, 487 deletions
diff --git a/test/__init__.py b/test/__init__.py
deleted file mode 100644
index 139fd0c..0000000
--- a/test/__init__.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# SPDX-License-Identifier: MIT
-"""Add the top-level module to the PYTHONPATH."""
-
-import os
-import sys
-
-sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
diff --git a/test/test_common.py b/test/test_common.py
deleted file mode 100644
index 3e733e3..0000000
--- a/test/test_common.py
+++ /dev/null
@@ -1,124 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# SPDX-License-Identifier: MIT
-"""Tests for the common routines."""
-
-# pylint: disable=protected-access,missing-docstring
-
-import datetime
-
-from absl.testing import parameterized
-from glucometerutils import common
-
-
-class TestGlucoseConversion(parameterized.TestCase):
- def test_convert_to_mmol(self):
- self.assertEqual(
- 5.56,
- common.convert_glucose_unit(100, common.Unit.MG_DL, common.Unit.MMOL_L),
- )
-
- def test_convert_to_mgdl(self):
- self.assertEqual(
- 180, common.convert_glucose_unit(10, common.Unit.MMOL_L, common.Unit.MG_DL)
- )
-
- @parameterized.parameters(list(common.Unit))
- def test_convert_identity(self, unit):
- self.assertEqual(100, common.convert_glucose_unit(100, unit, unit))
-
- @parameterized.parameters([unit.value for unit in common.Unit])
- def test_convert_identity_str(self, unit_str):
- self.assertEqual(100, common.convert_glucose_unit(100, unit_str, unit_str))
-
- @parameterized.parameters(
- (common.Unit.MMOL_L, "foo"),
- ("foo", common.Unit.MG_DL),
- (None, common.Unit.MG_DL),
- (common.Meal.NONE, common.Unit.MG_DL),
- )
- def test_invalid_values(self, from_unit, to_unit):
- with self.assertRaises(Exception):
- common.convert_glucose_unit(100, from_unit, to_unit)
-
-
-class TestGlucoseReading(parameterized.TestCase):
-
- TEST_DATETIME = datetime.datetime(2018, 1, 1, 0, 30, 45)
-
- def test_minimal(self):
- reading = common.GlucoseReading(self.TEST_DATETIME, 100)
- self.assertEqual(
- reading.as_csv(common.Unit.MG_DL),
- '"2018-01-01 00:30:45","100.00","","blood sample",""',
- )
-
- @parameterized.named_parameters(
- ("_mgdl", common.Unit.MG_DL, 100), ("_mmoll", common.Unit.MMOL_L, 5.56)
- )
- def test_value(self, unit, expected_value):
- reading = common.GlucoseReading(self.TEST_DATETIME, 100)
- self.assertAlmostEqual(reading.get_value_as(unit), expected_value, places=2)
-
- @parameterized.named_parameters(
- (
- "_meal_none",
- {"meal": common.Meal.NONE},
- '"2018-01-01 00:30:45","100.00","","blood sample",""',
- ),
- (
- "_meal_before",
- {"meal": common.Meal.BEFORE},
- '"2018-01-01 00:30:45","100.00","Before Meal","blood sample",""',
- ),
- (
- "_meal_after",
- {"meal": common.Meal.AFTER},
- '"2018-01-01 00:30:45","100.00","After Meal","blood sample",""',
- ),
- (
- "_measurement_blood",
- {"measure_method": common.MeasurementMethod.BLOOD_SAMPLE},
- '"2018-01-01 00:30:45","100.00","","blood sample",""',
- ),
- (
- "_measurement_cgm",
- {"measure_method": common.MeasurementMethod.CGM},
- '"2018-01-01 00:30:45","100.00","","CGM",""',
- ),
- (
- "_comment",
- {"comment": "too much"},
- '"2018-01-01 00:30:45","100.00","","blood sample","too much"',
- ),
- (
- "_comment_quoted",
- {"comment": '"too" much'},
- '"2018-01-01 00:30:45","100.00","","blood sample",""too" much"',
- ),
- )
- def test_csv(self, kwargs_dict, expected_csv):
- reading = common.GlucoseReading(self.TEST_DATETIME, 100, **kwargs_dict)
- self.assertEqual(reading.as_csv(common.Unit.MG_DL), expected_csv)
-
-
-class TestMeterInfo(parameterized.TestCase):
- @parameterized.named_parameters(
- ("_no_serial_number", {}, "Serial Number: N/A\n"),
- ("_serial_number", {"serial_number": 1234}, "Serial Number: 1234\n"),
- ("_no_version_information", {}, "Version Information:\n N/A\n"),
- (
- "_version_information_1",
- {"version_info": ["test"]},
- "Version Information:\n test\n",
- ),
- (
- "_version_information_2",
- {"version_info": ["test", "test2"]},
- "Version Information:\n test\n test2\n",
- ),
- ("_default_native_unit", {}, "Native Unit: mg/dL\n"),
- )
- def test_meter_info(self, kwargs_dict, expected_fragment):
- info = common.MeterInfo(self.id(), **kwargs_dict)
- self.assertIn(expected_fragment, str(info))
diff --git a/test/test_construct_extras.py b/test/test_construct_extras.py
deleted file mode 100644
index 6bba873..0000000
--- a/test/test_construct_extras.py
+++ /dev/null
@@ -1,72 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# SPDX-License-Identifier: MIT
-"""Tests for the common routines."""
-
-# pylint: disable=protected-access,missing-docstring
-
-import datetime
-
-import construct
-
-from absl.testing import absltest
-from glucometerutils.support import construct_extras
-
-_TEST_DATE1 = datetime.datetime(1970, 1, 2, 0, 0)
-_TEST_DATE2 = datetime.datetime(1971, 1, 1, 0, 0)
-_TEST_DATE3 = datetime.datetime(1970, 1, 1, 0, 0)
-
-_NEW_EPOCH = 31536000 # datetime.datetime(1971, 1, 1, 0, 0)
-
-
-class TestTimestamp(absltest.TestCase):
- def test_build_unix_epoch(self):
- self.assertEqual(
- construct_extras.Timestamp(construct.Int32ul).build(_TEST_DATE1),
- b"\x80\x51\x01\x00",
- )
-
- def test_parse_unix_epoch(self):
- self.assertEqual(
- construct_extras.Timestamp(construct.Int32ul).parse(b"\x803\xe1\x01"),
- _TEST_DATE2,
- )
-
- def test_build_custom_epoch(self):
- self.assertEqual(
- construct_extras.Timestamp(construct.Int32ul, epoch=_NEW_EPOCH).build(
- _TEST_DATE2
- ),
- b"\x00\x00\x00\x00",
- )
-
- def test_parse_custom_epoch(self):
- self.assertEqual(
- construct_extras.Timestamp(construct.Int32ul, epoch=_NEW_EPOCH).parse(
- b"\x00\x00\x00\x00"
- ),
- _TEST_DATE2,
- )
-
- def test_build_custom_epoch_negative_failure(self):
- with self.assertRaises(construct.core.FormatFieldError):
- construct_extras.Timestamp(construct.Int32ul, epoch=_NEW_EPOCH).build(
- _TEST_DATE1
- )
-
- def test_build_custom_epoch_negative_success(self):
- self.assertEqual(
- construct_extras.Timestamp(construct.Int32sl, epoch=_NEW_EPOCH).build(
- _TEST_DATE1
- ),
- b"\x00\x1e\x20\xfe",
- )
-
- def test_build_varint(self):
- self.assertEqual(
- construct_extras.Timestamp(construct.VarInt).build(_TEST_DATE3), b"\x00"
- )
-
- def test_invalid_value(self):
- with self.assertRaises(AssertionError):
- construct_extras.Timestamp(construct.Int32ul).build("foo")
diff --git a/test/test_contourusb.py b/test/test_contourusb.py
deleted file mode 100644
index 3b8b547..0000000
--- a/test/test_contourusb.py
+++ /dev/null
@@ -1,114 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# SPDX-License-Identifier: MIT
-"""Tests for the common ContourUSB functions.."""
-
-# pylint: disable=protected-access,missing-docstring
-
-from unittest.mock import Mock
-
-from absl.testing import absltest
-from glucometerutils.support import contourusb
-
-
-class TestContourUSB(absltest.TestCase):
-
- header_record = b"\x04\x021H|\\^&||7w3LBL|Bayer7390^01.24\\01.04\\09.02.20^7390-2336773^7403-|A=1^C=63^G=1^I=0200^R=0^S=1^U=0^V=10600^X=070070070070180130150250^Y=360126090050099050300089^Z=1|1714||||||1|201909221304\r\x17D7\r\n\x05"
-
- mock_dev = Mock()
-
- def test_get_datetime(self):
- import datetime
-
- self.datetime = "201908071315" # returned by
- self.assertEqual(
- datetime.datetime(2019, 8, 7, 13, 15),
- contourusb.ContourHidDevice.get_datetime(self),
- )
-
- def test_RECORD_FORMAT_match(self):
- # first decode the header record frame
- header_record_decoded = self.header_record.decode()
- stx = header_record_decoded.find("\x02")
-
- _RECORD_FORMAT = contourusb._RECORD_FORMAT
- result = _RECORD_FORMAT.match(header_record_decoded[stx:]).group("text")
-
- self.assertEqual(
- "H|\\^&||7w3LBL|Bayer7390^01.24\\01.04\\09.02.20^7390-2336773^7403-|A=1^C=63^G=1^I=0200^R=0^S=1^U=0^V=10600^X=070070070070180130150250^Y=360126090050099050300089^Z=1|1714||||||1|201909221304",
- result,
- )
-
- def test_parse_header_record(self):
-
- _HEADER_RECORD_RE = contourusb._HEADER_RECORD_RE
- _RECORD_FORMAT = contourusb._RECORD_FORMAT
-
- header_record_decoded = self.header_record.decode()
- stx = header_record_decoded.find("\x02")
-
- result = _RECORD_FORMAT.match(header_record_decoded[stx:]).group("text")
- contourusb.ContourHidDevice.parse_header_record(self.mock_dev, result)
-
- self.assertEqual(self.mock_dev.field_del, "\\")
- self.assertEqual(self.mock_dev.repeat_del, "^")
- self.assertEqual(self.mock_dev.component_del, "&")
- self.assertEqual(self.mock_dev.escape_del, "|")
-
- self.assertEqual(self.mock_dev.product_code, "Bayer7390")
-
- self.assertEqual(self.mock_dev.dig_ver, "01.24")
- self.assertEqual(self.mock_dev.anlg_ver, "01.04")
- self.assertEqual(self.mock_dev.agp_ver, "09.02.20")
- self.assertEqual(self.mock_dev.serial_num, "7390-2336773")
- self.assertEqual(self.mock_dev.sku_id, "7403-")
- self.assertEqual(self.mock_dev.res_marking, "1")
- self.assertEqual(self.mock_dev.config_bits, "63")
- self.assertEqual(self.mock_dev.lang, "1")
- self.assertEqual(self.mock_dev.interv, "0200")
- self.assertEqual(self.mock_dev.ref_method, "0")
- self.assertEqual(self.mock_dev.internal, "1")
- self.assertEqual(self.mock_dev.unit, "0")
- self.assertEqual(self.mock_dev.lo_bound, "10")
- self.assertEqual(self.mock_dev.hi_bound, "600")
-
- self.assertEqual(self.mock_dev.hypo_limit, "070")
- self.assertEqual(self.mock_dev.overall_low, "070")
- self.assertEqual(self.mock_dev.pre_food_low, "070")
- self.assertEqual(self.mock_dev.post_food_low, "070")
- self.assertEqual(self.mock_dev.overall_high, "180")
- self.assertEqual(self.mock_dev.pre_food_high, "130")
- self.assertEqual(self.mock_dev.post_food_high, "150")
- self.assertEqual(self.mock_dev.hyper_limit, "250")
-
- self.assertEqual(self.mock_dev.upp_hyper, "360")
- self.assertEqual(self.mock_dev.low_hyper, "126")
- self.assertEqual(self.mock_dev.upp_hypo, "090")
- self.assertEqual(self.mock_dev.low_hypo, "050")
- self.assertEqual(self.mock_dev.upp_low_target, "099")
- self.assertEqual(self.mock_dev.low_low_target, "050")
- self.assertEqual(self.mock_dev.upp_hi_target, "300")
- self.assertEqual(self.mock_dev.low_hi_target, "089")
- self.assertEqual(self.mock_dev.trends, "1")
- self.assertEqual(self.mock_dev.total, "1714")
- self.assertEqual(self.mock_dev.spec_ver, "1")
-
- self.assertEqual(self.mock_dev.datetime, "201909221304")
-
- # TO-DO checksum and checkframe unit tests
-
- def test_parse_result_record(self):
- # first decode the header record frame
- result_record = "R|8|^^^Glucose|133|mg/dL^P||B/X||201202052034"
- result_dict = contourusb.ContourHidDevice.parse_result_record(
- self.mock_dev, result_record
- )
-
- self.assertEqual(result_dict["record_type"], "R")
- self.assertEqual(result_dict["seq_num"], "8")
- self.assertEqual(result_dict["test_id"], "Glucose")
- self.assertEqual(result_dict["value"], "133")
- self.assertEqual(result_dict["unit"], "mg/dL")
- self.assertEqual(result_dict["ref_method"], "P")
- self.assertEqual(result_dict["markers"], "B/X")
- self.assertEqual(result_dict["datetime"], "201202052034")
diff --git a/test/test_freestyle.py b/test/test_freestyle.py
deleted file mode 100644
index fb3f3b9..0000000
--- a/test/test_freestyle.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# SPDX-License-Identifier: MIT
-"""Tests for the common FreeStyle functions.."""
-
-# pylint: disable=protected-access,missing-docstring
-
-from absl.testing import absltest
-from glucometerutils.support import freestyle
-
-
-class TestFreeStyle(absltest.TestCase):
- def test_outgoing_command(self):
- """Test the generation of a new outgoing message."""
-
- self.assertEqual(
- b"\0\x17\7command\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
- freestyle._FREESTYLE_MESSAGE.build(
- {"message_type": 23, "command": b"command"}
- ),
- )
diff --git a/test/test_fsoptium.py b/test/test_fsoptium.py
deleted file mode 100644
index bdc76f8..0000000
--- a/test/test_fsoptium.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# SPDX-License-Identifier: MIT
-"""Tests for the FreeStyle Optium driver."""
-
-# pylint: disable=protected-access,missing-docstring
-
-import datetime
-
-from absl.testing import parameterized
-from glucometerutils import exceptions
-from glucometerutils.drivers import fsoptium
-
-
-class TestFreeStyleOptium(parameterized.TestCase):
- @parameterized.parameters(
- ("Clock:\tApr 22 2014\t02:14:37", datetime.datetime(2014, 4, 22, 2, 14, 37)),
- ("Clock:\tJul 10 2013\t14:26:44", datetime.datetime(2013, 7, 10, 14, 26, 44)),
- ("Clock:\tSep 29 2013\t17:35:34", datetime.datetime(2013, 9, 29, 17, 35, 34)),
- )
- def test_parse_clock(self, datestr, datevalue):
- self.assertEqual(fsoptium._parse_clock(datestr), datevalue)
-
- @parameterized.parameters(
- ("Apr 22 2014 02:14:37",),
- ("Clock:\tXxx 10 2013\t14:26",),
- ("Clock:\tSep 29 2013\t17:35:22.34",),
- ("Foo",),
- )
- def test_parse_clock_invalid(self, datestr):
- with self.assertRaises(exceptions.InvalidResponse):
- fsoptium._parse_clock(datestr)
diff --git a/test/test_lifescan.py b/test/test_lifescan.py
deleted file mode 100755
index b50b5d6..0000000
--- a/test/test_lifescan.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# SPDX-License-Identifier: MIT
-"""Tests for the LifeScan OneTouch Ultra Mini driver."""
-
-# pylint: disable=protected-access,missing-docstring
-
-import array
-
-from absl.testing import absltest
-from glucometerutils.support import lifescan
-
-
-class TestChecksum(absltest.TestCase):
- def test_crc(self):
- self.assertEqual(0x41CD, lifescan.crc_ccitt(b"\x02\x06\x06\x03"))
-
- def test_crc_array(self):
- cmd_array = array.array("B", b"\x02\x06\x08\x03")
- self.assertEqual(0x62C2, lifescan.crc_ccitt(cmd_array))
diff --git a/test/test_otultra2.py b/test/test_otultra2.py
deleted file mode 100644
index 6b36602..0000000
--- a/test/test_otultra2.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# -*- 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()
diff --git a/test/test_otultraeasy.py b/test/test_otultraeasy.py
deleted file mode 100644
index c6fce83..0000000
--- a/test/test_otultraeasy.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# SPDX-License-Identifier: MIT
-"""Tests for the LifeScan OneTouch Ultra Easy driver."""
-
-# pylint: disable=protected-access,missing-docstring
-
-from absl.testing import absltest
-from glucometerutils.drivers import otultraeasy
-
-
-class ConstructTest(absltest.TestCase):
- def test_make_packet_ack(self):
- self.assertEqual(
- b"\x02\x06\x08\x03\xc2\x62",
- otultraeasy._make_packet(b"", False, False, False, True),
- )
-
- def test_make_packet_version_request(self):
- self.assertEqual(
- b"\x02\x09\x03\x05\x0d\x02\x03\x08\x9f",
- otultraeasy._make_packet(b"\x05\x0d\x02", True, True, False, False),
- )
diff --git a/test/test_td4277.py b/test/test_td4277.py
deleted file mode 100644
index fbd4aa2..0000000
--- a/test/test_td4277.py
+++ /dev/null
@@ -1,28 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# SPDX-License-Identifier: MIT
-"""Tests for the TD-4277 driver."""
-
-# pylint: disable=protected-access,missing-docstring
-
-import datetime
-
-from absl.testing import parameterized
-from glucometerutils import exceptions
-from glucometerutils.drivers import td4277
-from glucometerutils.support import lifescan
-
-
-class TestTD4277Nexus(parameterized.TestCase):
- @parameterized.parameters(
- (b"\x21\x24\x0e\x15", datetime.datetime(2018, 1, 1, 21, 14)),
- (b"\x21\x26\x0e\x15", datetime.datetime(2019, 1, 1, 21, 14)),
- (b"\x04\x27\x25\x0d", datetime.datetime(2019, 8, 4, 13, 37)),
- )
- def test_parse_datetime(self, message, date):
- self.assertEqual(td4277._parse_datetime(message), date)
-
- def test_making_message(self):
- self.assertEqual(
- td4277._make_packet(0x22, 0), b"\x51\x22\x00\x00\x00\x00\xa3\x16"
- )