mirror of
https://github.com/alexhopeoconnor/firmware.git
synced 2026-10-04 03:18:10 +10:00
51 lines
1.6 KiB
C++
51 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));
|
|
}
|
|
|
|
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() {}
|