hledger/hledger-lib/tests/easytests.hs
Simon Michael b4c336c874 test/_test/it/_it helpers; refactor easytests
This makes skipping/unskipping tests easier, and improves readability
a bit.

Note it's also possible to just write the test name with no preceding
function, when the type is constrained (see Journal.hs).
2018-08-17 13:40:37 +01:00

40 lines
1.5 KiB
Haskell
Executable File

#!/usr/bin/env stack exec -- ghcid -Tmain
-- Run tests using project's resolver, whenever ghcid is happy.
--
-- Experimental tests using easytest, an alternative to hunit (eg).
-- https://hackage.haskell.org/package/easytest
{-# LANGUAGE OverloadedStrings #-}
import EasyTest
import Hledger
main :: IO ()
main = do
run
-- rerun "journal.standard account types.queries.assets"
-- rerunOnly 2686786430487349354 "journal.standard account types.queries.assets"
$ tests [
test "journal.standard account types.queries" $
let
j = samplejournal
journalAccountNamesMatching :: Query -> Journal -> [AccountName]
journalAccountNamesMatching q = filter (q `matchesAccount`) . journalAccountNames
namesfrom qfunc = journalAccountNamesMatching (qfunc j) j
in
tests
[ test "assets" $
expectEq (namesfrom journalAssetAccountQuery) ["assets","assets:bank","assets:bank:checking","assets:bank:saving","assets:cash"]
, test "liabilities" $
expectEq (namesfrom journalLiabilityAccountQuery) ["liabilities","liabilities:debts"]
, test "equity" $
expectEq (namesfrom journalEquityAccountQuery) []
, test "income" $
expectEq (namesfrom journalIncomeAccountQuery) ["income","income:gifts","income:salary"]
, test "expenses" $
expectEq (namesfrom journalExpenseAccountQuery) ["expenses","expenses:food","expenses:supplies"]
]
]