parsec-numeric-0.1.0.0: test/Test/Text/ParserCombinators/Parsec/Numeric.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE FlexibleContexts #-}
module Test.Text.ParserCombinators.Parsec.Numeric
( tests
) where
import Data.Functor.Identity
import Text.Parsec
import Test.Tasty
import Test.Tasty.HUnit
import Test.Tasty.QuickCheck
import Test.Tasty.TH
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as LBS
import qualified Data.Text as T
import qualified Data.Text.Lazy as LT
import Text.ParserCombinators.Parsec.Numeric
tests :: TestTree
tests = $(testGroupGenerator)
parseFromStreamTest :: (Integral r, Stream s Identity Char) => s -> r -> Assertion
parseFromStreamTest source required =
case parse nat "" source of
Left err -> error (show err)
Right v -> if v == required
then return ()
else error "Test from source type was not correct value."
case_parseFromByteString :: Assertion
case_parseFromByteString = parseFromStreamTest ("23"::BS.ByteString) (23::Word)
case_parseFromByteStringLazy :: Assertion
case_parseFromByteStringLazy = parseFromStreamTest ("23"::LBS.ByteString) (23::Word)
case_parseFromText :: Assertion
case_parseFromText = parseFromStreamTest ("23"::T.Text) (23::Word)
case_parseFromTextLazy :: Assertion
case_parseFromTextLazy = parseFromStreamTest ("23"::LT.Text) (23::Word)
case_parseFromString :: Assertion
case_parseFromString = parseFromStreamTest ("23"::String) (23::Word)