diff --git a/sensors/__init__.py b/sensors/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/sensors/co2_sensor.py b/sensors/co2_sensor.py index 036f86a..a306064 100644 --- a/sensors/co2_sensor.py +++ b/sensors/co2_sensor.py @@ -1,6 +1,6 @@ import random import time -from sensor_base import SensorBase +from sensors.sensor_base import SensorBase class CO2Sensor(SensorBase): diff --git a/sensors/noise_sensor.py b/sensors/noise_sensor.py index e5edfd5..c8eb628 100644 --- a/sensors/noise_sensor.py +++ b/sensors/noise_sensor.py @@ -1,6 +1,6 @@ import random import time -from sensor_base import SensorBase +from sensors.sensor_base import SensorBase class NoiseSensor(SensorBase): diff --git a/sensors/occupancy_sensor.py b/sensors/occupancy_sensor.py index f9ed2c6..4fa6650 100644 --- a/sensors/occupancy_sensor.py +++ b/sensors/occupancy_sensor.py @@ -1,6 +1,6 @@ import random import time -from sensor_base import SensorBase +from sensors.sensor_base import SensorBase class OccupancySensor(SensorBase): diff --git a/sensors/temperature_sensor.py b/sensors/temperature_sensor.py index 8767759..56bbb28 100644 --- a/sensors/temperature_sensor.py +++ b/sensors/temperature_sensor.py @@ -1,6 +1,6 @@ import random import time -from sensor_base import SensorBase +from sensors.sensor_base import SensorBase class TemperatureSensor(SensorBase): diff --git a/tests/test_co2_sensor.py b/tests/test_co2_sensor.py index e69de29..2db603e 100644 --- a/tests/test_co2_sensor.py +++ b/tests/test_co2_sensor.py @@ -0,0 +1,46 @@ +import sys +import os +import json + +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) + +from sensors.co2_sensor import CO2Sensor + +def test_generate_reading_returns_valid_json(): + sensor = CO2Sensor("Room101") + reading = sensor.generate_co2_reading() + + parsed = json.loads(reading) + + assert isinstance(parsed, dict) + + +def test_required_fields_present(): + sensor = CO2Sensor("Room101") + reading = json.loads(sensor.generate_co2_reading()) + + required_fields = ["sensor_type", "room", "value", "unit", "timestamp"] + + for field in required_fields: + assert field in reading + + +def test_co2_value_range(): + sensor = CO2Sensor("Room101") + + for _ in range(10): + reading = json.loads(sensor.generate_co2_reading()) + value = reading["value"] + + assert 400 <= value <= 1500 + + +def test_co2_drift_limit(): + sensor = CO2Sensor("Room101") + + first = json.loads(sensor.generate_co2_reading())["value"] + second = json.loads(sensor.generate_co2_reading())["value"] + + drift = abs(second - first) + + assert drift <= 50 \ No newline at end of file diff --git a/tests/test_noise_sensor.py b/tests/test_noise_sensor.py index e69de29..637c3ea 100644 --- a/tests/test_noise_sensor.py +++ b/tests/test_noise_sensor.py @@ -0,0 +1,47 @@ +import sys +import os +import json + +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) + +from sensors.noise_sensor import NoiseSensor + + +def test_generate_reading_returns_valid_json(): + sensor = NoiseSensor("Room101") + reading = sensor.generate_noise_reading() + + parsed = json.loads(reading) + + assert isinstance(parsed, dict) + + +def test_required_fields_present(): + sensor = NoiseSensor("Room101") + reading = json.loads(sensor.generate_noise_reading()) + + required_fields = ["sensor_type", "room", "value", "unit", "timestamp"] + + for field in required_fields: + assert field in reading + + +def test_noise_value_range(): + sensor = NoiseSensor("Room101") + + for _ in range(10): + reading = json.loads(sensor.generate_noise_reading()) + value = reading["value"] + + assert 30 <= value <= 100 + + +def test_noise_drift_limit(): + sensor = NoiseSensor("Room101") + + first = json.loads(sensor.generate_noise_reading())["value"] + second = json.loads(sensor.generate_noise_reading())["value"] + + drift = abs(second - first) + + assert drift <= 5 \ No newline at end of file diff --git a/tests/test_occupancy_sensor.py b/tests/test_occupancy_sensor.py index e69de29..dfff44d 100644 --- a/tests/test_occupancy_sensor.py +++ b/tests/test_occupancy_sensor.py @@ -0,0 +1,48 @@ +import sys +import os +import json + +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) + +from sensors.occupancy_sensor import OccupancySensor + + +def test_generate_reading_returns_valid_json(): + sensor = OccupancySensor("Room101", 40) + reading = sensor.generate_occupancy_reading() + + parsed = json.loads(reading) + + assert isinstance(parsed, dict) + + +def test_required_fields_present(): + sensor = OccupancySensor("Room101", 40) + reading = json.loads(sensor.generate_occupancy_reading()) + + required_fields = ["sensor_type", "room", "value", "unit", "timestamp"] + + for field in required_fields: + assert field in reading + + +def test_occupancy_value_range(): + capacity = 40 + sensor = OccupancySensor("Room101", capacity) + + for _ in range(10): + reading = json.loads(sensor.generate_occupancy_reading()) + value = reading["value"] + + assert 0 <= value <= capacity + + +def test_occupancy_drift_limit(): + sensor = OccupancySensor("Room101", 40) + + first = json.loads(sensor.generate_occupancy_reading())["value"] + second = json.loads(sensor.generate_occupancy_reading())["value"] + + drift = abs(second - first) + + assert drift <= 3 \ No newline at end of file diff --git a/tests/test_temperature_sensor.py b/tests/test_temperature_sensor.py index e69de29..5ec2922 100644 --- a/tests/test_temperature_sensor.py +++ b/tests/test_temperature_sensor.py @@ -0,0 +1,47 @@ +import sys +import os +import json + +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) + +from sensors.temperature_sensor import TemperatureSensor + + +def test_generate_reading_returns_valid_json(): + sensor = TemperatureSensor("Room101") + reading = sensor.generate_temperature_reading() + + parsed = json.loads(reading) + + assert isinstance(parsed, dict) + + +def test_required_fields_present(): + sensor = TemperatureSensor("Room101") + reading = json.loads(sensor.generate_temperature_reading()) + + required_fields = ["sensor_type", "room", "value", "unit", "timestamp"] + + for field in required_fields: + assert field in reading + + +def test_temperature_value_range(): + sensor = TemperatureSensor("Room101") + + for _ in range(10): + reading = json.loads(sensor.generate_temperature_reading()) + value = reading["value"] + + assert 18 <= value <= 30 + + +def test_temperature_drift_limit(): + sensor = TemperatureSensor("Room101") + + first = json.loads(sensor.generate_temperature_reading())["value"] + second = json.loads(sensor.generate_temperature_reading())["value"] + + drift = abs(second - first) + + assert drift <= 1 \ No newline at end of file