hledger-flow-0.12.3.0: test/Common/Unit.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE OverloadedLists #-}
module Common.Unit where
import Test.HUnit
import Turtle
import Prelude hiding (FilePath)
import Hledger.Flow.Common
import Data.Either
import qualified Data.Text as T
testShowCmdArgs :: Test
testShowCmdArgs = TestCase (
do
let opts = ["--number", "/tmp/file with spaces"]
let expected = "--number '/tmp/file with spaces'"
let actual = showCmdArgs opts
assertEqual "Convert command-line arguments to text" expected actual)
testIncludeYears :: Test
testIncludeYears = TestCase (
do
let txterr = "Some text without years"
let expectederr = ["Unable to extract years from the following text:", txterr, "Errors:"]
let actualerr = (init . head) $ map (T.lines) $ lefts [includeYears' txterr] :: [Text]
assertEqual "Get a list of years from an include file - error case" expectederr actualerr
let txt1 = "### Generated by hledger-flow - DO NOT EDIT ###\n\n" <>
"!include import/2014-include.journal\n" <>
"!include import/2015-include.journal\n" <>
"!include import/2016-include.journal\n" <>
"!include import/2017-include.journal\n" <>
"!include import/2018-include.journal\n" <>
"!include import/2019-include.journal"
let expected1 = Right [2014..2019]
let actual1 = includeYears' txt1
assertEqual "Get a list of years from an include file - success case 1" expected1 actual1
let txt2 = "!include 2019-include.journal"
let expected2 = Right [2019]
let actual2 = includeYears' txt2
assertEqual "Get a list of years from an include file - success case 2" expected2 actual2
)
testExtractDigits :: Test
testExtractDigits = TestCase (
do
let txt1 = "A number: 321\nAnother number is 42, so is 0"
let expected1 = Right 321420
let actual1 = extractDigits txt1
assertEqual "Extract digits from text 1" expected1 actual1
let txt2 = "No numbers in this line"
let expected2 = Left "input does not start with a digit"
let actual2 = extractDigits txt2
assertEqual "Extract digits from text 2" expected2 actual2
)
tests :: Test
tests = TestList [testShowCmdArgs, testIncludeYears, testExtractDigits]