mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-12 19:08:34 +03:00
refactor: setAmountPrecision -> withPrecision
This commit is contained in:
parent
9cd228329c
commit
45d4a38cc7
@ -537,8 +537,8 @@ tests_Hledger_Data_Amount = TestList $
|
||||
(a3 + a3) `is` usd (-2.46)
|
||||
sum [a1,a2,a3,-a3] `is` usd 0
|
||||
-- highest precision is preserved
|
||||
let ap1 = setAmountPrecision 1 $ usd 1
|
||||
ap3 = setAmountPrecision 3 $ usd 1
|
||||
let ap1 = usd 1 `withPrecision` 1
|
||||
ap3 = usd 1 `withPrecision` 3
|
||||
(asprecision $ astyle $ sum [ap1,ap3]) `is` 3
|
||||
(asprecision $ astyle $ sum [ap3,ap1]) `is` 3
|
||||
-- adding different commodities assumes conversion rate 1
|
||||
@ -561,7 +561,7 @@ tests_Hledger_Data_Amount = TestList $
|
||||
,"adding mixed amounts" ~: do
|
||||
(sum $ map (Mixed . (\a -> [a]))
|
||||
[usd 1.25
|
||||
,setAmountPrecision 0 $ usd (-1)
|
||||
,usd (-1) `withPrecision` 0
|
||||
,usd (-0.25)
|
||||
])
|
||||
`is` Mixed [amount{aquantity=0}]
|
||||
|
@ -296,8 +296,8 @@ balanceTransaction styles t@Transaction{tpostings=ps}
|
||||
-- assign a balancing price. Use @@ for more exact output when possible.
|
||||
-- invariant: prices should always be positive. Enforced with "abs"
|
||||
= if length ramountsinunpricedcommodity == 1
|
||||
then TotalPrice $ setAmountPrecision maxprecision $ abs $ targetcommodityamount
|
||||
else UnitPrice $ setAmountPrecision maxprecision $ abs $ targetcommodityamount `divideAmount` (aquantity unpricedamount)
|
||||
then TotalPrice $ abs targetcommodityamount `withPrecision` maxprecision
|
||||
else UnitPrice $ abs (targetcommodityamount `divideAmount` (aquantity unpricedamount)) `withPrecision` maxprecision
|
||||
| otherwise = NoPrice
|
||||
where
|
||||
unpricedcommodity = head $ filter (`elem` (map acommodity rsumamounts)) rcommoditiesinorder
|
||||
@ -320,8 +320,8 @@ balanceTransaction styles t@Transaction{tpostings=ps}
|
||||
where
|
||||
conversionprice c | c == unpricedcommodity
|
||||
= if length bvamountsinunpricedcommodity == 1
|
||||
then TotalPrice $ setAmountPrecision maxprecision $ abs $ targetcommodityamount
|
||||
else UnitPrice $ setAmountPrecision maxprecision $ abs $ targetcommodityamount `divideAmount` (aquantity unpricedamount)
|
||||
then TotalPrice $ abs targetcommodityamount `withPrecision` maxprecision
|
||||
else UnitPrice $ abs (targetcommodityamount `divideAmount` (aquantity unpricedamount)) `withPrecision` maxprecision
|
||||
| otherwise = NoPrice
|
||||
where
|
||||
unpricedcommodity = head $ filter (`elem` (map acommodity bvsumamounts)) bvcommoditiesinorder
|
||||
@ -444,7 +444,7 @@ tests_Hledger_Data_Transaction = TestList $ concat [
|
||||
])
|
||||
(showTransaction
|
||||
(txnTieKnot $ Transaction (parsedate "2010/01/01") Nothing False "" "x" "" []
|
||||
[Posting False "a" (Mixed [amt 1 `at` (setAmountPrecision 0 $ usd 2)]) "" RegularPosting [] Nothing
|
||||
[Posting False "a" (Mixed [amt 1 `at` (usd 2 `withPrecision` 0)]) "" RegularPosting [] Nothing
|
||||
,Posting False "b" missingmixedamt "" RegularPosting [] Nothing
|
||||
] ""))
|
||||
|
||||
@ -480,7 +480,7 @@ tests_Hledger_Data_Transaction = TestList $ concat [
|
||||
] "")
|
||||
assertBool "balanceTransaction can infer conversion price" (isRight e)
|
||||
assertEqual "balancing conversion price is inferred"
|
||||
(Mixed [usd 1.35 @@ (setAmountPrecision maxprecision $ eur 1)])
|
||||
(Mixed [usd 1.35 @@ (eur 1 `withPrecision` maxprecision)])
|
||||
(case e of
|
||||
Right e' -> (pamount $ head $ tpostings e')
|
||||
Left _ -> error' "should not happen")
|
||||
|
@ -577,7 +577,7 @@ amountp = try leftsymbolamount <|> try rightsymbolamount <|> nosymbolamount
|
||||
tests_amountp = [
|
||||
"amountp" ~: do
|
||||
assertParseEqual (parseWithCtx nullctx amountp "$47.18") (usd 47.18)
|
||||
assertParseEqual (parseWithCtx nullctx amountp "$1.") (setAmountPrecision 0 $ usd 1)
|
||||
assertParseEqual (parseWithCtx nullctx amountp "$1.") (usd 1 `withPrecision` 0)
|
||||
,"amount with unit price" ~: do
|
||||
assertParseEqual
|
||||
(parseWithCtx nullctx amountp "$10 @ €0.5")
|
||||
|
Loading…
Reference in New Issue
Block a user