diff options
Diffstat (limited to 'src/argaze.test')
-rw-r--r-- | src/argaze.test/PupilFeatures.py | 167 | ||||
-rw-r--r-- | src/argaze.test/PupillAnalysis/WorkloadIndex.py (renamed from src/argaze.test/PupilAnalysis/WorkloadIndex.py) | 30 | ||||
-rw-r--r-- | src/argaze.test/PupillAnalysis/__init__.py (renamed from src/argaze.test/PupilAnalysis/__init__.py) | 0 | ||||
-rw-r--r-- | src/argaze.test/PupillFeatures.py | 167 |
4 files changed, 182 insertions, 182 deletions
diff --git a/src/argaze.test/PupilFeatures.py b/src/argaze.test/PupilFeatures.py deleted file mode 100644 index ecc94cd..0000000 --- a/src/argaze.test/PupilFeatures.py +++ /dev/null @@ -1,167 +0,0 @@ -#!/usr/bin/env python - -""" """ - -__author__ = "Théo de la Hogue" -__credits__ = [] -__copyright__ = "Copyright 2023, Ecole Nationale de l'Aviation Civile (ENAC)" -__license__ = "BSD" - -import unittest - -from argaze import PupilFeatures - -import numpy - -def random_pupil_diameters(size): - """ Generate random TimeStampedPupilDiameters for testing purpose. - Timestamps are current time. - PupilDiameters are random values. - """ - - import random - import time - - ts_pupil_diameters = PupilFeatures.TimeStampedPupilDiameters() - - for i in range(0, size): - - # Edit pupil diameter - random_pupil_diameter = PupilFeatures.PupilDiameter(random.random()) - - # Store pupil diameter - ts_pupil_diameters[time.time()] = random_pupil_diameter - - return ts_pupil_diameters - -class TestPupilDiameterClass(unittest.TestCase): - """Test PupilDiameter class.""" - - def test_new(self): - """Test PupilDiameter creation.""" - - # Check empty PupilDiameter - empty_pupil_diameter = PupilFeatures.PupilDiameter() - - self.assertEqual(empty_pupil_diameter.value, 0.) - self.assertEqual(empty_pupil_diameter.valid, False) - - # Check float PupilDiameter - float_pupil_diameter = PupilFeatures.PupilDiameter(1.23) - - self.assertEqual(float_pupil_diameter.value, 1.23) - self.assertEqual(float_pupil_diameter.valid, True) - - def test_properties(self): - """Test PupilDiameter properties cannot be modified after creation.""" - - pupil_diameter = PupilFeatures.PupilDiameter() - - # Check that pupil diameter value setting fails - with self.assertRaises(AttributeError): - - pupil_diameter.value = 123 - - self.assertNotEqual(pupil_diameter.value, 123) - self.assertEqual(pupil_diameter.value, 0.) - - def test___repr__(self): - """Test PupilDiameter string representation.""" - - # Check empty PupilDiameter representation - self.assertEqual(repr(PupilFeatures.PupilDiameter()), "{\"value\": 0.0}") - -class TestUnvalidPupilDiameterClass(unittest.TestCase): - """Test UnvalidPupilDiameter class.""" - - def test_new(self): - """Test UnvalidPupilDiameter creation.""" - - unvalid_pupil_diameter = PupilFeatures.UnvalidPupilDiameter() - - self.assertEqual(unvalid_pupil_diameter.value, 0.) - self.assertEqual(unvalid_pupil_diameter.valid, False) - - def test___repr__(self): - """Test UnvalidPupilDiameter string representation.""" - - self.assertEqual(repr(PupilFeatures.UnvalidPupilDiameter()), "{\"message\": null, \"value\": 0.0}") - -class TestTimeStampedPupilDiametersClass(unittest.TestCase): - """Test TimeStampedPupilDiameters class.""" - - def test___setitem__(self): - """Test __setitem__ method.""" - - ts_pupil_diameters = PupilFeatures.TimeStampedPupilDiameters() - ts_pupil_diameters[0] = PupilFeatures.PupilDiameter() - ts_pupil_diameters[1] = PupilFeatures.UnvalidPupilDiameter() - ts_pupil_diameters[2] = {"value": 1.23} - - # Check PupilDiameter is correctly stored and accessible as a PupilDiameter - self.assertIsInstance(ts_pupil_diameters[0], PupilFeatures.PupilDiameter) - self.assertEqual(ts_pupil_diameters[0].valid, False) - - # Check UnvalidPupilDiameter is correctly stored and accessible as a UnvalidPupilDiameter - self.assertIsInstance(ts_pupil_diameters[1], PupilFeatures.UnvalidPupilDiameter) - self.assertEqual(ts_pupil_diameters[1].valid, False) - - # Check dict with "value" and "precision" keys is correctly stored and accessible as a PupilDiameter - self.assertIsInstance(ts_pupil_diameters[2], PupilFeatures.PupilDiameter) - self.assertEqual(ts_pupil_diameters[2].valid, True) - - # Check that bad data type insertion fails - with self.assertRaises(AssertionError): - - ts_pupil_diameters[3] = "This string is not a pupil diameter value." - - # Check that dict with bad keys insertion fails - with self.assertRaises(AssertionError): - - ts_pupil_diameters[4] = {"bad_key": 0.} - - def test___repr__(self): - """Test inherited string representation.""" - - ts_pupil_diameters = PupilFeatures.TimeStampedPupilDiameters() - - self.assertEqual(repr(PupilFeatures.TimeStampedPupilDiameters()), "{}") - - ts_pupil_diameters[0] = PupilFeatures.PupilDiameter() - - self.assertEqual(repr(ts_pupil_diameters), "{\"0\": {\"value\": 0.0}}") - - ts_pupil_diameters[0] = PupilFeatures.UnvalidPupilDiameter() - - self.assertEqual(repr(ts_pupil_diameters), "{\"0\": {\"message\": null, \"value\": 0.0}}") - - def test_as_dataframe(self): - """Test inherited as_dataframe method.""" - - ts_pupil_diameters_dataframe = random_pupil_diameters(10).as_dataframe() - - # Check dataframe conversion - self.assertEqual(ts_pupil_diameters_dataframe.index.name, "timestamp") - self.assertEqual(ts_pupil_diameters_dataframe.index.size, 10) - - self.assertEqual(ts_pupil_diameters_dataframe.columns.size, 1) - self.assertEqual(ts_pupil_diameters_dataframe.columns[0], "value") - - self.assertEqual(ts_pupil_diameters_dataframe["value"].dtype, 'float64') - - # Check unvalid diameter conversion - ts_pupil_diameters = PupilFeatures.TimeStampedPupilDiameters() - ts_pupil_diameters[0] = PupilFeatures.UnvalidPupilDiameter() - ts_pupil_diameters_dataframe = ts_pupil_diameters.as_dataframe() - - self.assertEqual(ts_pupil_diameters_dataframe.index.name, "timestamp") - self.assertEqual(ts_pupil_diameters_dataframe.index.size, 1) - - self.assertEqual(ts_pupil_diameters_dataframe.columns.size, 1) - self.assertEqual(ts_pupil_diameters_dataframe.columns[0], "value") - - self.assertEqual(ts_pupil_diameters_dataframe["value"].dtype, 'float64') - -if __name__ == '__main__': - - unittest.main()
\ No newline at end of file diff --git a/src/argaze.test/PupilAnalysis/WorkloadIndex.py b/src/argaze.test/PupillAnalysis/WorkloadIndex.py index fec32ef..d60b6ae 100644 --- a/src/argaze.test/PupilAnalysis/WorkloadIndex.py +++ b/src/argaze.test/PupillAnalysis/WorkloadIndex.py @@ -10,8 +10,8 @@ __license__ = "BSD" import unittest import math -from argaze import PupilFeatures -from argaze.PupilAnalysis import WorkloadIndex +from argaze import PupillFeatures +from argaze.PupillAnalysis import WorkloadIndex class TestWorkloadIndexClass(unittest.TestCase): """Test WorkloadIndex class.""" @@ -19,21 +19,21 @@ class TestWorkloadIndexClass(unittest.TestCase): def test_analysis(self): """Test WorkloadIndex analysis.""" - ts_pupil_diameters = { - 0: PupilFeatures.PupilDiameter(1.), - 1: PupilFeatures.PupilDiameter(1.1), - 2: PupilFeatures.PupilDiameter(1.2), - 3: PupilFeatures.PupilDiameter(1.3), - 4: PupilFeatures.PupilDiameter(1.2), - 5: PupilFeatures.PupilDiameter(1.1), - 6: PupilFeatures.PupilDiameter(1.), - 7: PupilFeatures.PupilDiameter(0.9), - 8: PupilFeatures.PupilDiameter(0.8), - 9: PupilFeatures.PupilDiameter(0.7) + ts_pupill_diameters = { + 0: PupillFeatures.PupillDiameter(1.), + 1: PupillFeatures.PupillDiameter(1.1), + 2: PupillFeatures.PupillDiameter(1.2), + 3: PupillFeatures.PupillDiameter(1.3), + 4: PupillFeatures.PupillDiameter(1.2), + 5: PupillFeatures.PupillDiameter(1.1), + 6: PupillFeatures.PupillDiameter(1.), + 7: PupillFeatures.PupillDiameter(0.9), + 8: PupillFeatures.PupillDiameter(0.8), + 9: PupillFeatures.PupillDiameter(0.7) } - pupil_diameter_analyzer = WorkloadIndex.PupilDiameterAnalyzer(reference=PupilFeatures.PupilDiameter(1.), period=3) - ts_analysis = pupil_diameter_analyzer.browse(PupilFeatures.TimeStampedPupilDiameters(ts_pupil_diameters)) + pupill_diameter_analyzer = WorkloadIndex.PupillDiameterAnalyzer(reference=PupillFeatures.PupillDiameter(1.), period=3) + ts_analysis = pupill_diameter_analyzer.browse(PupillFeatures.TimeStampedPupillDiameters(ts_pupill_diameters)) # Check result size self.assertEqual(len(ts_analysis), 3) diff --git a/src/argaze.test/PupilAnalysis/__init__.py b/src/argaze.test/PupillAnalysis/__init__.py index e69de29..e69de29 100644 --- a/src/argaze.test/PupilAnalysis/__init__.py +++ b/src/argaze.test/PupillAnalysis/__init__.py diff --git a/src/argaze.test/PupillFeatures.py b/src/argaze.test/PupillFeatures.py new file mode 100644 index 0000000..f0e8e1b --- /dev/null +++ b/src/argaze.test/PupillFeatures.py @@ -0,0 +1,167 @@ +#!/usr/bin/env python + +""" """ + +__author__ = "Théo de la Hogue" +__credits__ = [] +__copyright__ = "Copyright 2023, Ecole Nationale de l'Aviation Civile (ENAC)" +__license__ = "BSD" + +import unittest + +from argaze import PupillFeatures + +import numpy + +def random_pupill_diameters(size): + """ Generate random TimeStampedPupillDiameters for testing purpose. + Timestamps are current time. + PupillDiameters are random values. + """ + + import random + import time + + ts_pupill_diameters = PupillFeatures.TimeStampedPupillDiameters() + + for i in range(0, size): + + # Edit pupill diameter + random_pupill_diameter = PupillFeatures.PupillDiameter(random.random()) + + # Store pupill diameter + ts_pupill_diameters[time.time()] = random_pupill_diameter + + return ts_pupill_diameters + +class TestPupillDiameterClass(unittest.TestCase): + """Test PupillDiameter class.""" + + def test_new(self): + """Test PupillDiameter creation.""" + + # Check empty PupillDiameter + empty_pupill_diameter = PupillFeatures.PupillDiameter() + + self.assertEqual(empty_pupill_diameter.value, 0.) + self.assertEqual(empty_pupill_diameter.valid, False) + + # Check float PupillDiameter + float_pupill_diameter = PupillFeatures.PupillDiameter(1.23) + + self.assertEqual(float_pupill_diameter.value, 1.23) + self.assertEqual(float_pupill_diameter.valid, True) + + def test_properties(self): + """Test PupillDiameter properties cannot be modified after creation.""" + + pupill_diameter = PupillFeatures.PupillDiameter() + + # Check that pupill diameter value setting fails + with self.assertRaises(AttributeError): + + pupill_diameter.value = 123 + + self.assertNotEqual(pupill_diameter.value, 123) + self.assertEqual(pupill_diameter.value, 0.) + + def test___repr__(self): + """Test PupillDiameter string representation.""" + + # Check empty PupillDiameter representation + self.assertEqual(repr(PupillFeatures.PupillDiameter()), "{\"value\": 0.0}") + +class TestUnvalidPupillDiameterClass(unittest.TestCase): + """Test UnvalidPupillDiameter class.""" + + def test_new(self): + """Test UnvalidPupillDiameter creation.""" + + unvalid_pupill_diameter = PupillFeatures.UnvalidPupillDiameter() + + self.assertEqual(unvalid_pupill_diameter.value, 0.) + self.assertEqual(unvalid_pupill_diameter.valid, False) + + def test___repr__(self): + """Test UnvalidPupillDiameter string representation.""" + + self.assertEqual(repr(PupillFeatures.UnvalidPupillDiameter()), "{\"message\": null, \"value\": 0.0}") + +class TestTimeStampedPupillDiametersClass(unittest.TestCase): + """Test TimeStampedPupillDiameters class.""" + + def test___setitem__(self): + """Test __setitem__ method.""" + + ts_pupill_diameters = PupillFeatures.TimeStampedPupillDiameters() + ts_pupill_diameters[0] = PupillFeatures.PupillDiameter() + ts_pupill_diameters[1] = PupillFeatures.UnvalidPupillDiameter() + ts_pupill_diameters[2] = {"value": 1.23} + + # Check PupillDiameter is correctly stored and accessible as a PupillDiameter + self.assertIsInstance(ts_pupill_diameters[0], PupillFeatures.PupillDiameter) + self.assertEqual(ts_pupill_diameters[0].valid, False) + + # Check UnvalidPupillDiameter is correctly stored and accessible as a UnvalidPupillDiameter + self.assertIsInstance(ts_pupill_diameters[1], PupillFeatures.UnvalidPupillDiameter) + self.assertEqual(ts_pupill_diameters[1].valid, False) + + # Check dict with "value" and "precision" keys is correctly stored and accessible as a PupillDiameter + self.assertIsInstance(ts_pupill_diameters[2], PupillFeatures.PupillDiameter) + self.assertEqual(ts_pupill_diameters[2].valid, True) + + # Check that bad data type insertion fails + with self.assertRaises(AssertionError): + + ts_pupill_diameters[3] = "This string is not a pupill diameter value." + + # Check that dict with bad keys insertion fails + with self.assertRaises(AssertionError): + + ts_pupill_diameters[4] = {"bad_key": 0.} + + def test___repr__(self): + """Test inherited string representation.""" + + ts_pupill_diameters = PupillFeatures.TimeStampedPupillDiameters() + + self.assertEqual(repr(PupillFeatures.TimeStampedPupillDiameters()), "{}") + + ts_pupill_diameters[0] = PupillFeatures.PupillDiameter() + + self.assertEqual(repr(ts_pupill_diameters), "{\"0\": {\"value\": 0.0}}") + + ts_pupill_diameters[0] = PupillFeatures.UnvalidPupillDiameter() + + self.assertEqual(repr(ts_pupill_diameters), "{\"0\": {\"message\": null, \"value\": 0.0}}") + + def test_as_dataframe(self): + """Test inherited as_dataframe method.""" + + ts_pupill_diameters_dataframe = random_pupill_diameters(10).as_dataframe() + + # Check dataframe conversion + self.assertEqual(ts_pupill_diameters_dataframe.index.name, "timestamp") + self.assertEqual(ts_pupill_diameters_dataframe.index.size, 10) + + self.assertEqual(ts_pupill_diameters_dataframe.columns.size, 1) + self.assertEqual(ts_pupill_diameters_dataframe.columns[0], "value") + + self.assertEqual(ts_pupill_diameters_dataframe["value"].dtype, 'float64') + + # Check unvalid diameter conversion + ts_pupill_diameters = PupillFeatures.TimeStampedPupillDiameters() + ts_pupill_diameters[0] = PupillFeatures.UnvalidPupillDiameter() + ts_pupill_diameters_dataframe = ts_pupill_diameters.as_dataframe() + + self.assertEqual(ts_pupill_diameters_dataframe.index.name, "timestamp") + self.assertEqual(ts_pupill_diameters_dataframe.index.size, 1) + + self.assertEqual(ts_pupill_diameters_dataframe.columns.size, 1) + self.assertEqual(ts_pupill_diameters_dataframe.columns[0], "value") + + self.assertEqual(ts_pupill_diameters_dataframe["value"].dtype, 'float64') + +if __name__ == '__main__': + + unittest.main()
\ No newline at end of file |