{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE ForeignFunctionInterface #-}
module Main where
import Test.Tasty
import Test.Tasty.TH
import Test.Tasty.QuickCheck
import Data.Word
import System.Plugins.MultiStage
prog0 :: Word32 -> Word32 -> Word32
prog0 = (+)
loadFunWithConfig defaultConfig{ wdir="tests",builder=defaultBuilder } ['prog0 ]
loadFunWithConfig defaultConfig{ wdir="tests",builder=defaultBuilder,suffix="_suf"} ['prog0 ]
prop_prog0 :: Word32 -> Word32 -> Property
prop_prog0 x y = prog0 x y === c_prog0 x y
prop_prog0_suf :: Word32 -> Word32 -> Property
prop_prog0_suf x y = prog0 x y === c_prog0_suf x y
-- prog1 :: Vector1 Index -> Vector1 Index
-- prog1 = id
-- loadFunWithConfig defaultConfig ['prog1 ]
-- prog2 :: Vector1 Index -> PushVector1 Index
-- prog2 v = let pv = toPush v in pv PV.++ pv
-- loadFun ['prog2 ]
-- prop_prog1 :: Property
-- prop_prog1 = eval prog1 === c_prog1
-- prop_prog2 :: NonEmptyList WordN -> Property
-- prop_prog2 (NonEmpty xs) = eval prog2 xs === c_prog2 xs
tests :: TestTree
tests = $(testGroupGenerator)
main :: IO ()
main = defaultMain tests