packages feed

temporary-resourcet-0.1.0.1: test/Test.hs

module Main where

import           Test.Tasty
import           Test.Tasty.HUnit

import           Control.Monad                (liftM)
import           Control.Monad.IO.Class       (liftIO)
import           Control.Monad.Trans.Resource
import           System.Directory             (doesDirectoryExist,
                                               doesFileExist)
import           System.IO.Temp

main :: IO ()
main = defaultMain $ testGroup "temporary-resourcet"
    [ testGroup "createTempDirectory"
        [ testCase "release" $ test_createTempDirectory_release @? "Directory still exists"
        , testCase "runResourceT" $ test_createTempDirectory_runResourceT @? "Directory still exists"
        ]
    , testGroup "openBinaryTempFile"
        [ testCase "release" $ test_openBinaryTempFile_release @? "File still exists"
        , testCase "runResourceT" $ test_openBinaryTempFile_runResourceT @? "File still exists"
        ]
    , testGroup "openTempFile"
        [ testCase "release" $ test_openTempFile_release @? "File still exists"
        , testCase "runResourceT" $ test_openTempFile_runResourceT @? "File still exists"
        ]
    ]

test_createTempDirectory_release :: IO Bool
test_createTempDirectory_release =
    runResourceT $ do
        (key, path) <- createTempDirectory Nothing "test-temporary-resourcet-"
        release key
        liftIO $ liftM not $ doesDirectoryExist path

test_createTempDirectory_runResourceT :: IO Bool
test_createTempDirectory_runResourceT = do
    path <- runResourceT $ do
        (_, path) <- createTempDirectory Nothing "test-temporary-resourcet-"
        return path
    liftM not $ doesDirectoryExist path

test_openBinaryTempFile_release :: IO Bool
test_openBinaryTempFile_release =
    runResourceT $ do
        (key, path, _) <- openBinaryTempFile Nothing "test-temporary-resourcet-"
        release key
        liftIO $ liftM not $ doesFileExist path

test_openBinaryTempFile_runResourceT :: IO Bool
test_openBinaryTempFile_runResourceT = do
    path <- runResourceT $ do
        (_, path, _) <- openBinaryTempFile Nothing "test-temporary-resourcet-"
        return path
    liftM not $ doesFileExist path

test_openTempFile_release :: IO Bool
test_openTempFile_release =
    runResourceT $ do
        (key, path, _) <- openTempFile Nothing "test-temporary-resourcet-"
        release key
        liftIO $ liftM not $ doesFileExist path

test_openTempFile_runResourceT :: IO Bool
test_openTempFile_runResourceT = do
    path <- runResourceT $ do
        (_, path, _) <- openTempFile Nothing "test-temporary-resourcet-"
        return path
    liftM not $ doesFileExist path