Packages

The Phi Programming Language

Current section

Files

Jump to
phi tests Test Data Tuple.phi
Raw

tests/Test/Data/Tuple.phi

module Test.Data.Tuple where
import Test.QuickCheck (TestGroup(..), TestResult, quickCheck)
import Prelude
import Data.Tuple as T
testfunc :: (Int, Int)->Int
testfunc (a, b) = a + b
testfunc2 :: Int->Int->Int
testfunc2 a b = a + b
propfst :: (Int, Int)->Bool
propfst t@(a, b) = T.fst t == a
propsnd :: (Int, Int)->Bool
propsnd t@(a, b) = T.snd t== b
propSwap :: (Int, Int)->Bool
propSwap t@(a, b) = T.swap t == (b, a)
propCurry :: (Int, Int)->Bool
propCurry (a, b) = (T.curry testfunc a b) == testfunc (a, b)
propUncurry :: Int->Int->Bool
propUncurry a b = (T.uncurry testfunc2 (a, b)) == (testfunc2 a b)
test :: TestGroup (Integer -> IO TestResult)
test = Exe [
quickCheck "first" propfst
,quickCheck "second" propsnd
,quickCheck "swap" propSwap
,quickCheck "curry" propCurry
,quickCheck "uncurry" propUncurry
,quickCheck "show" (show (2, [2]) == "(2, [2])")
,quickCheck "ord" ((2, [2]) > (2, [1]))
,quickCheck "eq" ((2, [2]) == (2, [2]))
]