packages feed

shikensu-0.3.4: tests/Test/Helpers.hs

module Test.Helpers
    ( assertDef
    , assertEq
    , assertEqm
    , define
    ) where

import Flow
import Shikensu
import Shikensu.Sorting (sortByAbsolutePath)
import Test.Tasty.HUnit (Assertion, assertEqual)

import qualified Data.List as List (head, sortBy)


-- Assertions


assertDef :: (Eq a, Show a) => IO Definition -> (Definition -> a) -> a -> Assertion
assertDef definition recordFn value =
    fmap recordFn definition >>= assertEq value


assertEq :: (Eq a, Show a) => a -> a -> Assertion
assertEq =
    assertEqual ""


assertEqm :: (Eq a, Show a) => IO a -> a -> Assertion
assertEqm a b =
    a >>= assertEqual "" b



-- Shortcuts


define :: String -> String -> IO Definition
define pattern root =
    root
        |> Shikensu.listRelative [pattern]
        |> fmap (List.sortBy sortByAbsolutePath)
        |> fmap List.head