feat: Licht-Steuerung mit Fade-Regeln und Einschaltverhalten
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
#include "unity.h"
|
||||
#include "light/nl_boot_state.h"
|
||||
|
||||
void setUp(void) {}
|
||||
void tearDown(void) {}
|
||||
|
||||
static nl_light_state_t red_off(void)
|
||||
{
|
||||
nl_light_state_t s = {false, 40, NL_MODE_COLOR, 255, 0, 0, 3000};
|
||||
return s;
|
||||
}
|
||||
|
||||
static void test_default_state(void)
|
||||
{
|
||||
nl_light_state_t d = nl_boot_default_state(nl_board_find("evk"));
|
||||
TEST_ASSERT_TRUE(d.on);
|
||||
TEST_ASSERT_EQUAL_UINT8(100, d.brightness);
|
||||
TEST_ASSERT_EQUAL(NL_MODE_WHITE, d.mode);
|
||||
TEST_ASSERT_EQUAL_UINT16(2700, d.ct);
|
||||
TEST_ASSERT_EQUAL_UINT16(2700, nl_boot_default_state(nl_board_find("e27_cw")).ct);
|
||||
}
|
||||
|
||||
static void test_last_restores_everything(void)
|
||||
{
|
||||
nl_light_state_t last = red_off();
|
||||
nl_light_state_t s = nl_boot_state(NL_POB_LAST, &last, nl_board_find("evk"));
|
||||
TEST_ASSERT_TRUE(nl_light_state_equal(&last, &s));
|
||||
}
|
||||
|
||||
static void test_last_without_saved_state_uses_default(void)
|
||||
{
|
||||
const nl_board_t *b = nl_board_find("evk");
|
||||
nl_light_state_t s = nl_boot_state(NL_POB_LAST, NULL, b);
|
||||
nl_light_state_t d = nl_boot_default_state(b);
|
||||
TEST_ASSERT_TRUE(nl_light_state_equal(&d, &s));
|
||||
}
|
||||
|
||||
static void test_on_forces_on_with_last_values(void)
|
||||
{
|
||||
nl_light_state_t last = red_off();
|
||||
nl_light_state_t s = nl_boot_state(NL_POB_ON, &last, nl_board_find("evk"));
|
||||
TEST_ASSERT_TRUE(s.on);
|
||||
TEST_ASSERT_EQUAL_UINT8(40, s.brightness);
|
||||
TEST_ASSERT_EQUAL(NL_MODE_COLOR, s.mode);
|
||||
}
|
||||
|
||||
static void test_off_forces_off(void)
|
||||
{
|
||||
nl_light_state_t last = red_off();
|
||||
last.on = true;
|
||||
nl_light_state_t s = nl_boot_state(NL_POB_OFF, &last, nl_board_find("evk"));
|
||||
TEST_ASSERT_FALSE(s.on);
|
||||
TEST_ASSERT_EQUAL_UINT8(40, s.brightness);
|
||||
}
|
||||
|
||||
static void test_sanitizes_stored_values(void)
|
||||
{
|
||||
nl_light_state_t last = {true, 0, NL_MODE_COLOR, 1, 2, 3, 9000};
|
||||
nl_light_state_t s = nl_boot_state(NL_POB_LAST, &last, nl_board_find("e27_cw"));
|
||||
TEST_ASSERT_EQUAL_UINT8(100, s.brightness); /* invalid 0 -> 100 */
|
||||
TEST_ASSERT_EQUAL(NL_MODE_WHITE, s.mode); /* no RGB on this board */
|
||||
TEST_ASSERT_EQUAL_UINT16(5000, s.ct); /* clamped */
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
UNITY_BEGIN();
|
||||
RUN_TEST(test_default_state);
|
||||
RUN_TEST(test_last_restores_everything);
|
||||
RUN_TEST(test_last_without_saved_state_uses_default);
|
||||
RUN_TEST(test_on_forces_on_with_last_values);
|
||||
RUN_TEST(test_off_forces_off);
|
||||
RUN_TEST(test_sanitizes_stored_values);
|
||||
return UNITY_END();
|
||||
}
|
||||
Reference in New Issue
Block a user