{-# LANGUAGE MagicHash, OverloadedStrings, TemplateHaskell #-}
module BufferTest (tests, main) where
import qualified Data.ByteString.Char8 as BSC
import Test.Tasty
import Test.Tasty.TH
import Test.Tasty.QuickCheck
import Test.Tasty.HUnit
import Data.BufferBuilder
case_append_bytes :: Assertion
case_append_bytes = do
let result = runBufferBuilder $ do
appendChar8 'f'
appendChar8 'o'
appendChar8 'o'
assertEqual "matches" "foo" result
case_append_string :: Assertion
case_append_string = do
let result = runBufferBuilder $ do
appendChar8 'f'
appendChar8 'o'
appendChar8 'o'
appendBS "bar"
assertEqual "matches" "foobar" result
case_append_literals :: Assertion
case_append_literals = do
let result = runBufferBuilder $ do
appendLiteral "foo"#
appendLiteral "bar"#
assertEqual "matches" "foobar" result
case_append_url_encoded_safe :: Assertion
case_append_url_encoded_safe = do
let safe = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_"
let result = runBufferBuilder $ do
appendUrlEncoded safe
assertEqual "matches" safe result
case_append_url_encoded_unsafe :: Assertion
case_append_url_encoded_unsafe = do
let safe = "\0\1 /\\$%"
let result = runBufferBuilder $ do
appendUrlEncoded safe
assertEqual "matches" "%00%01%20%2f%5c%24%25" result
prop_match_intDec :: Int -> Bool
prop_match_intDec i = runBufferBuilder (appendDecimalSignedInt i) == (BSC.pack $ show i)
tests :: TestTree
tests = $(testGroupGenerator)
main :: IO ()
main = defaultMain tests