diff --git a/Stdlib/Data/Bool/Base.juvix b/Stdlib/Data/Bool/Base.juvix index 75fe8a63..0f0a1ceb 100644 --- a/Stdlib/Data/Bool/Base.juvix +++ b/Stdlib/Data/Bool/Base.juvix @@ -37,5 +37,11 @@ or (a b : Bool) : Bool := a || b; --- Logical conjunction. and (a b : Bool) : Bool := a && b; +--- Logical exclusive or. +xor : Bool -> Bool -> Bool + | true true := false + | false flase := false + | _ _ := true; + builtin assert assert (x : Bool) : Bool := x; diff --git a/test/Test/Prelude.juvix b/test/Test/Prelude.juvix new file mode 100644 index 00000000..f2e451a1 --- /dev/null +++ b/test/Test/Prelude.juvix @@ -0,0 +1,19 @@ +module Test.Prelude; + +import Test.JuvixUnit open; +import Stdlib.Prelude open; + +tests : List Test := + [ + testCase "And" (assertEqual "and works as expected" (and true false) false); + testCase + "Xor" + (assertEqual "and works as expected" (xor true false) (xor false true)); + testCase + "Xor-2" + (assertEqual "and works as expected" (xor false false) (xor true true)); + ]; + +suite : TestSuite := testSuite "Prelude" tests; + +main : IO := runTestSuite suite;