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