pads-haskell-0.0.0.1: Test/Examples.hs
{-# LANGUAGE TypeFamilies, ScopedTypeVariables, DeriveDataTypeable
, MultiParamTypeClasses
, TypeSynonymInstances
, TemplateHaskell
, QuasiQuotes
, FlexibleInstances #-}
module Main where
import System.IO.Unsafe (unsafePerformIO)
import Data.Monoid
import Test.Framework
import Test.Framework.Providers.HUnit
import Test.Framework.Providers.QuickCheck2
import qualified Test.HUnit as H
import Test.HUnit ((@?=))
import Test.QuickCheck (Property, quickCheck, (==>))
import qualified Test.QuickCheck.Monadic as TQM
import Control.Monad.State.Lazy (liftIO)
import Language.Pads.Padsc
import Examples.Proc
import qualified Examples.First as First
import qualified Examples.AI as AI
import qualified Examples.Binary as Binary
procMaps fn =
let (MapsFile maps, maps_md) = unsafePerformIO $ parseFileWith mapsFile_parseM fn
in last maps
@?=
Region { start_addr = "ffffffffff600000"
, end_addr = "ffffffffff601000"
, perms = Permissions
{ permRead = READ
, permWrite = NOWRITE
, permExec = EXEC
, permShare = PRIVATE
}
, offset = 0
, device = ("00", "00")
, inode = 0
, path = VSyscall
}
testFirst =
unsafePerformIO First.test
@?=
H.Counts (length First.tests) (length First.tests) 0 0
testAI = True ==> TQM.monadicIO $ do
r <- liftIO $ AI.result 1
TQM.assert $ r ==
[ AI.Entry
{ AI.host = AI.Addr 207 136 97 49
, AI.identdID = AI.Missing
, AI.httpID = AI.Missing
, AI.time = read "1997-10-16 01:46:51 UTC"
, AI.request = AI.Request
{ AI.method = AI.GET
, AI.url = "/turkey/amnty1.gif"
, AI.version = AI.Version {AI.major = 1, AI.minor = 0}
}
, AI.response = 200
, AI.contentLen = AI.ContentLength 3013
}
]
testBinary =
unsafePerformIO Binary.test
@?=
H.Counts (length Binary.tests) (length Binary.tests) 0 0
main :: IO ()
main = defaultMainWithOpts
[ testCase "Examples.First" testFirst
, testProperty "Examples.AI" testAI
, testCase "proc maps file 0" (procMaps "Test/data/maps0")
] mempty