lib: Fix compile errors in tests
This commit is contained in:
		
							parent
							
								
									510b4c1b55
								
							
						
					
					
						commit
						c67404c73d
					
				| @ -881,7 +881,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 | ||||||
| 
 | 
 | ||||||
| -- #ifdef TESTS |  | ||||||
| test_journalDateSpan = do | test_journalDateSpan = do | ||||||
|  "journalDateSpan" ~: do |  "journalDateSpan" ~: do | ||||||
|   assertEqual "" (DateSpan (Just $ fromGregorian 2014 1 10) (Just $ fromGregorian 2014 10 11)) |   assertEqual "" (DateSpan (Just $ fromGregorian 2014 1 10) (Just $ fromGregorian 2014 10 11)) | ||||||
| @ -894,7 +893,6 @@ test_journalDateSpan = do | |||||||
|                                             ,tpostings = [posting{pdate2=Just (parsedate "2014/10/10")}] |                                             ,tpostings = [posting{pdate2=Just (parsedate "2014/10/10")}] | ||||||
|                                             } |                                             } | ||||||
|                             ]} |                             ]} | ||||||
| -- #endif |  | ||||||
| 
 | 
 | ||||||
| -- | 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. | ||||||
|  | |||||||
| @ -346,6 +346,7 @@ samplejournal = readJournal' $ T.unlines | |||||||
| tests_Hledger_Read = TestList $ | tests_Hledger_Read = TestList $ | ||||||
|   tests_readJournal' |   tests_readJournal' | ||||||
|   ++ [ |   ++ [ | ||||||
|  |    tests_Hledger_Read_Common, | ||||||
|    JournalReader.tests_Hledger_Read_JournalReader, |    JournalReader.tests_Hledger_Read_JournalReader, | ||||||
| --    LedgerReader.tests_Hledger_Read_LedgerReader, | --    LedgerReader.tests_Hledger_Read_LedgerReader, | ||||||
|    TimeclockReader.tests_Hledger_Read_TimeclockReader, |    TimeclockReader.tests_Hledger_Read_TimeclockReader, | ||||||
|  | |||||||
| @ -89,7 +89,10 @@ module Hledger.Read.Common ( | |||||||
| 
 | 
 | ||||||
|   -- ** misc |   -- ** misc | ||||||
|   singlespacedtextp, |   singlespacedtextp, | ||||||
|   singlespacep |   singlespacep, | ||||||
|  | 
 | ||||||
|  |   -- * tests | ||||||
|  |   tests_Hledger_Read_Common | ||||||
| ) | ) | ||||||
| where | where | ||||||
| --- * imports | --- * imports | ||||||
| @ -114,6 +117,7 @@ import qualified Data.Text as T | |||||||
| import Data.Time.Calendar | import Data.Time.Calendar | ||||||
| import Data.Time.LocalTime | import Data.Time.LocalTime | ||||||
| import System.Time (getClockTime) | import System.Time (getClockTime) | ||||||
|  | import Test.HUnit | ||||||
| import Text.Megaparsec | import Text.Megaparsec | ||||||
| import Text.Megaparsec.Char | import Text.Megaparsec.Char | ||||||
| import Text.Megaparsec.Char.Lexer (decimal) | import Text.Megaparsec.Char.Lexer (decimal) | ||||||
| @ -496,19 +500,21 @@ spaceandamountormissingp = | |||||||
|     lift $ skipSome spacenonewline |     lift $ skipSome spacenonewline | ||||||
|     Mixed . (:[]) <$> amountp |     Mixed . (:[]) <$> amountp | ||||||
| 
 | 
 | ||||||
| #ifdef TESTS | assertParseEqual' :: | ||||||
| assertParseEqual' :: (Show a, Eq a) => (Either ParseError a) -> a -> Assertion |      (Show a, Eq a) | ||||||
| assertParseEqual' parse expected = either (assertFailure.show) (`is'` expected) parse |   => Identity (Either (ParseError Char CustomErr) a) | ||||||
|  |   -> a | ||||||
|  |   -> Assertion | ||||||
|  | assertParseEqual' parse expected = either (assertFailure.show) (`is'` expected) (runIdentity parse) | ||||||
| 
 | 
 | ||||||
| is' :: (Eq a, Show a) => a -> a -> Assertion | is' :: (Eq a, Show a) => a -> a -> Assertion | ||||||
| a `is'` e = assertEqual e a | a `is'` e = assertEqual "values are equal" e a | ||||||
| 
 | 
 | ||||||
| test_spaceandamountormissingp = do | test_spaceandamountormissingp = TestCase $ do | ||||||
|     assertParseEqual' (parseWithState mempty spaceandamountormissingp " $47.18") (Mixed [usd 47.18]) |     assertParseEqual' (parseWithState mempty spaceandamountormissingp " $47.18") (Mixed [usd 47.18]) | ||||||
|     assertParseEqual' (parseWithState mempty spaceandamountormissingp "$47.18") missingmixedamt |     assertParseEqual' (parseWithState mempty spaceandamountormissingp "$47.18") missingmixedamt | ||||||
|     assertParseEqual' (parseWithState mempty spaceandamountormissingp " ") missingmixedamt |     assertParseEqual' (parseWithState mempty spaceandamountormissingp " ") missingmixedamt | ||||||
|     assertParseEqual' (parseWithState mempty spaceandamountormissingp "") missingmixedamt |     assertParseEqual' (parseWithState mempty spaceandamountormissingp "") missingmixedamt | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| -- | 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) | ||||||
| @ -594,8 +600,7 @@ amountwithoutpricep = do | |||||||
|           Right res -> pure res |           Right res -> pure res | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| #ifdef TESTS | test_amountp = TestCase $ do | ||||||
| test_amountp = do |  | ||||||
|     assertParseEqual' (parseWithState mempty amountp "$47.18") (usd 47.18) |     assertParseEqual' (parseWithState mempty amountp "$47.18") (usd 47.18) | ||||||
|     assertParseEqual' (parseWithState mempty amountp "$1.") (usd 1 `withPrecision` 0) |     assertParseEqual' (parseWithState mempty amountp "$1.") (usd 1 `withPrecision` 0) | ||||||
|   -- ,"amount with unit price" ~: do |   -- ,"amount with unit price" ~: do | ||||||
| @ -606,7 +611,6 @@ test_amountp = do | |||||||
|     assertParseEqual' |     assertParseEqual' | ||||||
|      (parseWithState mempty amountp "$10 @@ €5") |      (parseWithState mempty amountp "$10 @@ €5") | ||||||
|      (usd 10 `withPrecision` 0 @@ (eur 5 `withPrecision` 0)) |      (usd 10 `withPrecision` 0 @@ (eur 5 `withPrecision` 0)) | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| -- | Parse an amount from a string, or get an error. | -- | Parse an amount from a string, or get an error. | ||||||
| amountp' :: String -> Amount | amountp' :: String -> Amount | ||||||
| @ -1256,3 +1260,5 @@ match' :: TextParser m a -> TextParser m (Text, a) | |||||||
| match' p = do | match' p = do | ||||||
|   (!txt, p) <- match p |   (!txt, p) <- match p | ||||||
|   pure (txt, p) |   pure (txt, p) | ||||||
|  | 
 | ||||||
