jsonlogic-0.1.0.0: test/Operation/Boolean/TestEquality.hs
{-# LANGUAGE OverloadedLists #-}
module Operation.Boolean.TestEquality where
import JsonLogic.Json
import JsonLogic.Pure.Evaluator
import Test.Tasty (TestTree, testGroup)
import Test.Tasty.HUnit (testCase)
import qualified Test.Tasty.HUnit as U
-- See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Equality
equalityUnitTests :: TestTree
equalityUnitTests =
testGroup
"Equality unit tests"
[ testCase "Numbers" $ assertEqual (JsonNumber 1) (JsonNumber 1) True,
testCase "Strings" $ assertEqual (JsonString "hello") (JsonString "hello") True,
testCase "Strings and Numbers" $ assertEqual (JsonString "1") (JsonNumber 1) True,
testCase "Numbers and Bools" $ assertEqual (JsonNumber 0) (JsonBool False) True,
testCase "Numbers and Null" $ assertEqual (JsonNumber 0) JsonNull False,
testCase "Numbers and not not Null" $ assertEqual (JsonNumber 0) (JsonObject [("!!", JsonNull)]) True,
testCase "Objects" $ assertEqual (JsonObject [("preserve", JsonObject [("key", JsonString "value")])]) (JsonObject [("preserve", JsonObject [("key", JsonString "value")])]) True
]
assertEqual :: Json -> Json -> Bool -> U.Assertion
assertEqual l r b =
U.assertEqual
"Result is correct"
(Right $ JsonBool b)
(apply [] (JsonObject [("==", JsonArray [l, r])]) JsonNull)