jsonlogic-0.1.0.0: test/Operation/Boolean/TestIf.hs
{-# LANGUAGE OverloadedLists #-}
module Operation.Boolean.TestIf where
import JsonLogic.Json
import JsonLogic.Pure.Evaluator
import Test.Tasty
import Test.Tasty.HUnit as U
ifUnitTests :: TestTree
ifUnitTests =
testGroup
"If unit tests"
[ testCase "if with jsonbool" $
U.assertEqual
"condition is true and first value is returned"
(Right $ JsonNumber 1)
(apply [] (JsonObject [("if", JsonArray [JsonBool True, JsonNumber 1, JsonNumber 2])]) JsonNull),
testCase "if with rule as condition" $
U.assertEqual
"rule is evaluated to false and second value is returned"
(Right $ JsonNumber 2)
(apply [] (JsonObject [("if", JsonArray [JsonObject [(">=", JsonArray [JsonNumber 1, JsonNumber 2])], JsonNumber 1, JsonNumber 2])]) JsonNull),
testCase "if with undefined value" $
U.assertEqual
"only first value is and undefined is not"
(Right $ JsonBool True)
(apply [] (JsonObject [("if", JsonArray [JsonObject [("<=", JsonArray [JsonNumber 1, JsonNumber 2])], JsonBool True, JsonNumber undefined])]) JsonNull),
testCase "if with rule as value" $
U.assertEqual
"rule gets evaluated"
(Right $ JsonBool True)
(apply [] (JsonObject [("if", JsonArray [JsonBool True, JsonObject [("<=", JsonArray [JsonNumber 1, JsonNumber 2])], JsonNumber 2])]) JsonNull)
]