tests: Journal -> easytest
This commit is contained in:
		
							parent
							
								
									0499b3f7e5
								
							
						
					
					
						commit
						d5c756e6c8
					
				@ -52,8 +52,7 @@ import Hledger.Utils.Test
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
tests_Hledger_Data = TestList
 | 
					tests_Hledger_Data = TestList
 | 
				
			||||||
    [
 | 
					    [
 | 
				
			||||||
     tests_Hledger_Data_Journal
 | 
					     tests_Hledger_Data_Ledger
 | 
				
			||||||
    ,tests_Hledger_Data_Ledger
 | 
					 | 
				
			||||||
    ,tests_Hledger_Data_Posting
 | 
					    ,tests_Hledger_Data_Posting
 | 
				
			||||||
    -- ,tests_Hledger_Data_RawOptions
 | 
					    -- ,tests_Hledger_Data_RawOptions
 | 
				
			||||||
    -- ,tests_Hledger_Data_StringFormat
 | 
					    -- ,tests_Hledger_Data_StringFormat
 | 
				
			||||||
 | 
				
			|||||||
@ -68,7 +68,6 @@ module Hledger.Data.Journal (
 | 
				
			|||||||
  journalUntieTransactions,
 | 
					  journalUntieTransactions,
 | 
				
			||||||
  -- * Tests
 | 
					  -- * Tests
 | 
				
			||||||
  samplejournal,
 | 
					  samplejournal,
 | 
				
			||||||
  tests_Hledger_Data_Journal,
 | 
					 | 
				
			||||||
  easytests_Journal,
 | 
					  easytests_Journal,
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
where
 | 
					where
 | 
				
			||||||
@ -83,7 +82,6 @@ import Data.Functor.Identity (Identity(..))
 | 
				
			|||||||
import qualified Data.HashTable.ST.Cuckoo as HT
 | 
					import qualified Data.HashTable.ST.Cuckoo as HT
 | 
				
			||||||
import Data.List
 | 
					import Data.List
 | 
				
			||||||
import Data.List.Extra (groupSort)
 | 
					import Data.List.Extra (groupSort)
 | 
				
			||||||
-- import Data.Map (findWithDefault)
 | 
					 | 
				
			||||||
import Data.Maybe
 | 
					import Data.Maybe
 | 
				
			||||||
#if !(MIN_VERSION_base(4,11,0))
 | 
					#if !(MIN_VERSION_base(4,11,0))
 | 
				
			||||||
import Data.Monoid
 | 
					import Data.Monoid
 | 
				
			||||||
@ -95,16 +93,14 @@ import qualified Data.Text as T
 | 
				
			|||||||
import Safe (headMay, headDef)
 | 
					import Safe (headMay, headDef)
 | 
				
			||||||
import Data.Time.Calendar
 | 
					import Data.Time.Calendar
 | 
				
			||||||
import Data.Tree
 | 
					import Data.Tree
 | 
				
			||||||
import qualified EasyTest
 | 
					 | 
				
			||||||
import System.Time (ClockTime(TOD))
 | 
					import System.Time (ClockTime(TOD))
 | 
				
			||||||
import Text.Printf
 | 
					import Text.Printf
 | 
				
			||||||
import qualified Data.Map as M
 | 
					import qualified Data.Map as M
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import Hledger.Utils
 | 
					import Hledger.Utils hiding (is)
 | 
				
			||||||
import Hledger.Data.Types
 | 
					import Hledger.Data.Types
 | 
				
			||||||
import Hledger.Data.AccountName
 | 
					import Hledger.Data.AccountName
 | 
				
			||||||
import Hledger.Data.Amount
 | 
					import Hledger.Data.Amount
 | 
				
			||||||
-- import Hledger.Data.Commodity
 | 
					 | 
				
			||||||
import Hledger.Data.Dates
 | 
					import Hledger.Data.Dates
 | 
				
			||||||
import Hledger.Data.Transaction
 | 
					import Hledger.Data.Transaction
 | 
				
			||||||
import Hledger.Data.Posting
 | 
					import Hledger.Data.Posting
 | 
				
			||||||
@ -881,19 +877,6 @@ journalDateSpan secondary j
 | 
				
			|||||||
      pdates   = concatMap (catMaybes . map (if secondary then (Just . postingDate2) else pdate) . tpostings) ts
 | 
					      pdates   = concatMap (catMaybes . map (if secondary then (Just . postingDate2) else pdate) . tpostings) ts
 | 
				
			||||||
      ts       = jtxns j
 | 
					      ts       = jtxns j
 | 
				
			||||||
 | 
					
 | 
				
			||||||
test_journalDateSpan = do
 | 
					 | 
				
			||||||
 "journalDateSpan" ~: do
 | 
					 | 
				
			||||||
  assertEqual "" (DateSpan (Just $ fromGregorian 2014 1 10) (Just $ fromGregorian 2014 10 11))
 | 
					 | 
				
			||||||
                 (journalDateSpan True j)
 | 
					 | 
				
			||||||
  where
 | 
					 | 
				
			||||||
    j = nulljournal{jtxns = [nulltransaction{tdate = parsedate "2014/02/01"
 | 
					 | 
				
			||||||
                                            ,tpostings = [posting{pdate=Just (parsedate "2014/01/10")}]
 | 
					 | 
				
			||||||
                                            }
 | 
					 | 
				
			||||||
                            ,nulltransaction{tdate = parsedate "2014/09/01"
 | 
					 | 
				
			||||||
                                            ,tpostings = [posting{pdate2=Just (parsedate "2014/10/10")}]
 | 
					 | 
				
			||||||
                                            }
 | 
					 | 
				
			||||||
                            ]}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-- | Apply the pivot transformation to all postings in a journal,
 | 
					-- | Apply the pivot transformation to all postings in a journal,
 | 
				
			||||||
-- replacing their account name by their value for the given field or tag.
 | 
					-- replacing their account name by their value for the given field or tag.
 | 
				
			||||||
journalPivot :: Text -> Journal -> Journal
 | 
					journalPivot :: Text -> Journal -> Journal
 | 
				
			||||||
@ -1077,28 +1060,35 @@ Right samplejournal = journalBalanceTransactions False $
 | 
				
			|||||||
          ]
 | 
					          ]
 | 
				
			||||||
         }
 | 
					         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
