diff --git a/EvaluableExpression.go b/EvaluableExpression.go index 4032111..7fa1b85 100644 --- a/EvaluableExpression.go +++ b/EvaluableExpression.go @@ -3,6 +3,7 @@ package govaluate import ( "errors" "math" + "time" ) /* @@ -351,6 +352,7 @@ func evaluateValue(stream *tokenStream, parameters map[string]interface{}) (inte case NUMERIC : fallthrough case STRING : fallthrough case BOOLEAN : return token.Value, nil; + case TIME : return float64(token.Value.(time.Time).Unix()), nil; default : break; } diff --git a/evaluation_test.go b/evaluation_test.go index 7424194..e28666a 100644 --- a/evaluation_test.go +++ b/evaluation_test.go @@ -145,6 +145,60 @@ func TestNoParameterEvaluation(test *testing.T) { Input: "1 + 5 ^ 3 % 2 * 5", Expected: 6.0, }, + EvaluationTest { + + Name: "Identical date equivalence", + Input: "'2014-01-02 14:12:22' == '2014-01-02 14:12:22'", + Expected: true, + }, + EvaluationTest { + + Name: "Positive date GT", + Input: "'2014-01-02 14:12:22' > '2014-01-02 12:12:22'", + Expected: true, + }, + EvaluationTest { + + Name: "Negative date GT", + Input: "'2014-01-02 14:12:22' > '2014-01-02 16:12:22'", + Expected: false, + }, + EvaluationTest { + + Name: "Positive date GTE", + Input: "'2014-01-02 14:12:22' >= '2014-01-02 12:12:22'", + Expected: true, + }, + EvaluationTest { + + Name: "Negative date GTE", + Input: "'2014-01-02 14:12:22' >= '2014-01-02 16:12:22'", + Expected: false, + }, + EvaluationTest { + + Name: "Positive date LT", + Input: "'2014-01-02 14:12:22' < '2014-01-02 16:12:22'", + Expected: true, + }, + EvaluationTest { + + Name: "Negative date LT", + Input: "'2014-01-02 14:12:22' < '2014-01-02 11:12:22'", + Expected: false, + }, + EvaluationTest { + + Name: "Positive date LTE", + Input: "'2014-01-02 09:12:22' <= '2014-01-02 12:12:22'", + Expected: true, + }, + EvaluationTest { + + Name: "Negative date LTE", + Input: "'2014-01-02 14:12:22' <= '2014-01-02 11:12:22'", + Expected: false, + }, } runEvaluationTests(evaluationTests, test)