rawr-0.0.0.0: tests/datasize/Main.hs
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedLabels #-}
module Main where
import Control.DeepSeq
import GHC.DataSize
import GHC.Generics
import Data.Rawr
import Test.Tasty
import Test.Tasty.HUnit
data Id a = Id a deriving (Generic, NFData)
main :: IO ()
main = defaultMain $ testGroup "ghc-datasize"
[ testCase "R0" $ do
s <- rsize $!! ()
s' <- rsize $!! R ()
s @?= s'
, testCase "R1" $ do
s <- rsize $!! Id True
s' <- rsize $!! R ( #a := True )
s @?= s'
, testCase "R2" $ do
let a = 1 :: Int
s <- rsize $!! (a, True)
s' <- rsize $!! R ( #a := a, #b := True )
s @?= s'
, testCase "R3" $ do
let a = 1 :: Int
c = "Hello world"
s <- rsize $!! (a, True, c)
s' <- rsize $!! R ( #a := a, #b := True, #c := c )
s @?= s'
]
where rsize = recursiveSize :: (a -> IO Integer)