tests_Hledger_Data_Journal = TestList $
 | 
					is :: (Eq a, Show a, HasCallStack) => a -> a -> Test ()
 | 
				
			||||||
 [
 | 
					is = flip expectEq'
 | 
				
			||||||
  test_journalDateSpan
 | 
					 | 
				
			||||||
  -- "query standard account types" ~:
 | 
					 | 
				
			||||||
  --  do
 | 
					 | 
				
			||||||
  --   let j = journal1
 | 
					 | 
				
			||||||
  --   journalBalanceSheetAccountNames j `is` ["assets","assets:a","equity","equity:q","equity:q:qq","liabilities","liabilities:l"]
 | 
					 | 
				
			||||||
  --   journalProfitAndLossAccountNames j `is` ["expenses","expenses:e","income","income:i"]
 | 
					 | 
				
			||||||
 ]
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
easytests_Journal = tests "Journal" [
 | 
					easytests_Journal = tests "Journal" [
 | 
				
			||||||
  test "standard account types" $ do
 | 
					
 | 
				
			||||||
 | 
					   test "journalDateSpan" $
 | 
				
			||||||
 | 
					    journalDateSpan True nulljournal{
 | 
				
			||||||
 | 
					      jtxns = [nulltransaction{tdate = parsedate "2014/02/01"
 | 
				
			||||||
 | 
					                              ,tpostings = [posting{pdate=Just (parsedate "2014/01/10")}]
 | 
				
			||||||
 | 
					                              }
 | 
				
			||||||
 | 
					              ,nulltransaction{tdate = parsedate "2014/09/01"
 | 
				
			||||||
 | 
					                              ,tpostings = [posting{pdate2=Just (parsedate "2014/10/10")}]
 | 
				
			||||||
 | 
					                              }
 | 
				
			||||||
 | 
					              ]
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    `is` (DateSpan (Just $ fromGregorian 2014 1 10) (Just $ fromGregorian 2014 10 11))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ,tests "standard account type queries" $
 | 
				
			||||||
    let
 | 
					    let
 | 
				
			||||||
      j = samplejournal
 | 
					      j = samplejournal
 | 
				
			||||||
      journalAccountNamesMatching :: Query -> Journal -> [AccountName]
 | 
					      journalAccountNamesMatching :: Query -> Journal -> [AccountName]
 | 
				
			||||||
      journalAccountNamesMatching q = filter (q `matchesAccount`) . journalAccountNames
 | 
					      journalAccountNamesMatching q = filter (q `matchesAccount`) . journalAccountNames
 | 
				
			||||||
      namesfrom qfunc = journalAccountNamesMatching (qfunc j) j
 | 
					      namesfrom qfunc = journalAccountNamesMatching (qfunc j) j
 | 
				
			||||||
    EasyTest.tests
 | 
					    in [
 | 
				
			||||||
      [ test "assets"      $ expectEq (namesfrom journalAssetAccountQuery)     ["assets","assets:bank","assets:bank:checking","assets:bank:saving","assets:cash"]
 | 
					       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 "liabilities" $ expectEq (namesfrom journalLiabilityAccountQuery) ["liabilities","liabilities:debts"]
 | 
				
			||||||
      , test "equity"      $ expectEq (namesfrom journalEquityAccountQuery)    []
 | 
					      ,test "equity"      $ expectEq (namesfrom journalEquityAccountQuery)    []
 | 
				
			||||||
      , test "income"      $ expectEq (namesfrom journalIncomeAccountQuery)    ["income","income:gifts","income:salary"]
 | 
					      ,test "income"      $ expectEq (namesfrom journalIncomeAccountQuery)    ["income","income:gifts","income:salary"]
 | 
				
			||||||
      , test "expenses"    $ expectEq (namesfrom journalExpenseAccountQuery)   ["expenses","expenses:food","expenses:supplies"]
 | 
					      ,test "expenses"    $ expectEq (namesfrom journalExpenseAccountQuery)   ["expenses","expenses:food","expenses:supplies"]
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user