Configure shades via MQTT messages
This commit is contained in:
162
test/test_configurator/test_configurator.cpp
Normal file
162
test/test_configurator/test_configurator.cpp
Normal file
@@ -0,0 +1,162 @@
|
||||
#include <unity.h>
|
||||
#include <Arduino.h>
|
||||
#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();
|
||||
}
|
||||
Reference in New Issue
Block a user