mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-29 13:22:27 +03:00
tests: AccountName -> easytest
This commit is contained in:
parent
5de679ce62
commit
c3755f9a52
@ -52,8 +52,7 @@ import Hledger.Utils.Test
|
|||||||
|
|
||||||
tests_Hledger_Data = TestList
|
tests_Hledger_Data = TestList
|
||||||
[
|
[
|
||||||
tests_Hledger_Data_AccountName
|
tests_Hledger_Data_Amount
|
||||||
,tests_Hledger_Data_Amount
|
|
||||||
,tests_Hledger_Data_Journal
|
,tests_Hledger_Data_Journal
|
||||||
,tests_Hledger_Data_Ledger
|
,tests_Hledger_Data_Ledger
|
||||||
,tests_Hledger_Data_Posting
|
,tests_Hledger_Data_Posting
|
||||||
@ -65,5 +64,6 @@ tests_Hledger_Data = TestList
|
|||||||
]
|
]
|
||||||
|
|
||||||
easytests_Data = tests "Data" [
|
easytests_Data = tests "Data" [
|
||||||
easytests_Journal
|
easytests_AccountName
|
||||||
|
,easytests_Journal
|
||||||
]
|
]
|
||||||
|
@ -9,8 +9,38 @@ hierarchy.
|
|||||||
|
|
||||||
-}
|
-}
|
||||||
|
|
||||||
module Hledger.Data.AccountName
|
module Hledger.Data.AccountName (
|
||||||
|
accountLeafName
|
||||||
|
,accountNameComponents
|
||||||
|
,accountNameDrop
|
||||||
|
,accountNameFromComponents
|
||||||
|
,accountNameLevel
|
||||||
|
,accountNameToAccountOnlyRegex
|
||||||
|
,accountNameToAccountRegex
|
||||||
|
,accountNameTreeFrom
|
||||||
|
,accountRegexToAccountName
|
||||||
|
,accountSummarisedName
|
||||||
|
,acctsep
|
||||||
|
,acctsepchar
|
||||||
|
,clipAccountName
|
||||||
|
,clipOrEllipsifyAccountName
|
||||||
|
,elideAccountName
|
||||||
|
,escapeName
|
||||||
|
,expandAccountName
|
||||||
|
,expandAccountNames
|
||||||
|
,isAccountNamePrefixOf
|
||||||
|
-- ,isAccountRegex
|
||||||
|
,isSubAccountNameOf
|
||||||
|
,parentAccountName
|
||||||
|
,parentAccountNames
|
||||||
|
,subAccountNamesFrom
|
||||||
|
,topAccountNames
|
||||||
|
,unbudgetedAccountName
|
||||||
|
,easytests_AccountName
|
||||||
|
)
|
||||||
where
|
where
|
||||||
|
|
||||||
|
import Data.CallStack
|
||||||
import Data.List
|
import Data.List
|
||||||
#if !(MIN_VERSION_base(4,11,0))
|
#if !(MIN_VERSION_base(4,11,0))
|
||||||
import Data.Monoid
|
import Data.Monoid
|
||||||
@ -21,7 +51,7 @@ import Data.Tree
|
|||||||
import Text.Printf
|
import Text.Printf
|
||||||
|
|
||||||
import Hledger.Data.Types
|
import Hledger.Data.Types
|
||||||
import Hledger.Utils
|
import Hledger.Utils hiding (is)
|
||||||
|
|
||||||
-- $setup
|
-- $setup
|
||||||
-- >>> :set -XOverloadedStrings
|
-- >>> :set -XOverloadedStrings
|
||||||
@ -123,7 +153,7 @@ accountNameTreeFrom accts =
|
|||||||
accounttreesfrom as = [Node a (accounttreesfrom $ subs a) | a <- as]
|
accounttreesfrom as = [Node a (accounttreesfrom $ subs a) | a <- as]
|
||||||
subs = subAccountNamesFrom (expandAccountNames accts)
|
subs = subAccountNamesFrom (expandAccountNames accts)
|
||||||
|
|
||||||
nullaccountnametree = Node "root" []
|
--nullaccountnametree = Node "root" []
|
||||||
|
|
||||||
-- | Elide an account name to fit in the specified width.
|
-- | Elide an account name to fit in the specified width.
|
||||||
-- From the ledger 2.6 news:
|
-- From the ledger 2.6 news:
|
||||||
@ -193,33 +223,35 @@ accountNameToAccountOnlyRegex a = printf "^%s$" $ escapeName a -- XXX pack
|
|||||||
accountRegexToAccountName :: Regexp -> AccountName
|
accountRegexToAccountName :: Regexp -> AccountName
|
||||||
accountRegexToAccountName = T.pack . regexReplace "^\\^(.*?)\\(:\\|\\$\\)$" "\\1" -- XXX pack
|
accountRegexToAccountName = T.pack . regexReplace "^\\^(.*?)\\(:\\|\\$\\)$" "\\1" -- XXX pack
|
||||||
|
|
||||||
-- | Does this string look like an exact account-matching regular expression ?
|
-- -- | Does this string look like an exact account-matching regular expression ?
|
||||||
isAccountRegex :: String -> Bool
|
--isAccountRegex :: String -> Bool
|
||||||
isAccountRegex s = take 1 s == "^" && take 5 (reverse s) == ")$|:("
|
--isAccountRegex s = take 1 s == "^" && take 5 (reverse s) == ")$|:("
|
||||||
|
|
||||||
tests_Hledger_Data_AccountName = TestList
|
is :: (Eq a, Show a, HasCallStack) => a -> a -> Test ()
|
||||||
[
|
is = flip expectEq'
|
||||||
"accountNameTreeFrom" ~: do
|
|
||||||
accountNameTreeFrom ["a"] `is` Node "root" [Node "a" []]
|
|
||||||
accountNameTreeFrom ["a","b"] `is` Node "root" [Node "a" [], Node "b" []]
|
|
||||||
accountNameTreeFrom ["a","a:b"] `is` Node "root" [Node "a" [Node "a:b" []]]
|
|
||||||
accountNameTreeFrom ["a:b:c"] `is` Node "root" [Node "a" [Node "a:b" [Node "a:b:c" []]]]
|
|
||||||
|
|
||||||
,"expandAccountNames" ~:
|
easytests_AccountName = tests "AccountName" [
|
||||||
|
tests "accountNameTreeFrom" [
|
||||||
|
accountNameTreeFrom ["a"] `is` Node "root" [Node "a" []]
|
||||||
|
,accountNameTreeFrom ["a","b"] `is` Node "root" [Node "a" [], Node "b" []]
|
||||||
|
,accountNameTreeFrom ["a","a:b"] `is` Node "root" [Node "a" [Node "a:b" []]]
|
||||||
|
,accountNameTreeFrom ["a:b:c"] `is` Node "root" [Node "a" [Node "a:b" [Node "a:b:c" []]]]
|
||||||
|
]
|
||||||
|
,tests "expandAccountNames" [
|
||||||
expandAccountNames ["assets:cash","assets:checking","expenses:vacation"] `is`
|
expandAccountNames ["assets:cash","assets:checking","expenses:vacation"] `is`
|
||||||
["assets","assets:cash","assets:checking","expenses","expenses:vacation"]
|
["assets","assets:cash","assets:checking","expenses","expenses:vacation"]
|
||||||
|
]
|
||||||
,"isAccountNamePrefixOf" ~: do
|
,tests "isAccountNamePrefixOf" [
|
||||||
"assets" `isAccountNamePrefixOf` "assets" `is` False
|
"assets" `isAccountNamePrefixOf` "assets" `is` False
|
||||||
"assets" `isAccountNamePrefixOf` "assets:bank" `is` True
|
,"assets" `isAccountNamePrefixOf` "assets:bank" `is` True
|
||||||
"assets" `isAccountNamePrefixOf` "assets:bank:checking" `is` True
|
,"assets" `isAccountNamePrefixOf` "assets:bank:checking" `is` True
|
||||||
"my assets" `isAccountNamePrefixOf` "assets:bank" `is` False
|
,"my assets" `isAccountNamePrefixOf` "assets:bank" `is` False
|
||||||
|
]
|
||||||
,"isSubAccountNameOf" ~: do
|
,tests "isSubAccountNameOf" [
|
||||||
"assets" `isSubAccountNameOf` "assets" `is` False
|
"assets" `isSubAccountNameOf` "assets" `is` False
|
||||||
"assets:bank" `isSubAccountNameOf` "assets" `is` True
|
,"assets:bank" `isSubAccountNameOf` "assets" `is` True
|
||||||
"assets:bank:checking" `isSubAccountNameOf` "assets" `is` False
|
,"assets:bank:checking" `isSubAccountNameOf` "assets" `is` False
|
||||||
"assets:bank" `isSubAccountNameOf` "my assets" `is` False
|
,"assets:bank" `isSubAccountNameOf` "my assets" `is` False
|
||||||
|
]
|
||||||
]
|
]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user