|  | tests_Hledger_Read_Common = TestList [test_spaceandamountormissingp, test_amountp] | ||||||
|  | |||||||
| @ -76,6 +76,7 @@ import Control.Monad | |||||||
| import Control.Monad.Except (ExceptT(..)) | import Control.Monad.Except (ExceptT(..)) | ||||||
| import Control.Monad.State.Strict | import Control.Monad.State.Strict | ||||||
| import Data.Bifunctor (first) | import Data.Bifunctor (first) | ||||||
|  | import Data.Functor.Identity (Identity(..)) | ||||||
| import qualified Data.Map.Strict as M | import qualified Data.Map.Strict as M | ||||||
| import Data.Text (Text) | import Data.Text (Text) | ||||||
| import Data.String | import Data.String | ||||||
| @ -85,10 +86,6 @@ import Data.Time.Calendar | |||||||
| import Data.Time.LocalTime | import Data.Time.LocalTime | ||||||
| import Safe | import Safe | ||||||
| import Test.HUnit | import Test.HUnit | ||||||
| #ifdef TESTS |  | ||||||
| import Test.Framework |  | ||||||
| import Text.Megaparsec.Error |  | ||||||
| #endif |  | ||||||
| import Text.Megaparsec hiding (parse) | import Text.Megaparsec hiding (parse) | ||||||
| import Text.Megaparsec.Char | import Text.Megaparsec.Char | ||||||
| import Text.Megaparsec.Custom | import Text.Megaparsec.Custom | ||||||
| @ -545,24 +542,23 @@ transactionp = do | |||||||
|   let sourcepos = journalSourcePos startpos endpos |   let sourcepos = journalSourcePos startpos endpos | ||||||
|   return $ txnTieKnot $ Transaction 0 sourcepos date edate status code description comment tags postings "" |   return $ txnTieKnot $ Transaction 0 sourcepos date edate status code description comment tags postings "" | ||||||
| 
 | 
 | ||||||
