packages feed

array-builder-0.1.0.0: test/Main.hs

{-# language BangPatterns #-}
{-# language ScopedTypeVariables #-}
{-# language TypeApplications #-}

import Data.Builder (singleton,run)
import Control.Monad.ST (runST)
import Test.Tasty (defaultMain,testGroup,TestTree)
import Test.Tasty.HUnit ((@=?))
import Data.Semigroup (stimes)
import qualified Data.List as L
import qualified Data.Foldable as F
import qualified GHC.Exts as Exts
import qualified Test.Tasty.HUnit as THU

main :: IO ()
main = defaultMain tests

tests :: TestTree
tests = testGroup "Tests"
  [ THU.testCase "A" $ "ABCDEF" @=?
    ( F.toList $ run
      (  singleton 'A'
      <> singleton 'B'
      <> singleton 'C'
      <> singleton 'D'
      <> singleton 'E'
      <> singleton 'F'
      )
    )
  , THU.testCase "B" $ "ABCCCCCCCCCCCCCCCD" @=?
    ( F.toList $ run
      (  singleton 'A'
      <> singleton 'B'
      <> stimes (15 :: Int) (singleton 'C')
      <> singleton 'D'
      )
    )
  , THU.testCase "C" $ (L.replicate 500 'X') @=?
    (F.toList $ run (stimes (500 :: Int) (singleton 'X')))
  ]