#include "TestUtil.h" #include "modules/Telemetry/Sensor/DS18B20Protocol.h" #include #include 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() { initializeTestEnvironment(); 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() {}