{-# 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)