mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-29 05:11:33 +03:00
port remaining Read.Common tests
This commit is contained in:
parent
f124007acf
commit
d1a7cc1c09
@ -345,7 +345,6 @@ samplejournal = readJournal' $ T.unlines
|
|||||||
tests_Hledger_Read = TestList $
|
tests_Hledger_Read = TestList $
|
||||||
tests_readJournal'
|
tests_readJournal'
|
||||||
++ [
|
++ [
|
||||||
tests_Hledger_Read_Common,
|
|
||||||
-- LedgerReader.tests_Hledger_Read_LedgerReader,
|
-- LedgerReader.tests_Hledger_Read_LedgerReader,
|
||||||
TimeclockReader.tests_Hledger_Read_TimeclockReader,
|
TimeclockReader.tests_Hledger_Read_TimeclockReader,
|
||||||
TimedotReader.tests_Hledger_Read_TimedotReader,
|
TimedotReader.tests_Hledger_Read_TimedotReader,
|
||||||
|
@ -92,7 +92,6 @@ module Hledger.Read.Common (
|
|||||||
singlespacep,
|
singlespacep,
|
||||||
|
|
||||||
-- * tests
|
-- * tests
|
||||||
tests_Hledger_Read_Common,
|
|
||||||
easytests_Common,
|
easytests_Common,
|
||||||
)
|
)
|
||||||
where
|
where
|
||||||
@ -500,12 +499,6 @@ spaceandamountormissingp =
|
|||||||
lift $ skipSome spacenonewline
|
lift $ skipSome spacenonewline
|
||||||
Mixed . (:[]) <$> amountp
|
Mixed . (:[]) <$> amountp
|
||||||
|
|
||||||
test_spaceandamountormissingp = TestCase $ do
|
|
||||||
assertParseEqual' (parseWithState mempty spaceandamountormissingp " $47.18") (Mixed [usd 47.18])
|
|
||||||
assertParseEqual' (parseWithState mempty spaceandamountormissingp "$47.18") missingmixedamt
|
|
||||||
assertParseEqual' (parseWithState mempty spaceandamountormissingp " ") missingmixedamt
|
|
||||||
assertParseEqual' (parseWithState mempty spaceandamountormissingp "") missingmixedamt
|
|
||||||
|
|
||||||
-- | Parse a single-commodity amount, with optional symbol on the left or
|
-- | Parse a single-commodity amount, with optional symbol on the left or
|
||||||
-- right, optional unit or total price, and optional (ignored)
|
-- right, optional unit or total price, and optional (ignored)
|
||||||
-- ledger-style balance assertion or fixed lot price declaration.
|
-- ledger-style balance assertion or fixed lot price declaration.
|
||||||
@ -691,28 +684,6 @@ numberp suggestedStyle = label "number" $ do
|
|||||||
Left errMsg -> fail errMsg
|
Left errMsg -> fail errMsg
|
||||||
Right (q, p, d, g) -> pure (sign q, p, d, g)
|
Right (q, p, d, g) -> pure (sign q, p, d, g)
|
||||||
|
|
||||||
test_numberp = TestCase $ do
|
|
||||||
let t `is` n = assertParseEqual (rtp (numberp Nothing) t) n
|
|
||||||
let assertFails = assertBool "numberp" . isLeft . rtp (numberp Nothing)
|
|
||||||
assertFails ""
|
|
||||||
"0" `is` (0, 0, Nothing, Nothing)
|
|
||||||
"1" `is` (1, 0, Nothing, Nothing)
|
|
||||||
"1.1" `is` (1.1, 1, Just '.', Nothing)
|
|
||||||
"1,000.1" `is` (1000.1, 1, Just '.', Just $ DigitGroups ',' [3])
|
|
||||||
"1.00.000,1" `is` (100000.1, 1, Just ',', Just $ DigitGroups '.' [3,2])
|
|
||||||
"1,000,000" `is` (1000000, 0, Nothing, Just $ DigitGroups ',' [3,3]) -- could be simplified to [3]
|
|
||||||
"1." `is` (1, 0, Just '.', Nothing)
|
|
||||||
"1," `is` (1, 0, Just ',', Nothing)
|
|
||||||
".1" `is` (0.1, 1, Just '.', Nothing)
|
|
||||||
",1" `is` (0.1, 1, Just ',', Nothing)
|
|
||||||
assertFails "1,000.000,1"
|
|
||||||
assertFails "1.000,000.1"
|
|
||||||
assertFails "1,000.000.1"
|
|
||||||
assertFails "1,,1"
|
|
||||||
assertFails "1..1"
|
|
||||||
assertFails ".1,"
|
|
||||||
assertFails ",1."
|
|
||||||
|
|
||||||
exponentp :: TextParser m Int
|
exponentp :: TextParser m Int
|
||||||
exponentp = char' 'e' *> signp <*> decimal <?> "exponent"
|
exponentp = char' 'e' *> signp <*> decimal <?> "exponent"
|
||||||
|
|
||||||
@ -1227,12 +1198,10 @@ match' p = do
|
|||||||
(!txt, p) <- match p
|
(!txt, p) <- match p
|
||||||
pure (txt, p)
|
pure (txt, p)
|
||||||
|
|
||||||
tests_Hledger_Read_Common = TestList [
|
--- * tests
|
||||||
test_numberp
|
|
||||||
,test_spaceandamountormissingp
|
|
||||||
]
|
|
||||||
|
|
||||||
easytests_Common = tests "Common" [
|
easytests_Common = tests "Common" [
|
||||||
|
|
||||||
tests "amountp" [
|
tests "amountp" [
|
||||||
test "basic" $ expectParseEq amountp "$47.18" (usd 47.18)
|
test "basic" $ expectParseEq amountp "$47.18" (usd 47.18)
|
||||||
,test "ends with decimal mark" $ expectParseEq amountp "$1." (usd 1 `withPrecision` 0)
|
,test "ends with decimal mark" $ expectParseEq amountp "$1." (usd 1 `withPrecision` 0)
|
||||||
@ -1263,4 +1232,34 @@ easytests_Common = tests "Common" [
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
,let p = lift (numberp Nothing) :: JournalParser IO (Quantity, Int, Maybe Char, Maybe DigitGroupStyle) in
|
||||||
|
tests "numberp" [
|
||||||
|
test "." $ expectParseEq p "0" (0, 0, Nothing, Nothing)
|
||||||
|
,test "." $ expectParseEq p "1" (1, 0, Nothing, Nothing)
|
||||||
|
,test "." $ expectParseEq p "1.1" (1.1, 1, Just '.', Nothing)
|
||||||
|
,test "." $ expectParseEq p "1,000.1" (1000.1, 1, Just '.', Just $ DigitGroups ',' [3])
|
||||||
|
,test "." $ expectParseEq p "1.00.000,1" (100000.1, 1, Just ',', Just $ DigitGroups '.' [3,2])
|
||||||
|
,test "." $ expectParseEq p "1,000,000" (1000000, 0, Nothing, Just $ DigitGroups ',' [3,3]) -- could be simplified to [3]
|
||||||
|
,test "." $ expectParseEq p "1." (1, 0, Just '.', Nothing)
|
||||||
|
,test "." $ expectParseEq p "1," (1, 0, Just ',', Nothing)
|
||||||
|
,test "." $ expectParseEq p ".1" (0.1, 1, Just '.', Nothing)
|
||||||
|
,test "." $ expectParseEq p ",1" (0.1, 1, Just ',', Nothing)
|
||||||
|
,test "." $ expectParseError p "" ""
|
||||||
|
,test "." $ expectParseError p "1,000.000,1" ""
|
||||||
|
,test "." $ expectParseError p "1.000,000.1" ""
|
||||||
|
,test "." $ expectParseError p "1,000.000.1" ""
|
||||||
|
,test "." $ expectParseError p "1,,1" ""
|
||||||
|
,test "." $ expectParseError p "1..1" ""
|
||||||
|
,test "." $ expectParseError p ".1," ""
|
||||||
|
,test "." $ expectParseError p ",1." ""
|
||||||
|
]
|
||||||
|
|
||||||
|
,tests "spaceandamountormissingp" [
|
||||||
|
test "space and amount" $ expectParseEq spaceandamountormissingp " $47.18" (Mixed [usd 47.18])
|
||||||
|
,test "empty string" $ expectParseEq spaceandamountormissingp "" missingmixedamt
|
||||||
|
,_test "just space" $ expectParseEq spaceandamountormissingp " " missingmixedamt -- XXX should it ?
|
||||||
|
-- ,test "just amount" $ expectParseError spaceandamountormissingp "$47.18" "" -- succeeds, consuming nothing
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
|
Loading…
Reference in New Issue
Block a user