| #ifdef TESTS | test_transactionp = TestCase $ do | ||||||
| test_transactionp = do |  | ||||||
|     let s `gives` t = do |     let s `gives` t = do | ||||||
|                         let p = parseWithState mempty transactionp s |                         let p = runIdentity $ parseWithState mempty transactionp s | ||||||
|                         assertBool $ isRight p |                         assertBool "Parse success" (isRight p) | ||||||
|                         let Right t2 = p |                         let Right t2 = p | ||||||
|                             -- same f = assertEqual (f t) (f t2) |                             -- same f = assertEqual (f t) (f t2) | ||||||
|                         assertEqual (tdate t) (tdate t2) |                         assertEqual "Equal date" (tdate t) (tdate t2) | ||||||
|                         assertEqual (tdate2 t) (tdate2 t2) |                         assertEqual "Equal date2" (tdate2 t) (tdate2 t2) | ||||||
|                         assertEqual (tstatus t) (tstatus t2) |                         assertEqual "Equal status" (tstatus t) (tstatus t2) | ||||||
|                         assertEqual (tcode t) (tcode t2) |                         assertEqual "Equal code" (tcode t) (tcode t2) | ||||||
|                         assertEqual (tdescription t) (tdescription t2) |                         assertEqual "Equal description" (tdescription t) (tdescription t2) | ||||||
|                         assertEqual (tcomment t) (tcomment t2) |                         assertEqual "Equal comment" (tcomment t) (tcomment t2) | ||||||
|                         assertEqual (ttags t) (ttags t2) |                         assertEqual "Equal tags" (ttags t) (ttags t2) | ||||||
|                         assertEqual (tpreceding_comment_lines t) (tpreceding_comment_lines t2) |                         assertEqual "Equal preceding comments" (tpreceding_comment_lines t) (tpreceding_comment_lines t2) | ||||||
|                         assertEqual (show $ tpostings t) (show $ tpostings t2) |                         assertEqual "Equal postings" (show $ tpostings t) (show $ tpostings t2) | ||||||
|     -- "0000/01/01\n\n" `gives` nulltransaction |     -- "0000/01/01\n\n" `gives` nulltransaction | ||||||
|     unlines [ |     T.unlines [ | ||||||
|       "2012/05/14=2012/05/15 (code) desc  ; tcomment1", |       "2012/05/14=2012/05/15 (code) desc  ; tcomment1", | ||||||
|       "    ; tcomment2", |       "    ; tcomment2", | ||||||
|       "    ; ttag1: val1", |       "    ; ttag1: val1", | ||||||
| @ -593,50 +589,45 @@ test_transactionp = do | |||||||
|         ], |         ], | ||||||
|       tpreceding_comment_lines="" |       tpreceding_comment_lines="" | ||||||
|       } |       } | ||||||
|     unlines [ |     T.unlines ["2015/1/1"] | ||||||
|       "2015/1/1", |  | ||||||
|       ] |  | ||||||
|      `gives` |      `gives` | ||||||
|      nulltransaction{ |      nulltransaction{ tdate=parsedate "2015/01/01" } | ||||||
|       tdate=parsedate "2015/01/01", |  | ||||||
|       } |  | ||||||
| 
 | 
 | ||||||
