-- How to use: runghc testAnd.hs

import TestLib

import AndDef
import And (interp)

tests =
    [ "AndBool left identity"
      ~: interp (Prim2 AndBool (Bln False) (Num 4))
      ~?= Success (VB False)
    , "AndBool right"
      ~: interp (Prim2 AndBool (Bln True) (Bln False))
      ~?= Success (VB False)
    , "AndBool type error 1st operand"
      ~: interp (Prim2 AndBool (Num 4) (Bln True))
      ~?= Error TypeError
    , "AndBool type error 2nd operand"
      ~: interp (Prim2 AndBool (Bln True) (Num 4))
      ~?= Error TypeError
    , "AndFlex left identity"
      ~: interp (Prim2 AndFlex (Bln False) (Num 4))
      ~?= Success (VB False)
    , "AndFlex right"
      ~: interp (Prim2 AndFlex (Num 4) (Num 10))
      ~?= Success (VN 10)
    ]
-- More tests when marking.

main = testlibMain tests