{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE OverloadedStrings #-} import Data.Map as M import Control.Monad import Test.Tasty import Test.Tasty.HUnit import qualified Data.Vector as V import qualified Data.ByteString.Lazy as BLZ import Language.Haskell.TH import Data.Text as DT import Data.Cassava.Records import Data.Cassava.Internal.RecordBuilder -- expectedRecord record_name name_type = RecC (record_name') fields -- expectedDeriv = [DerivClause Nothing [ConT ''Show, ConT ''Generic, ConT ''Data]] -- expectedData record_name name_type = -- DataD [] record_name [] Nothing expectedRecord name_type testSimple = testCase "testSimpleInput" ( do let expected_types = V.fromList [ ("emp_no", ConT ''Integer), ("name", ConT ''DT.Text), ("salary", ConT ''Double), ("status", ConT ''Bool), ("years", ConT ''Double)] let record_name = "TestSimpleR" let expected = makeRecord record_name $ makeFields expected_types "_" let qdec = makeCsvRecord record_name "test/data/salaries_simple.csv" "_" commaOptions dec <- runQ qdec expected_dec <- (runQ expected) assertEqual "Test Simple" (Prelude.head dec) (Prelude.head expected_dec) ) testMixedInput = testCase "testMixedInput" ( do let expected_types = V.fromList [ ("emp_no", ConT ''Integer), ("name", maybeType ''DT.Text), ("salary", maybeType ''Double), ("status", maybeType ''Bool), ("years", maybeType ''Double)] let record_name = "TestMixedR" let expected = makeRecord record_name $ makeFields expected_types "_" let qdec = makeCsvRecord record_name "test/data/salaries_mixed_input.csv" "_" commaOptions dec <- runQ qdec expected_dec <- (runQ expected) assertEqual "Test Maybe Columns" (Prelude.head dec) (Prelude.head expected_dec) ) tests :: TestTree tests = testGroup "Tests" [ testSimple, testMixedInput ] main = defaultMain tests