Files
firmware/test/test_ds18b20/test_main.cpp
T

53 lines
1.6 KiB
C++

#include "modules/Telemetry/Sensor/DS18B20Protocol.h"
#include <cstdlib>
#include <unity.h>
void setUp(void) {}
void tearDown(void) {}
void test_decodes_positive_12_bit_temperature()
{
const uint8_t scratchpad[9] = {0x91, 0x01}; // 25.0625 C
TEST_ASSERT_FLOAT_WITHIN(0.0001f, 25.0625f, ds18b20::decodeTemperature(scratchpad));
}
void test_decodes_negative_12_bit_temperature()
{
const uint8_t scratchpad[9] = {0x5E, 0xFF}; // -10.125 C
TEST_ASSERT_FLOAT_WITHIN(0.0001f, -10.125f, ds18b20::decodeTemperature(scratchpad));
}
void test_accepts_ds18b20_operating_range()
{
TEST_ASSERT_TRUE(ds18b20::isSaneTemperature(-55.0f));
TEST_ASSERT_TRUE(ds18b20::isSaneTemperature(125.0f));
TEST_ASSERT_FALSE(ds18b20::isSaneTemperature(-55.1f));
TEST_ASSERT_FALSE(ds18b20::isSaneTemperature(125.1f));
}
void test_recognizes_resolution_configuration()
{
uint8_t scratchpad[ds18b20::SCRATCHPAD_SIZE]{};
for (uint8_t resolution = 9; resolution <= 12; ++resolution) {
scratchpad[ds18b20::SCRATCHPAD_CONFIG_INDEX] = ds18b20::configForResolution(resolution);
TEST_ASSERT_TRUE(ds18b20::hasResolution(scratchpad, resolution));
}
scratchpad[ds18b20::SCRATCHPAD_CONFIG_INDEX] = ds18b20::configForResolution(9);
TEST_ASSERT_FALSE(ds18b20::hasResolution(scratchpad, 12));
}
extern "C" {
void setup()
{
UNITY_BEGIN();
RUN_TEST(test_decodes_positive_12_bit_temperature);
RUN_TEST(test_decodes_negative_12_bit_temperature);
RUN_TEST(test_accepts_ds18b20_operating_range);
RUN_TEST(test_recognizes_resolution_configuration);
exit(UNITY_END());
}
void loop() {}
}