162 lines
4.4 KiB
C++
162 lines
4.4 KiB
C++
#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();
|
|
} |