|     assertRight $ parseWithState mempty transactionp $ unlines |     assertBool "transactionp parses a well-formed transactionParse OK" $ | ||||||
|  |       isRight . runIdentity . parseWithState mempty transactionp $ T.unlines | ||||||
|       ["2007/01/28 coopportunity" |       ["2007/01/28 coopportunity" | ||||||
|       ,"    expenses:food:groceries                   $47.18" |       ,"    expenses:food:groceries                   $47.18" | ||||||
|       ,"    assets:checking                          $-47.18" |       ,"    assets:checking                          $-47.18" | ||||||
|       ,"" |       ,"" | ||||||
|       ] |       ] | ||||||
| 
 | 
 | ||||||
|     -- transactionp should not parse just a date |     assertBool "transactionp should not parse just a date" $ | ||||||
|     assertLeft $ parseWithState mempty transactionp "2009/1/1\n" |       isLeft . runIdentity $ parseWithState mempty transactionp "2009/1/1\n" | ||||||
| 
 | 
 | ||||||
|     -- transactionp should not parse just a date and description |     assertBool "transactionp should not parse just a date and description" $ | ||||||
|     assertLeft $ parseWithState mempty transactionp "2009/1/1 a\n" |       isLeft . runIdentity $ parseWithState mempty transactionp "2009/1/1 a\n" | ||||||
| 
 | 
 | ||||||
|     -- transactionp should not parse a following comment as part of the description |     let p = runIdentity $ parseWithState mempty transactionp "2009/1/1 a ;comment\n b 1\n" | ||||||
|     let p = parseWithState mempty transactionp "2009/1/1 a ;comment\n b 1\n" |     assertEqual "transactionp should not parse a following comment as part of the description" | ||||||
|     assertRight p |       (Right "a") (tdescription <$> p) | ||||||
|     assertEqual "a" (let Right p' = p in tdescription p') |  | ||||||
| 
 | 
 | ||||||
|     -- parse transaction with following whitespace line |     assertBool "transactionp parses a following whitespace line" $ | ||||||
|     assertRight $ parseWithState mempty transactionp $ unlines |       isRight . runIdentity . parseWithState mempty transactionp $ T.unlines | ||||||
|         ["2012/1/1" |         ["2012/1/1" | ||||||
|         ,"  a  1" |         ,"  a  1" | ||||||
|         ,"  b" |         ,"  b" | ||||||
|         ," " |         ," " | ||||||
|         ] |         ] | ||||||
| 
 | 
 | ||||||
|     let p = parseWithState mempty transactionp $ unlines |     let p = runIdentity . parseWithState mempty transactionp $ T.unlines | ||||||
|              ["2009/1/1 x  ; transaction comment" |              ["2009/1/1 x  ; transaction comment" | ||||||
|              ," a  1  ; posting 1 comment" |              ," a  1  ; posting 1 comment" | ||||||
|              ," ; posting 1 comment 2" |              ," ; posting 1 comment 2" | ||||||
|              ," b" |              ," b" | ||||||
|              ," ; posting 2 comment" |              ," ; posting 2 comment" | ||||||
|              ] |              ] | ||||||
|     assertRight p |     assertBool "transactionp parses parses comments anywhere" (isRight p) | ||||||
|     assertEqual 2 (let Right t = p in length $ tpostings t) |     assertEqual "Has 2 postings" 2 (let Right t = p in length $ tpostings t) | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| --- ** postings | --- ** postings | ||||||
| 
 | 
 | ||||||
| @ -680,14 +671,12 @@ postingp mTransactionYear = do | |||||||
|    , pbalanceassertion=massertion |    , pbalanceassertion=massertion | ||||||
|    } |    } | ||||||
| 
 | 
 | ||||||
