From 55325825316e18ee7a707bbcf4269358b13f0871 Mon Sep 17 00:00:00 2001 From: Nicu Hodos Date: Fri, 28 Oct 2022 08:59:37 +0200 Subject: [PATCH] test max values --- .drone.yml | 4 +- gateway/test/test_embedded/sensor_builder.cpp | 42 ++++++++++++++++++- libraries/Tiny/Tiny.h | 2 +- 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/.drone.yml b/.drone.yml index 41e3d5c..293b48f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -26,8 +26,8 @@ steps: - echo -n 'reset' > /dev/ttyUSB0; sleep 1s; avrdude -patmega328p -carduino -P/dev/ttyUSB0 -b115200 -D -Uflash:w:.pio/build/pro-mini/firmware.hex:i -v - service ser2net start when: - target: - - production + branch: + - gateway trigger: branch: diff --git a/gateway/test/test_embedded/sensor_builder.cpp b/gateway/test/test_embedded/sensor_builder.cpp index a5ea9a2..8ca3ca3 100644 --- a/gateway/test/test_embedded/sensor_builder.cpp +++ b/gateway/test/test_embedded/sensor_builder.cpp @@ -12,10 +12,46 @@ void tearDown(void) { void test_unknown_sensor_type(void) { StaticJsonDocument<200> jsonDoc; - unsigned long value = ID(SensorId::TEMP_SENSOR) | TYPE(0); + unsigned long value = TYPE(0); TEST_ASSERT_EQUAL(false, buildSensorJson(value, jsonDoc)); } +void test_max_temp(void) { + StaticJsonDocument<200> jsonDoc; + unsigned long value = TEMP(1023) | TYPE(SensorType::TEMPERATURE); + TEST_ASSERT_EQUAL(true, buildSensorJson(value, jsonDoc)); + + JsonObject sensor = jsonDoc["sensor"]; + TEST_ASSERT_EQUAL(102.3, sensor["temperature"]); +} + +void test_overflow_value(void) { + StaticJsonDocument<200> jsonDoc; + unsigned long value = VALUE(1024) | TYPE(SensorType::GENERIC); + TEST_ASSERT_EQUAL(true, buildSensorJson(value, jsonDoc)); + + JsonObject sensor = jsonDoc["sensor"]; + TEST_ASSERT_EQUAL(0, sensor["value"]); +} + +void test_max_voltage(void) { + StaticJsonDocument<200> jsonDoc; + unsigned long value = VCC(8191) | TYPE(SensorType::GENERIC); + TEST_ASSERT_EQUAL(true, buildSensorJson(value, jsonDoc)); + + JsonObject diagnostic = jsonDoc["sensor"]["diagnostic"]; + TEST_ASSERT_EQUAL(8.191, diagnostic["voltage"]); +} + +void test_overflow_voltage(void) { + StaticJsonDocument<200> jsonDoc; + unsigned long value = VCC(8192) | TYPE(SensorType::GENERIC); + TEST_ASSERT_EQUAL(true, buildSensorJson(value, jsonDoc)); + + JsonObject diagnostic = jsonDoc["sensor"]["diagnostic"]; + TEST_ASSERT_EQUAL(0, diagnostic["voltage"]); +} + void test_temp_sensor(void) { StaticJsonDocument<200> jsonDoc; unsigned long value = ID(SensorId::TEMP_SENSOR) | TEMP(210) | TYPE(SensorType::TEMPERATURE); @@ -65,6 +101,10 @@ void test_oil_sensor_with_voltage(void) { void setup() { UNITY_BEGIN(); RUN_TEST(test_unknown_sensor_type); + RUN_TEST(test_max_temp); + RUN_TEST(test_overflow_value); + RUN_TEST(test_max_voltage); + RUN_TEST(test_overflow_voltage); RUN_TEST(test_temp_sensor); RUN_TEST(test_temp_sensor_with_voltage); RUN_TEST(test_oil_sensor); diff --git a/libraries/Tiny/Tiny.h b/libraries/Tiny/Tiny.h index 1a9b750..653be12 100644 --- a/libraries/Tiny/Tiny.h +++ b/libraries/Tiny/Tiny.h @@ -7,7 +7,7 @@ #define MASK_TYPE 0xF #define ID(value) (value & 0x1F) -#define VCC(value) ((value & MASK_VCC) << 5) +#define VCC(value) (((unsigned long)value & MASK_VCC) << 5) #define TEMP(value) (((unsigned long)value & MASK_VALUE) << 18) #define HUMIDITY(value) (((unsigned long)value & MASK_VALUE) << 18) #define VALUE(value) (((unsigned long)value & MASK_VALUE) << 18)