packages feed

eternity-0.1: test/Main.hs

module Main where

import Prelude
import Test.QuickCheck.Instances
import Test.Tasty
import Test.Tasty.Runners
import Test.Tasty.HUnit
import Test.Tasty.QuickCheck
import System.Directory
import qualified Eternity.Potoki.Produce as O
import qualified Eternity.Potoki.Consume as P
import qualified Potoki.Produce as F
import qualified Potoki.IO as G
import qualified Potoki.Consume as H


main =
  defaultMain $
  testGroup "Store and read events" $
  [
    testProperty "Store and read events" $ \ (events :: [Int]) ->
    unsafePerformIO $ do
      removePathForcibly directory
      createDirectoryIfMissing True directory
      writeEvents events
      readEventsResult <- readEvents
      return (Right (Right events) === readEventsResult)
  ]
  where
    directory =
      "dist/test-events"
    writeEvents events =
      G.produceAndConsume (F.list events) (P.writeToDir directory)
    readEvents =
      G.produceAndConsume
        (O.readFromDir directory)
        (right' (right' H.list))