| #ifdef TESTS | test_postingp = TestCase $ do | ||||||
| test_postingp = do |  | ||||||
|     let s `gives` ep = do |     let s `gives` ep = do | ||||||
|                          let parse = parseWithState mempty (postingp Nothing) s |                          let parse = runIdentity $ parseWithState mempty (postingp Nothing) s | ||||||
|                          assertBool -- "postingp parser" |                          assertBool "Example is parsed well" $ isRight parse | ||||||
|                            $ isRight parse |  | ||||||
|                          let Right ap = parse |                          let Right ap = parse | ||||||
|                              same f = assertEqual (f ep) (f ap) |                              same f = assertEqual "Posting is parsed well" (f ep) (f ap) | ||||||
|                          same pdate |                          same pdate | ||||||
|                          same pstatus |                          same pstatus | ||||||
|                          same paccount |                          same paccount | ||||||
| @ -714,30 +703,28 @@ test_postingp = do | |||||||
|                         ,ptags=[("a","a"), ("date","2012/11/28"), ("date2","2012/11/29"), ("b","b")] |                         ,ptags=[("a","a"), ("date","2012/11/28"), ("date2","2012/11/29"), ("b","b")] | ||||||
|                         ,pdate=parsedateM "2012/11/28"} |                         ,pdate=parsedateM "2012/11/28"} | ||||||
| 
 | 
 | ||||||
|     assertBool -- "postingp parses a quoted commodity with numbers" |     assertBool "postingp parses a quoted commodity with numbers" | ||||||
|       (isRight $ parseWithState mempty (postingp Nothing) "  a  1 \"DE123\"\n") |       (isRight . runIdentity $ parseWithState mempty (postingp Nothing) "  a  1 \"DE123\"\n") | ||||||
| 
 | 
 | ||||||
|   -- ,"postingp parses balance assertions and fixed lot prices" ~: do |     assertBool "postingp parses balance assertions and fixed lot prices" | ||||||
|     assertBool (isRight $ parseWithState mempty (postingp Nothing) "  a  1 \"DE123\" =$1 { =2.2 EUR} \n") |       (isRight . runIdentity $ parseWithState mempty (postingp Nothing) "  a  1 \"DE123\" =$1 { =2.2 EUR} \n") | ||||||
| 
 | 
 | ||||||
|     -- let parse = parseWithState mempty postingp " a\n ;next-line comment\n" |     -- let parse = parseWithState mempty postingp " a\n ;next-line comment\n" | ||||||
|     -- assertRight parse |     -- assertRight parse | ||||||
|     -- let Right p = parse |     -- let Right p = parse | ||||||
|     -- assertEqual "next-line comment\n" (pcomment p) |     -- assertEqual "next-line comment\n" (pcomment p) | ||||||
|     -- assertEqual (Just nullmixedamt) (pbalanceassertion p) |     -- assertEqual (Just nullmixedamt) (pbalanceassertion p) | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| --- * more tests | --- * more tests | ||||||
| 
 | 
 | ||||||
| tests_Hledger_Read_JournalReader = TestList $ concat [ | tests_Hledger_Read_JournalReader = TestList [ | ||||||
|     -- test_numberp |     test_transactionp, | ||||||
|     [ |     test_postingp, | ||||||
|     "showParsedMarketPrice" ~: do |     "showParsedMarketPrice" ~: do | ||||||
|       let mp = parseWithState mempty marketpricedirectivep "P 2017/01/30 BTC $922.83\n" |       let mp = parseWithState mempty marketpricedirectivep "P 2017/01/30 BTC $922.83\n" | ||||||
|           mpString = (fmap . fmap) showMarketPrice mp |           mpString = (fmap . fmap) showMarketPrice mp | ||||||
|       mpString `is` (Just (Right "P 2017/01/30 BTC $922.83")) |       mpString `is` (Just (Right "P 2017/01/30 BTC $922.83")) | ||||||
|     ] |     ] | ||||||
|  ] |  | ||||||
| 
 | 
 | ||||||
| {- old hunit tests | {- old hunit tests | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -21,10 +21,6 @@ import Data.Text (Text, pack) | |||||||
| import Data.Text.Encoding (encodeUtf8) | import Data.Text.Encoding (encodeUtf8) | ||||||
| -- import Safe | -- import Safe | ||||||
| import Test.HUnit | import Test.HUnit | ||||||
| -- #ifdef TESTS |  | ||||||
| -- import Test.Framework |  | ||||||
| -- import Text.Megaparsec.Error |  | ||||||
| -- #endif |  | ||||||
| import Text.Megaparsec (eof) | import Text.Megaparsec (eof) | ||||||
| -- import Text.Printf | -- import Text.Printf | ||||||
| import System.Time | import System.Time | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user