summaryrefslogtreecommitdiffstats
path: root/glucometerutils/tests/test_common.py
diff options
context:
space:
mode:
Diffstat (limited to 'glucometerutils/tests/test_common.py')
-rw-r--r--glucometerutils/tests/test_common.py124
1 files changed, 124 insertions, 0 deletions
diff --git a/glucometerutils/tests/test_common.py b/glucometerutils/tests/test_common.py
new file mode 100644
index 0000000..3e733e3
--- /dev/null
+++ b/glucometerutils/tests/test_common.py
@@ -0,0 +1,124 @@
+# -*- 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))