packages feed

compact-mutable-vector-0.0.0.1: test/Data/Vector/Mutable/CompactSpec.hs

module Data.Vector.Mutable.CompactSpec
  ( spec
  ) where

import Data.Foldable (for_)
import Test.Hspec (Spec, it, shouldBe)
import System.Mem (performGC)

import qualified Data.Compact as Compact
import qualified Data.Vector.Mutable.Compact as CVector

spec :: Spec
spec =
  for_ [0 .. 63] $ \n ->
    it (show n) $ do
      c <- Compact.compact ()
      v <- CVector.replicate c n "ABC"
      for_ [0 .. n - 1] $ \i -> do

        performGC

        abc <- CVector.read v i
        abc `shouldBe` "ABC"

        performGC

        CVector.write v i (show i)
        def <- CVector.read v i
        def `shouldBe` (show i)