#include #include static bool isNewer(const char* available, const char* current) { int av[3] = {0, 0, 0}; int cur[3] = {0, 0, 0}; sscanf(available, "%d.%d.%d", &av[0], &av[1], &av[2]); sscanf(current, "%d.%d.%d", &cur[0], &cur[1], &cur[2]); for (int i = 0; i < 3; i++) { if (av[i] != cur[i]) return av[i] > cur[i]; } return false; } void test_newer_major() { TEST_ASSERT_TRUE(isNewer("2.0.0", "1.0.0")); } void test_newer_minor() { TEST_ASSERT_TRUE(isNewer("1.2.0", "1.1.0")); } void test_newer_patch() { TEST_ASSERT_TRUE(isNewer("1.0.1", "1.0.0")); } void test_same_version() { TEST_ASSERT_FALSE(isNewer("1.0.0", "1.0.0")); } void test_older_version() { TEST_ASSERT_FALSE(isNewer("1.0.0", "1.1.0")); } void test_complex_version() { TEST_ASSERT_TRUE(isNewer("2.1.3", "2.1.2")); TEST_ASSERT_FALSE(isNewer("2.1.2", "2.1.3")); TEST_ASSERT_TRUE(isNewer("3.0.0", "2.99.99")); } void setup() { delay(2000); UNITY_BEGIN(); RUN_TEST(test_newer_major); RUN_TEST(test_newer_minor); RUN_TEST(test_newer_patch); RUN_TEST(test_same_version); RUN_TEST(test_older_version); RUN_TEST(test_complex_version); UNITY_END(); } void loop() {}