packages feed

matlab-0.3.0.0: test/Test/Util.hs

{-# LANGUAGE TemplateHaskell        #-}

module Test.Util where

import           Control.Monad.Catch             (MonadThrow)
import           Control.Monad.IO.Class
import qualified Control.Exception               as E
import Control.Monad (join)
-- import           Data.AEq
-- import           Data.CallStack
import           Data.Either                     (fromRight)
import qualified Data.Text                       as Txt
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
import           Path
import           System.Environment
-- import           Test.HUnit.Lang                 (FailureReason(..), HUnitFailure(..))
import           Test.UtilTemplate

getRepoDirStatic :: String
getRepoDirStatic = $(lift . toFilePath =<< runIO getRepoDir)


-- fromRightTst :: Either a b -> b
-- fromRightTst = (fromRight undefined)

-- assertEqualFP :: (AEq a, Show a) => [Char] -> a -> a -> IO ()
-- assertEqualFP preface e a = unless (a === e) $ unequalBody preface e a

-- assertApproxFP :: (AEq a, Show a) => [Char] -> a -> a -> IO ()
-- assertApproxFP preface e a = unless (a ~== e) $ unequalBody preface e a

-- unequalBody :: (Show a1, Show a2) => [Char] -> a2 -> a1 -> IO ()
-- unequalBody preface expected actual = do
--   (prefaceMsg `deepseq` expectedMsg `deepseq` actualMsg `deepseq` E.throwIO
--     (HUnitFailure location $ ExpectedButGot prefaceMsg expectedMsg actualMsg))
--   where
--     prefaceMsg
--       | null preface = Nothing
--       | otherwise = Just preface
--     expectedMsg = show expected
--     actualMsg = show actual

-- -- | As copied from https://hackage.haskell.org/package/HUnit-1.6.0.0/docs/src/Test.HUnit.Lang.html#location
-- location :: HasCallStack => Maybe SrcLoc
-- location = case reverse callStack of
--   (_, loc) : _ -> Just loc
--   [] -> Nothing