Skip to content

Temperature and CO2 sensor test scripts #32

Merged
merged 5 commits into from
Mar 17, 2026
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added sensors/__init__.py
Empty file.
2 changes: 1 addition & 1 deletion sensors/co2_sensor.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import random
import time
from sensor_base import SensorBase
from sensors.sensor_base import SensorBase


class CO2Sensor(SensorBase):
Expand Down
2 changes: 1 addition & 1 deletion sensors/noise_sensor.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import random
import time
from sensor_base import SensorBase
from sensors.sensor_base import SensorBase


class NoiseSensor(SensorBase):
Expand Down
2 changes: 1 addition & 1 deletion sensors/occupancy_sensor.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import random
import time
from sensor_base import SensorBase
from sensors.sensor_base import SensorBase


class OccupancySensor(SensorBase):
Expand Down
2 changes: 1 addition & 1 deletion sensors/temperature_sensor.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import random
import time
from sensor_base import SensorBase
from sensors.sensor_base import SensorBase


class TemperatureSensor(SensorBase):
Expand Down
46 changes: 46 additions & 0 deletions tests/test_co2_sensor.py
Original file line number Diff line number Diff line change
@@ -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
47 changes: 47 additions & 0 deletions tests/test_noise_sensor.py
Original file line number Diff line number Diff line change
@@ -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
48 changes: 48 additions & 0 deletions tests/test_occupancy_sensor.py
Original file line number Diff line number Diff line change
@@ -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
47 changes: 47 additions & 0 deletions tests/test_temperature_sensor.py
Original file line number Diff line number Diff line change
@@ -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