|
| 1 | +# tests/test_biosensors.py |
| 2 | + |
| 3 | +import unittest |
| 4 | +from biosensors.sensor_manager import SensorManager |
| 5 | + |
| 6 | +class TestSensorManager(unittest.TestCase): |
| 7 | + def setUp(self): |
| 8 | + """ |
| 9 | + Set up the test environment before each test. |
| 10 | + """ |
| 11 | + self.sensor_ids = ["sensor_1", "sensor_2", "sensor_3"] |
| 12 | + self.manager = SensorManager(self.sensor_ids) |
| 13 | + self.manager.connect_sensors() |
| 14 | + |
| 15 | + def tearDown(self): |
| 16 | + """ |
| 17 | + Clean up after each test. |
| 18 | + """ |
| 19 | + self.manager.disconnect_sensors() |
| 20 | + |
| 21 | + def test_connect_sensors(self): |
| 22 | + """ |
| 23 | + Test that sensors are connected successfully. |
| 24 | + """ |
| 25 | + self.assertTrue(all(self.manager.connected_sensors.values()), "Not all sensors are connected.") |
| 26 | + |
| 27 | + def test_collect_data(self): |
| 28 | + """ |
| 29 | + Test that data is collected from connected sensors. |
| 30 | + """ |
| 31 | + collected_data = self.manager.collect_data() |
| 32 | + self.assertEqual(len(collected_data), len(self.sensor_ids), "Data collection did not return the expected number of sensors.") |
| 33 | + for sensor_id, data in collected_data.items(): |
| 34 | + self.assertIn("temperature", data, f"Temperature data missing for {sensor_id}.") |
| 35 | + self.assertIn("heart_rate", data, f"Heart rate data missing for {sensor_id}.") |
| 36 | + self.assertIn("timestamp", data, f"Timestamp data missing for {sensor_id}.") |
| 37 | + |
| 38 | + def test_data_format(self): |
| 39 | + """ |
| 40 | + Test that the collected data is in the correct format. |
| 41 | + """ |
| 42 | + collected_data = self.manager.collect_data() |
| 43 | + for sensor_id, data in collected_data.items(): |
| 44 | + self.assertIsInstance(data['temperature'], float, f"Temperature for {sensor_id} is not a float.") |
| 45 | + self.assertIsInstance(data['heart_rate'], int, f"Heart rate for {sensor_id} is not an int.") |
| 46 | + |
| 47 | +if __name__ == "__main__": |
| 48 | + unittest.main() |
0 commit comments