module Main where
import qualified Data.ByteString.Char8 as B
import Data.Map ((!))
import System.Directory
import Test.Framework (defaultMain, testGroup)
import Test.Framework.Providers.HUnit
import Test.Framework.Providers.QuickCheck2 (testProperty)
import Test.QuickCheck
import Test.HUnit
import Data.CSV.Enumerator
main = defaultMain tests
tests = [ testGroup "Basic Ops" baseTests ]
baseTests = [
testCase "mapping with id works" test_identityMap
, testCase "simple parsing works" test_simpleParse
]
test_identityMap = do
Right r <- mapCSVFile "test.csv" csvSettings f "testOut.csv"
3 @=? r
f1 <- readFile "test.csv"
f2 <- readFile "testOut.csv"
f1 @=? f2
removeFile "testOut.csv"
where
f :: MapRow -> [MapRow]
f = return
test_simpleParse = do
Right (d :: [MapRow]) <- readCSVFile csvSettings "test.csv"
mapM_ assertRow d
where
assertRow r = v3 @=? (v1 + v2)
where v1 = readBS $ r ! "Col2"
v2 = readBS $ r ! "Col3"
v3 = readBS $ r ! "Sum"
csvSettings =
defCSVSettings { csvQuoteChar = Just '`'
, csvOutputQuoteChar = Just '`' }
readBS = read . B.unpack