diff --git a/firmware/controllers/core/logic_expression.cpp b/firmware/controllers/core/logic_expression.cpp index 137095748c..ad0baecab8 100644 --- a/firmware/controllers/core/logic_expression.cpp +++ b/firmware/controllers/core/logic_expression.cpp @@ -24,7 +24,9 @@ LENameOrdinalPair * LE_FIRST = NULL; * them in the magic list of operator name/ordinal pairs */ static LENameOrdinalPair leAnd(LE_OPERATOR_AND, "and"); +static LENameOrdinalPair leAnd2(LE_OPERATOR_AND, "&"); static LENameOrdinalPair leOr(LE_OPERATOR_OR, "or"); +static LENameOrdinalPair leOr2(LE_OPERATOR_OR, "|"); static LENameOrdinalPair leNot(LE_OPERATOR_NOT, "not"); static LENameOrdinalPair leAdd(LE_OPERATOR_ADDITION, "+"); diff --git a/unit_tests/main.cpp b/unit_tests/main.cpp index 413551ce3b..5ad515793f 100644 --- a/unit_tests/main.cpp +++ b/unit_tests/main.cpp @@ -138,7 +138,7 @@ int main(void) { testFLStack(); // resizeMap(); - printf("Success 20131126\r\n"); + printf("Success 20131210\r\n"); return EXIT_SUCCESS; } diff --git a/unit_tests/test_logic_expression.cpp b/unit_tests/test_logic_expression.cpp index 86d16f30a7..644a43fd35 100644 --- a/unit_tests/test_logic_expression.cpp +++ b/unit_tests/test_logic_expression.cpp @@ -31,8 +31,12 @@ float getLEValue(Engine *engine, calc_stack_t *s, le_action_e action) { return mockRpm; case LE_METHOD_TIME_SINCE_BOOT: return mockTimeSinceBoot; + case LE_METHOD_FAN_ON_SETTING: + return 0; + case LE_METHOD_FAN_OFF_SETTING: + return 0; default: - firmwareError("No mock value for %d", action); + firmwareError("No mock value for %d", action); return NAN; } } @@ -172,6 +176,11 @@ void testLogicExpressions(void) { testExpression("fan NOT coolant 90 > AND fan coolant 85 > AND OR", 1); + testExpression("0 1 &", 0); + testExpression("0 1 |", 1); + + testExpression(FAN_CONTROL_LOGIC, 1); + mockRpm = 900; testExpression(FUEL_PUMP_LOGIC, 1);