focus on tests in Tests.hs, clean up

This commit is contained in:
Simon Michael 2008-10-15 06:32:52 +00:00
parent 7a69efec70
commit 1e3291af48
14 changed files with 63 additions and 116 deletions

View File

@ -13,9 +13,6 @@ import Ledger.Types
import Ledger.Amount
accounttests = TestList [
]
instance Show Account where
show (Account a ts b) = printf "Account %s with %d txns and %s balance" a (length ts) (show b)

View File

@ -11,9 +11,6 @@ import Ledger.Utils
import Ledger.Types
accountnametests = TestList [
]
sepchar = ':'
accountNameComponents :: AccountName -> [String]

View File

@ -43,9 +43,6 @@ import Ledger.Types
import Ledger.Commodity
amounttests = TestList [
]
instance Show Amount where show = showAmount
-- | Get the string representation of an amount, based on its commodity's

View File

@ -13,9 +13,6 @@ import Ledger.Utils
import Ledger.Types
commoditytests = TestList [
]
-- for nullamt, autoamt, etc.
unknown = Commodity {symbol="",side=L,spaced=False,comma=False,precision=0,rate=1}

View File

@ -13,9 +13,6 @@ import Ledger.RawTransaction
import Ledger.Amount
entrytests = TestList [
]
instance Show Entry where show = showEntryDescription
{-

View File

@ -19,9 +19,6 @@ import Ledger.RawLedger
import Ledger.Entry
ledgertests = TestList [
]
instance Show Ledger where
show l = printf "Ledger with %d entries, %d accounts\n%s"
((length $ entries $ rawledger l) +

View File

@ -21,9 +21,6 @@ import Ledger.Commodity
import Ledger.TimeLog
parsertests = TestList [
]
-- utils
parseLedgerFile :: String -> IO (Either ParseError RawLedger)

View File

@ -15,9 +15,6 @@ import Ledger.Entry
import Ledger.Transaction
rawledgertests = TestList [
]
instance Show RawLedger where
show l = printf "RawLedger with %d entries, %d accounts: %s"
((length $ entries l) +

View File

@ -12,9 +12,6 @@ import Ledger.Types
import Ledger.Amount
rawtransactiontests = TestList [
]
instance Show RawTransaction where show = showLedgerTransaction
showLedgerTransaction :: RawTransaction -> String

View File

@ -14,9 +14,6 @@ import Ledger.Commodity
import Ledger.Amount
timelogtests = TestList [
]
instance Show TimeLogEntry where
show t = printf "%s %s %s" (show $ tlcode t) (tldatetime t) (tlcomment t)

View File

@ -14,9 +14,6 @@ import Ledger.RawTransaction
import Ledger.Amount
transactiontests = TestList [
]
instance Show Transaction where
show (Transaction eno d desc a amt) =
unwords [d,desc,a,show amt]

View File

@ -10,9 +10,6 @@ import Ledger
import Options
printcommandtests = TestList [
]
-- | Print ledger entries in standard format.
print' :: [Opt] -> [String] -> Ledger -> IO ()
print' opts args l = putStr $ showEntries opts args l

View File

@ -10,9 +10,6 @@ import Ledger
import Options
registercommandtests = TestList [
]
-- | Print a register report.
register :: [Opt] -> [String] -> Ledger -> IO ()
register opts args l = putStr $ showTransactionsWithBalances opts args l

140
Tests.hs
View File

@ -15,80 +15,71 @@ import RegisterCommand
-- quickcheck = mapM quickCheck ([
-- ] :: [Bool])
runtests = runTestTT alltests
runtests = runTestTT $ tconcat [unittests, functests]
alltests = concattests [
tests
,accounttests
,accountnametests
,amounttests
,balancecommandtests
,commoditytests
,entrytests
,ledgertests
,parsertests
,printcommandtests
,rawledgertests
,rawtransactiontests
,registercommandtests
,timelogtests
]
where
concattests = foldr (\(TestList as) (TestList bs) -> TestList (as ++ bs)) (TestList [])
tconcat :: [Test] -> Test
tconcat = foldr (\(TestList as) (TestList bs) -> TestList (as ++ bs)) (TestList [])
tests =
TestList
------------------------------------------------------------------------------
unittests = TestList
-- NB assertequal arguments on a new line have to be indented at least
-- one space, contrary to haskell-mode's auto indent
[
"display dollar amount" ~: show (dollars 1) ~?= "$1.00"
"show dollars" ~: show (dollars 1) ~?= "$1.00"
,"display time amount" ~: show (hours 1) ~?= "1.0h"
,"show hours" ~: show (hours 1) ~?= "1.0h"
-- ,"amount precision" ~: do
-- let a1 = dollars 1.23
-- let a2 = Amount (comm "$") (-1.23) 2
-- let a3 = Amount (comm "$") (-1.23) 3
-- assertequal (Amount (comm "$") 0 1) (a1 + a2)
-- assertequal (Amount (comm "$") 0 1) (a1 + a3)
-- assertequal (Amount (comm "$") (-2.46) 2) (a2 + a3)
-- assertequal (Amount (comm "$") (-2.46) 3) (a3 + a3)
-- -- sum adds 0, with Amount fromIntegral's default precision of 2
-- assertequal (Amount (comm "$") 0 1) (sum [a1,a2])
-- assertequal (Amount (comm "$") (-2.46) 2) (sum [a2,a3])
-- assertequal (Amount (comm "$") (-2.46) 2) (sum [a3,a3])
,"amount arithmetic" ~: do
let a1 = dollars 1.23
let a2 = Amount (comm "$") (-1.23)
let a3 = Amount (comm "$") (-1.23)
assertequal (Amount (comm "$") 0) (a1 + a2)
assertequal (Amount (comm "$") 0) (a1 + a3)
assertequal (Amount (comm "$") (-2.46)) (a2 + a3)
assertequal (Amount (comm "$") (-2.46)) (a3 + a3)
assertequal (Amount (comm "$") (-2.46)) (sum [a2,a3])
assertequal (Amount (comm "$") (-2.46)) (sum [a3,a3])
assertequal (Amount (comm "$") 0) (sum [a1,a2,a3,-a3])
,"ledgertransaction" ~: do
assertparseequal rawtransaction1 (parsewith ledgertransaction rawtransaction1_str)
,"ledgertransaction" ~: do
assertparseequal rawtransaction1 (parsewith ledgertransaction rawtransaction1_str)
,"ledgerentry" ~: do
assertparseequal entry1 (parsewith ledgerentry entry1_str)
,"ledgerentry" ~: do
assertparseequal entry1 (parsewith ledgerentry entry1_str)
,"autofillEntry" ~: do
assertequal
(dollars (-47.18))
(tamount $ last $ etransactions $ autofillEntry entry1)
,"punctuatethousands" ~: punctuatethousands "" @?= ""
,"punctuatethousands" ~: punctuatethousands "1234567.8901" @?= "1,234,567.8901"
,"punctuatethousands" ~: punctuatethousands "-100" @?= "-100"
,"autofillEntry" ~: do
assertequal
(dollars (-47.18))
(tamount $ last $ etransactions $ autofillEntry entry1)
,"expandAccountNames" ~: do
assertequal
["assets","assets:cash","assets:checking","expenses","expenses:vacation"]
(expandAccountNames ["assets:cash","assets:checking","expenses:vacation"])
,"punctuatethousands" ~: punctuatethousands "" @?= ""
,"punctuatethousands" ~: punctuatethousands "1234567.8901" @?= "1,234,567.8901"
,"punctuatethousands" ~: punctuatethousands "-100" @?= "-100"
,"ledgerAccountNames" ~: do
assertequal
["assets","assets:cash","assets:checking","assets:saving","equity","equity:opening balances",
"expenses","expenses:food","expenses:food:dining","expenses:phone","expenses:vacation",
"liabilities","liabilities:credit cards","liabilities:credit cards:discover"]
(accountnames ledger7)
,"expandAccountNames" ~: do
assertequal
["assets","assets:cash","assets:checking","expenses","expenses:vacation"]
(expandAccountNames ["assets:cash","assets:checking","expenses:vacation"])
,"cacheLedger" ~: do
assertequal 15 (length $ Map.keys $ accountmap $ cacheLedger rawledger7 )
,"ledgerAccountNames" ~: do
assertequal
["assets","assets:cash","assets:checking","assets:saving","equity","equity:opening balances",
"expenses","expenses:food","expenses:food:dining","expenses:phone","expenses:vacation",
"liabilities","liabilities:credit cards","liabilities:credit cards:discover"]
(accountnames ledger7)
,"transactionamount" ~: do
assertparseequal (dollars 47.18) (parsewith transactionamount " $47.18")
assertparseequal (Amount (Commodity {symbol="$",side=L,spaced=False,comma=False,precision=0,rate=1}) 1) (parsewith transactionamount " $1.")
]
,"cacheLedger" ~: do
assertequal 15 (length $ Map.keys $ accountmap $ cacheLedger rawledger7 )
,"transactionamount" ~: do
assertparseequal (dollars 47.18) (parsewith transactionamount " $47.18")
assertparseequal (Amount (Commodity {symbol="$",side=L,spaced=False,comma=False,precision=0,rate=1}) 1) (parsewith transactionamount " $1.")
------------------------------------------------------------------------------
functests = TestList
[
balancecommandtests
]
balancecommandtests =
@ -103,8 +94,7 @@ balancecommandtests =
\ $1 liabilities\n\
\" --"
(showBalanceReport [] [] l)
,
,
"balance report with showsubs" ~: do
l <- ledgerfromfile "sample.ledger"
assertequal
@ -120,8 +110,7 @@ balancecommandtests =
\ $1 liabilities:debts\n\
\" --"
(showBalanceReport [ShowSubs] [] l)
,
,
"balance report with account pattern o" ~: do
l <- ledgerfromfile "sample.ledger"
assertequal
@ -131,8 +120,7 @@ balancecommandtests =
\ $-1\n\
\" --"
(showBalanceReport [] ["o"] l)
,
,
"balance report with account pattern o and showsubs" ~: do
l <- ledgerfromfile "sample.ledger"
assertequal
@ -144,8 +132,7 @@ balancecommandtests =
\ $-1\n\
\" --"
(showBalanceReport [ShowSubs] ["o"] l)
,
,
"balance report with account pattern a" ~: do
l <- ledgerfromfile "sample.ledger"
assertequal
@ -158,8 +145,7 @@ balancecommandtests =
\ $-1\n\
\" --"
(showBalanceReport [] ["a"] l)
,
,
"balance report with account pattern e" ~: do
l <- ledgerfromfile "sample.ledger"
assertequal
@ -170,9 +156,9 @@ balancecommandtests =
\ $1 liabilities:debts\n\
\" --"
(showBalanceReport [] ["e"] l)
,
"balance report with unmatched parent of two matched subaccounts" ~: do
,
"balance report with unmatched parent of two matched subaccounts" ~:
do
l <- ledgerfromfile "sample.ledger"
assertequal
" $-2 assets:cash\n\
@ -197,8 +183,8 @@ balancecommandtests =
assertparseequal :: (Show a, Eq a) => a -> (Either ParseError a) -> Assertion
assertparseequal expected parsed = either printParseError (assertequal expected) parsed
-- test data
------------------------------------------------------------------------------
-- data
rawtransaction1_str = " expenses:food:dining $10.00\n"