#include #include #include "Configurator.h" void setUp() { } void tearDown() { } void test_shade_is_configured_with_id_and_friendly_name() { int callbackInvokedCount = 0; Configurator configurator = Configurator(); configurator.addShadeConfiguredCallback([&] (Shade shade) { callbackInvokedCount++; TEST_ASSERT_EQUAL_STRING("Test Shade", shade.friendlyName.c_str()); TEST_ASSERT_EQUAL_HEX16(0xABCD, shade.ID); TEST_ASSERT_EQUAL_STRING("test_shade", shade.key.c_str()); }); configurator.processIdMessage("hotdog/test_shade/id", "ABCD"); configurator.processFriendlyNameMessage("hotdog/test_shade/friendly_name", "Test Shade"); TEST_ASSERT_EQUAL_INT(1, callbackInvokedCount); } void test_shade_is_configured_again_with_new_friendly_name() { int callbackInvokedCount = 0; Configurator configurator = Configurator(); configurator.addShadeConfiguredCallback([&] (Shade shade) { callbackInvokedCount++; if (callbackInvokedCount == 1) { TEST_ASSERT_EQUAL_STRING("Test Shade", shade.friendlyName.c_str()); } else if (callbackInvokedCount == 2) { TEST_ASSERT_EQUAL_STRING("Updated Test Shade", shade.friendlyName.c_str()); } else { TEST_ABORT(); } TEST_ASSERT_EQUAL_HEX16(0xABCD, shade.ID); TEST_ASSERT_EQUAL_STRING("test_shade", shade.key.c_str()); }); configurator.processIdMessage("hotdog/test_shade/id", "ABCD"); configurator.processFriendlyNameMessage("hotdog/test_shade/friendly_name", "Test Shade"); TEST_ASSERT_EQUAL_INT(1, callbackInvokedCount); configurator.processFriendlyNameMessage("hotdog/test_shade/friendly_name", "Updated Test Shade"); TEST_ASSERT_EQUAL_INT(2, callbackInvokedCount); } void test_shade_is_configured_again_with_new_id() { int callbackInvokedCount = 0; Configurator configurator = Configurator(); configurator.addShadeConfiguredCallback([&] (Shade shade) { callbackInvokedCount++; TEST_ASSERT_EQUAL_STRING("Test Shade", shade.friendlyName.c_str()); if (callbackInvokedCount == 1) { TEST_ASSERT_EQUAL_HEX16(0xABCD, shade.ID); } else if (callbackInvokedCount == 2) { TEST_ASSERT_EQUAL_HEX16(0x9876, shade.ID); } else { TEST_ABORT(); } TEST_ASSERT_EQUAL_STRING("test_shade", shade.key.c_str()); }); configurator.processIdMessage("hotdog/test_shade/id", "ABCD"); configurator.processFriendlyNameMessage("hotdog/test_shade/friendly_name", "Test Shade"); TEST_ASSERT_EQUAL_INT(1, callbackInvokedCount); configurator.processIdMessage("hotdog/test_shade/id", "9876"); TEST_ASSERT_EQUAL_INT(2, callbackInvokedCount); } void test_shade_is_not_configured_without_friendly_name() { int callbackInvokedCount = 0; Configurator configurator = Configurator(); configurator.addShadeConfiguredCallback([&] (Shade shade) { callbackInvokedCount++; }); configurator.processIdMessage("hotdog/test_shade/id", "ABCD"); TEST_ASSERT_EQUAL_INT(0, callbackInvokedCount); } void test_shade_is_not_configured_without_id() { int callbackInvokedCount = 0; Configurator configurator = Configurator(); configurator.addShadeConfiguredCallback([&] (Shade shade) { callbackInvokedCount++; }); configurator.processFriendlyNameMessage("hotdog/test_shade/friendly_name", "Test Shade"); TEST_ASSERT_EQUAL_INT(0, callbackInvokedCount); } void test_shade_is_not_configured_with_invalid_id() { int callbackInvokedCount = 0; Configurator configurator = Configurator(); configurator.addShadeConfiguredCallback([&] (Shade shade) { callbackInvokedCount++; }); configurator.processIdMessage("hotdog/test_shade/id", "ZZZZ"); configurator.processFriendlyNameMessage("hotdog/test_shade/friendly_name", "Test Shade"); TEST_ASSERT_EQUAL_INT(0, callbackInvokedCount); } int runUnityTests(void) { UNITY_BEGIN(); RUN_TEST(test_shade_is_configured_with_id_and_friendly_name); RUN_TEST(test_shade_is_configured_again_with_new_friendly_name); RUN_TEST(test_shade_is_configured_again_with_new_id); RUN_TEST(test_shade_is_not_configured_without_friendly_name); RUN_TEST(test_shade_is_not_configured_without_id); RUN_TEST(test_shade_is_not_configured_with_invalid_id); return UNITY_END(); } /** * For Arduino framework */ void setup() { // Wait ~2 seconds before the Unity test runner // establishes connection with a board Serial interface delay(2000); runUnityTests(); } void loop() {} int main(void) { return runUnityTests(); }