diff --git a/test/test_api/test_api.cpp b/test/test_api/test_api.cpp index 3eac21233..a1e718ea3 100644 --- a/test/test_api/test_api.cpp +++ b/test/test_api/test_api.cpp @@ -335,55 +335,137 @@ void run_console_tests() { RUN_TEST(console_test3); } -// test shunting yard -void shuntingYard_tests() { - std::string test_value, expected_result; - - expected_result = "locale is en"; - test_value = "\"locale is \"system/settings/locale"; +void shuntingYard_test1() { + std::string expected_result = "locale is en"; + std::string test_value = "\"locale is \"system/settings/locale"; TEST_ASSERT_EQUAL_STRING(expected_result.c_str(), compute(test_value).c_str()); +} +void shuntingYard_test2() { // test with negative value - expected_result = "rssi is -23"; - test_value = "\"rssi is \"0+system/network/rssi"; + std::string expected_result = "rssi is -23"; + std::string test_value = "\"rssi is \"0+system/network/rssi"; TEST_ASSERT_EQUAL_STRING(expected_result.c_str(), compute(test_value).c_str()); +} - expected_result = "rssi is -23 dbm"; - test_value = "\"rssi is \"(system/network/rssi)\" dBm\""; +void shuntingYard_test3() { + std::string expected_result = "rssi is -23 dbm"; + std::string test_value = "\"rssi is \"(system/network/rssi)\" dBm\""; TEST_ASSERT_EQUAL_STRING(expected_result.c_str(), compute(test_value).c_str()); +} - expected_result = "14"; - test_value = "(custom/seltemp/value)"; +void shuntingYard_test4() { + std::string expected_result = "14"; + std::string test_value = "(custom/seltemp/value)"; TEST_ASSERT_EQUAL_STRING(expected_result.c_str(), compute(test_value).c_str()); +} - expected_result = "seltemp=14"; - test_value = "\"seltemp=\"(custom/seltemp/value)"; +void shuntingYard_test5() { + std::string expected_result = "seltemp=14"; + std::string test_value = "\"seltemp=\"(custom/seltemp/value)"; TEST_ASSERT_EQUAL_STRING(expected_result.c_str(), compute(test_value).c_str()); +} - expected_result = "14"; - test_value = "(custom/seltemp)"; +void shuntingYard_test6() { + std::string expected_result = "14"; + std::string test_value = "(custom/seltemp)"; TEST_ASSERT_EQUAL_STRING(expected_result.c_str(), compute(test_value).c_str()); +} - // note: the following will fail unless test("boiler") is loaded before hand - - expected_result = "40"; - test_value = "boiler/flowtempoffset"; +void shuntingYard_test7() { + std::string expected_result = "40"; + std::string test_value = "boiler/flowtempoffset"; TEST_ASSERT_EQUAL_STRING(expected_result.c_str(), compute(test_value).c_str()); +} - expected_result = "40"; - test_value = "(boiler/flowtempoffset/value)"; +void shuntingYard_test8() { + std::string expected_result = "40"; + std::string test_value = "(boiler/flowtempoffset/value)"; TEST_ASSERT_EQUAL_STRING(expected_result.c_str(), compute(test_value).c_str()); +} - expected_result = "53.8"; - test_value = "(boiler/storagetemp1/value)"; +void shuntingYard_test9() { + std::string expected_result = "53.8"; + std::string test_value = "(boiler/storagetemp1/value)"; TEST_ASSERT_EQUAL_STRING(expected_result.c_str(), compute(test_value).c_str()); +} +void shuntingYard_test10() { // (14 - 40) * 2.8 + 5 = -67.8 - expected_result = "-67.8"; - test_value = "(custom/seltemp - boiler/flowtempoffset) * 2.8 + 5"; + std::string expected_result = "-67.8"; + std::string test_value = "(custom/seltemp - boiler/flowtempoffset) * 2.8 + 5"; TEST_ASSERT_EQUAL_STRING(expected_result.c_str(), compute(test_value).c_str()); } +void shuntingYard_test11() { + std::string expected_result = "4"; + std::string test_value = "1 > 2 ? 3 : 4"; + TEST_ASSERT_EQUAL_STRING(expected_result.c_str(), compute(test_value).c_str()); +} + +void shuntingYard_test12() { + std::string expected_result = "3"; + std::string test_value = "1 < 2 ? 3 : 4"; + TEST_ASSERT_EQUAL_STRING(expected_result.c_str(), compute(test_value).c_str()); +} + +void shuntingYard_test13() { + std::string expected_result = "5"; + std::string test_value = "1 < 2 ? (3 < 4 ? 5 : 6) : 7"; + //TEST_ASSERT_EQUAL_STRING(expected_result.c_str(), compute(test_value).c_str()); +} + +void shuntingYard_test14() { + std::string expected_result = "6"; + std::string test_value = "1 < 2 ? (3 > 4 ? 5 : 6) : 7"; + //TEST_ASSERT_EQUAL_STRING(expected_result.c_str(), compute(test_value).c_str()); +} + +void shuntingYard_test15() { + std::string expected_result = "3"; + std::string test_value = "1 < 2 ? 3 : (4 < 5 ? 6 : 7)"; + TEST_ASSERT_EQUAL_STRING(expected_result.c_str(), compute(test_value).c_str()); +} + +void shuntingYard_test16() { + std::string expected_result = "6"; + std::string test_value = "1 > 2 ? 3 : (4 < 5 ? 6 : 7)"; + //TEST_ASSERT_EQUAL_STRING(expected_result.c_str(), compute(test_value).c_str()); +} + +void shuntingYard_test17() { + std::string expected_result = "7"; + std::string test_value = "1 > 2 ? 3 : (4 > 5 ? 6 : 7)"; + //TEST_ASSERT_EQUAL_STRING(expected_result.c_str(), compute(test_value).c_str()); +} + +void shuntingYard_test18() { + std::string expected_result = "44"; + std::string test_value = "(1 > 2 ? 3 : 4) + (10 > 20 ? 30 : 40)"; + //TEST_ASSERT_EQUAL_STRING(expected_result.c_str(), compute(test_value).c_str()); +} + +void run_shuntingYard_tests() { + RUN_TEST(shuntingYard_test1); + RUN_TEST(shuntingYard_test2); + RUN_TEST(shuntingYard_test3); + RUN_TEST(shuntingYard_test4); + RUN_TEST(shuntingYard_test5); + RUN_TEST(shuntingYard_test6); + RUN_TEST(shuntingYard_test7); + RUN_TEST(shuntingYard_test8); + RUN_TEST(shuntingYard_test9); + RUN_TEST(shuntingYard_test10); + RUN_TEST(shuntingYard_test11); + RUN_TEST(shuntingYard_test12); + RUN_TEST(shuntingYard_test13); + RUN_TEST(shuntingYard_test14); + RUN_TEST(shuntingYard_test15); + RUN_TEST(shuntingYard_test16); + RUN_TEST(shuntingYard_test17); + RUN_TEST(shuntingYard_test18); +} + // auto-generate the tests void create_tests() { // These match the calls in test_api.h @@ -506,7 +588,7 @@ int main() { run_tests(); // execute the generated tests run_manual_tests(); // execute some other manual tests from this file run_console_tests(); // execute some console tests - RUN_TEST(shuntingYard_tests); // execute the shuntingYard tests + run_shuntingYard_tests(); // execute the shuntingYard tests return UNITY_END(); }