158 lines
4.5 KiB
C++
158 lines
4.5 KiB
C++
#include <unity.h>
|
|
#include <Arduino.h>
|
|
#include "ShadeRepository.h"
|
|
|
|
void setUp()
|
|
{
|
|
}
|
|
|
|
void tearDown()
|
|
{
|
|
}
|
|
|
|
void test_shade_is_found_with_id()
|
|
{
|
|
ShadeRepository shadeRepository = ShadeRepository();
|
|
shadeRepository.upsert(Shade{0xABCD, "test_shade", "Test Shade", -1, -1, 0, 0, nullptr});
|
|
|
|
auto shade = shadeRepository.findById(0xABCD);
|
|
|
|
TEST_ASSERT_NOT_NULL_MESSAGE(shade, "shade should not be null");
|
|
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());
|
|
}
|
|
|
|
void test_shade_is_found_with_key()
|
|
{
|
|
ShadeRepository shadeRepository = ShadeRepository();
|
|
shadeRepository.upsert(Shade{0xABCD, "test_shade", "Test Shade", -1, -1, 0, 0, nullptr});
|
|
|
|
auto shade = shadeRepository.findByKey("test_shade");
|
|
|
|
TEST_ASSERT_NOT_NULL_MESSAGE(shade, "shade should not be null");
|
|
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());
|
|
}
|
|
|
|
void test_adding_shade_twice_only_added_once()
|
|
{
|
|
ShadeRepository shadeRepository = ShadeRepository();
|
|
shadeRepository.upsert(Shade{0xABCD, "test_shade", "Test Shade", -1, -1, 0, 0, nullptr});
|
|
shadeRepository.upsert(Shade{0xABCD, "test_shade", "Test Shade", -1, -1, 0, 0, nullptr});
|
|
|
|
int count = 0;
|
|
|
|
for (auto iter = shadeRepository.begin(); iter != shadeRepository.end(); iter++) {
|
|
count++;
|
|
}
|
|
|
|
TEST_ASSERT_EQUAL_INT(1, count);
|
|
}
|
|
|
|
void test_updating_shade_id()
|
|
{
|
|
ShadeRepository shadeRepository = ShadeRepository();
|
|
shadeRepository.upsert(Shade{0xABCD, "test_shade", "Test Shade", -1, -1, 0, 0, nullptr});
|
|
|
|
auto shade1 = shadeRepository.findById(0xABCD);
|
|
|
|
TEST_ASSERT_EQUAL_HEX16(0xABCD, shade1->ID);
|
|
|
|
shadeRepository.upsert(Shade{0x1234, "test_shade", "Test Shade", -1, -1, 0, 0, nullptr});
|
|
|
|
auto shade2 = shadeRepository.findById(0x1234);
|
|
|
|
auto shade3 = shadeRepository.findById(0xABCD);
|
|
|
|
TEST_ASSERT_EQUAL_HEX16(0x1234, shade2->ID);
|
|
TEST_ASSERT_EQUAL_HEX16(0x1234, shade1->ID);
|
|
TEST_ASSERT_NULL(shade3);
|
|
}
|
|
|
|
void test_updating_shade_friendly_name()
|
|
{
|
|
ShadeRepository shadeRepository = ShadeRepository();
|
|
shadeRepository.upsert(Shade{0xABCD, "test_shade", "Test Shade", -1, -1, 0, 0, nullptr});
|
|
|
|
auto shade1 = shadeRepository.findByKey("test_shade");
|
|
|
|
TEST_ASSERT_EQUAL_STRING("Test Shade", shade1->friendlyName.c_str());
|
|
|
|
shadeRepository.upsert(Shade{0xABCD, "test_shade", "Updated Test Shade", -1, -1, 0, 0, nullptr});
|
|
|
|
auto shade2 = shadeRepository.findByKey("test_shade");
|
|
|
|
TEST_ASSERT_EQUAL_STRING("Updated Test Shade", shade2->friendlyName.c_str());
|
|
TEST_ASSERT_EQUAL_STRING("Updated Test Shade", shade1->friendlyName.c_str());
|
|
}
|
|
|
|
void test_shade_added_callback()
|
|
{
|
|
int callbackInvokedCount = 0;
|
|
|
|
ShadeRepository shadeRepository = ShadeRepository();
|
|
shadeRepository.addShadeAddedCallback([&] (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());
|
|
});
|
|
|
|
shadeRepository.upsert(Shade{0xABCD, "test_shade", "Test Shade", -1, -1, 0, 0, nullptr});
|
|
|
|
TEST_ASSERT_EQUAL_INT(1, callbackInvokedCount);
|
|
}
|
|
|
|
void test_shade_changed_callback()
|
|
{
|
|
int callbackInvokedCount = 0;
|
|
|
|
ShadeRepository shadeRepository = ShadeRepository();
|
|
shadeRepository.addShadeChangedCallback([&] (Shade& shade) {
|
|
callbackInvokedCount++;
|
|
|
|
TEST_ASSERT_EQUAL_STRING("Updated Test Shade", shade.friendlyName.c_str());
|
|
TEST_ASSERT_EQUAL_HEX16(0x1234, shade.ID);
|
|
TEST_ASSERT_EQUAL_STRING("test_shade", shade.key.c_str());
|
|
});
|
|
|
|
shadeRepository.upsert(Shade{0xABCD, "test_shade", "Test Shade", -1, -1, 0, 0, nullptr});
|
|
shadeRepository.upsert(Shade{0x1234, "test_shade", "Updated Test Shade", -1, -1, 0, 0, nullptr});
|
|
|
|
TEST_ASSERT_EQUAL_INT(1, callbackInvokedCount);
|
|
}
|
|
|
|
int runUnityTests(void)
|
|
{
|
|
UNITY_BEGIN();
|
|
RUN_TEST(test_shade_is_found_with_id);
|
|
RUN_TEST(test_shade_is_found_with_key);
|
|
RUN_TEST(test_adding_shade_twice_only_added_once);
|
|
RUN_TEST(test_updating_shade_id);
|
|
RUN_TEST(test_updating_shade_friendly_name);
|
|
RUN_TEST(test_shade_added_callback);
|
|
RUN_TEST(test_shade_changed_callback);
|
|
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();
|
|
} |