packages feed

hcobs-0.1.0.0: test/Allocation.hs

{-# LANGUAGE TypeInType #-}
{-# LANGUAGE PartialTypeSignatures #-}
{-# LANGUAGE OverloadedStrings #-}

import           Data.ByteString.Lazy hiding (replicate)
import qualified Data.ByteString.Lazy as BSL
import Data.ByteString.Base64 (encode, decode)
import           Data.Stuffed
import Control.DeepSeq --(NFData)
import Control.Exception
import           Prelude              hiding (concat)
import Weigh (mainWith, func)

instance NFData (Stuffed a)

stuffZero :: _ -> Stuffed 0
stuffZero = stuff

main :: IO ()
main = do
    let stuffedAll = stuffZero allBytes
    let stuffedZeros = stuffZero zeros
    let base64All = encode $ toStrict allBytes
    let base64Zeros = encode $ toStrict zeros
    evaluate $!! stuffZero allBytes
    evaluate $!! stuffZero zeros
    evaluate $!! encode $ toStrict allBytes
    evaluate $!! encode $ toStrict zeros
    mainWith $ do
        func "stuff/empty" stuffZero ""
        func "stuff/allbytes" stuffZero allBytes
        func "stuff/allzeros" stuffZero zeros
        func "base64encode/empty" encode ""
        func "base64encode/allbytes" encode $ toStrict allBytes
        func "base64encode/allzeros" encode $ toStrict zeros
        func "unstuff/empty" unstuff $ stuffZero ""
        func "unstuff/allbytes" unstuff stuffedAll
        func "unstuff/allzeros" unstuff stuffedZeros
        func "base64decode/empty" decode $ encode ""
        func "base64decode/allbytes" decode base64All
        func "base64decode/allzeros" decode base64Zeros
        where
            allBytes = concat $ replicate 40 $ pack [0..255]
            zeros = BSL.replicate 10000 0