#include #include "PulseTimer.h" void test_clamps_timer_range() { TEST_ASSERT_EQUAL_UINT16(MIN_TIMER_MS, trbc::clampTimerMs(MIN_TIMER_MS - 1000)); TEST_ASSERT_EQUAL_UINT16(5000, trbc::clampTimerMs(5000)); TEST_ASSERT_EQUAL_UINT16(MAX_TIMER_MS, trbc::clampTimerMs(MAX_TIMER_MS + 2000)); } void test_adjusts_in_100_ms_steps() { TEST_ASSERT_EQUAL_UINT16(5100, trbc::adjustTimerMs(5000, 1)); TEST_ASSERT_EQUAL_UINT16(4700, trbc::adjustTimerMs(5000, -3)); } void test_adjusts_in_seconds_above_tasmota_threshold() { TEST_ASSERT_EQUAL_UINT16(11100, trbc::adjustTimerMs(11000, 1)); TEST_ASSERT_EQUAL_UINT16(12000, trbc::adjustTimerMs(11100, 1)); TEST_ASSERT_EQUAL_UINT16(13000, trbc::adjustTimerMs(12000, 1)); TEST_ASSERT_EQUAL_UINT16(12000, trbc::adjustTimerMs(13000, -1)); TEST_ASSERT_EQUAL_UINT16(11100, trbc::adjustTimerMs(12000, -1)); } void test_adjustment_stays_in_range() { TEST_ASSERT_EQUAL_UINT16(MIN_TIMER_MS, trbc::adjustTimerMs(MIN_TIMER_MS, -1)); TEST_ASSERT_EQUAL_UINT16(MAX_TIMER_MS, trbc::adjustTimerMs(MAX_TIMER_MS, 1)); } void test_normalizes_to_tasmota_representable_values() { TEST_ASSERT_EQUAL_UINT16(5500, trbc::normalizeTimerMs(5450)); TEST_ASSERT_EQUAL_UINT16(12000, trbc::normalizeTimerMs(11400)); TEST_ASSERT_EQUAL_UINT16(12000, trbc::normalizeTimerMs(11500)); } void test_converts_to_tasmota_pulsetime_units() { TEST_ASSERT_EQUAL_UINT16(20, trbc::tasmotaPulseTimeValue(2000)); TEST_ASSERT_EQUAL_UINT16(55, trbc::tasmotaPulseTimeValue(5500)); TEST_ASSERT_EQUAL_UINT16(111, trbc::tasmotaPulseTimeValue(11100)); TEST_ASSERT_EQUAL_UINT16(112, trbc::tasmotaPulseTimeValue(12000)); TEST_ASSERT_EQUAL_UINT16(113, trbc::tasmotaPulseTimeValue(13000)); } int main() { UNITY_BEGIN(); RUN_TEST(test_clamps_timer_range); RUN_TEST(test_adjusts_in_100_ms_steps); RUN_TEST(test_adjusts_in_seconds_above_tasmota_threshold); RUN_TEST(test_adjustment_stays_in_range); RUN_TEST(test_normalizes_to_tasmota_representable_values); RUN_TEST(test_converts_to_tasmota_pulsetime_units); return UNITY_END(); }