hw-dsv-0.3.0: test/HaskellWorks/Data/DsvSpec.hs
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
module HaskellWorks.Data.DsvSpec (spec) where
import HaskellWorks.Data.Bits.BitShow
import HaskellWorks.Data.Dsv.Internal.Char (comma)
import HaskellWorks.Data.FromByteString
import HaskellWorks.Hspec.Hedgehog
import Hedgehog
import Test.Hspec
import qualified HaskellWorks.Data.Dsv.Strict.Cursor.Internal.Reference as SVS
{-# ANN module ("HLint: ignore Redundant do" :: String) #-}
{-# ANN module ("HLint: ignore Reduce duplication" :: String) #-}
{-# ANN module ("HLint: redundant bracket" :: String) #-}
spec :: Spec
spec = describe "HaskellWorks.Data.DsvSpec" $ do
it "Parsing Basic DSV" $ requireTest $ do
let bs = "12345678,12345678,123456,abcdefghijklmnopqrstuvwxyz\n\
\12345678,12345678,123456,abcdefghijklmnopqrstuvwxyz\n\
\12345678,12345678,123456,abcdefghijklmnopqrstuvwxyz\n\
\12345678,12345678,123456,abcdefghijklmnopqrstuvwxyz"
let v = fromByteString bs
let actual = SVS.mkIbVector comma v
bitShow actual === "00000000 10000000 01000000 10000000 00000000 00000000 00010000 00001000 \
\00000100 00001000 00000000 00000000 00000001 00000000 10000000 01000000 \
\10000000 00000000 00000000 00010000 00001000 00000100 00001000 00000000 \
\00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000"
it "Parsing Quoted DSV" $ requireTest $ do
let bs = "12345678,12345678,123456,\"bcdefghijklmnopqrstuvwxy\"\n\
\12345678,12345678,123456,\"bcdefghijklmnopqrstuvwxy\"\n\
\12345678,12345678,123456,\"bcdefghijklmnopqrstuvwxy\"\n\
\12345678,12345678,123456,\"bcdefghijklmnopqrstuvwxy\""
let v = fromByteString bs
let !actual = SVS.mkIbVector comma v
bitShow actual === "00000000 10000000 01000000 10000000 00000000 00000000 00010000 00001000 \
\00000100 00001000 00000000 00000000 00000001 00000000 10000000 01000000 \
\10000000 00000000 00000000 00010000 00001000 00000100 00001000 00000000 \
\00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000"
it "Parsing Quoted DSV" $ requireTest $ do
let bs = "12345678,12345678,123456,\"bcdefghijklm,opqrstuvwxy\"\n\
\12345678,12345678,123456,\"bcdefghijklm,opqrstuvwxy\"\n\
\12345678,12345678,123456,\"bcdefghijklm,opqrstuvwxy\"\n\
\12345678,12345678,123456,\"bcdefghijklm,opqrstuvwxy\""
let v = fromByteString bs
let !actual = SVS.mkIbVector comma v
bitShow actual === "00000000 10000000 01000000 10000000 00000000 00000000 00010000 00001000 \
\00000100 00001000 00000000 00000000 00000001 00000000 10000000 01000000 \
\10000000 00000000 00000000 00010000 00001000 00000100 00001000 00000000 \
\00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000"