Skip to content

Commit

Permalink
Add unit test for sensor value setter logic update
Browse files Browse the repository at this point in the history
Contributes to: NGC-1062.
  • Loading branch information
amishatishpatel committed Aug 14, 2024
1 parent 7732511 commit 4f6cede
Showing 1 changed file with 119 additions and 0 deletions.
119 changes: 119 additions & 0 deletions tests/test_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
"""

import asyncio
import enum
import gc
import unittest
import weakref
Expand All @@ -39,6 +40,7 @@

import pytest

from aiokatcp.core import Address, Timestamp
from aiokatcp.sensor import (
AggregateSensor,
Reading,
Expand Down Expand Up @@ -80,6 +82,49 @@ def status_func(value):
assert sensor.status == Sensor.Status.NOMINAL


def test_sensor_value_setter(diverse_sensors):
"""Check whether the value type verification works."""
diverse_sensors["test-bool-sensor"].value = True
assert diverse_sensors["test-bool-sensor"]
with pytest.raises(TypeError):
diverse_sensors["test-bool-sensor"].value = "True"

diverse_sensors["test-int-sensor"].value = 1234
assert diverse_sensors["test-int-sensor"].value == 1234
with pytest.raises(TypeError):
diverse_sensors["test-int-sensor"].value = "1234"

diverse_sensors["test-float-sensor"].value = 1234.5
assert diverse_sensors["test-float-sensor"].value == 1234.5
with pytest.raises(TypeError):
diverse_sensors["test-float-sensor"].value = "1234"

diverse_sensors["test-str-sensor"].value = "foo"
assert diverse_sensors["test-str-sensor"].value == "foo"
with pytest.raises(TypeError):
diverse_sensors["test-str-sensor"].value = 1234

diverse_sensors["test-bytes-sensor"].value = b"bar"
assert diverse_sensors["test-bytes-sensor"].value == b"bar"
with pytest.raises(TypeError):
diverse_sensors["test-bytes-sensor"].value = "foo"

diverse_sensors["test-address-sensor"].value = "1.2.3.4"
assert diverse_sensors["test-address-sensor"].value == Address("1.2.3.4")
with pytest.raises(TypeError):
diverse_sensors["test-address-sensor"].value = 5678

diverse_sensors["test-timestamp-sensor"].value = 12345678
assert diverse_sensors["test-timestamp-sensor"].value == Timestamp(12345678)
with pytest.raises(TypeError):
diverse_sensors["test-timestamp-sensor"].value = "12345678"

diverse_sensors["test-enum-sensor"].value = MyEnum.ONE
assert diverse_sensors["test-enum-sensor"].value == MyEnum.ONE
with pytest.raises(TypeError):
diverse_sensors["test-enum-sensor"].value = OtherEnum.ABC


@pytest.fixture
def classic_observer():
def classic(sensor, reading):
Expand Down Expand Up @@ -160,6 +205,80 @@ def alt_sensors():
return [Sensor(float, f"name{i}") for i in range(5)]


class MyEnum(enum.Enum):
ZERO = 0
ONE = 1


class OtherEnum(enum.Enum):
ABC = 0
DEF = 1


@pytest.fixture
def diverse_sensors():
# Another set of sensors with different data types
diverse_ss = SensorSet()
diverse_ss.add(
Sensor(
bool,
"test-bool-sensor",
default=False,
)
)
diverse_ss.add(
Sensor(
int,
"test-int-sensor",
default=0,
)
)
diverse_ss.add(
Sensor(
float,
"test-float-sensor",
default=0.0,
)
)
diverse_ss.add(
Sensor(
str,
"test-str-sensor",
default="zero",
)
)
diverse_ss.add(
Sensor(
bytes,
"test-bytes-sensor",
default=b"zero",
)
)
diverse_ss.add(
Sensor(
Address,
"test-address-sensor",
default=Address("0.0.0.0"),
)
)
diverse_ss.add(
Sensor(
Timestamp,
"test-timestamp-sensor",
default=Timestamp(0.0),
)
)
diverse_ss.add(
Sensor(
MyEnum,
"test-enum-sensor",
default=MyEnum.ZERO,
)
)

return diverse_ss


@pytest.fixture
def ss(add_callback, remove_callback, sensors):
ss = SensorSet()
Expand Down

0 comments on commit 4f6cede

Please sign in to comment.