module Main (main) where import qualified Data.ByteString as B import qualified Data.ByteString.Builder as BB import qualified Data.ByteString.Lazy as LB import qualified Data.ByteString.Short as SB import qualified Data.Text as T import qualified Data.Text.Lazy as LT import qualified Data.Text.Lazy.Builder as TB import From.String import System.Exit cB :: B.ByteString cB = B.pack [0xec, 0x95, 0x88, 0xeb, 0x85, 0x95] {-# NOINLINE cB #-} cLB :: LB.ByteString cLB = LB.pack [0xec, 0x95, 0x88, 0xeb, 0x85, 0x95] {-# NOINLINE cLB #-} cBB :: BB.Builder cBB = BB.byteString cB {-# NOINLINE cBB #-} cSB :: SB.ShortByteString cSB = SB.pack [0xec, 0x95, 0x88, 0xeb, 0x85, 0x95] {-# NOINLINE cSB #-} cT :: T.Text cT = T.pack "\50504\45397" {-# NOINLINE cT #-} cLT :: LT.Text cLT = LT.pack "\50504\45397" {-# NOINLINE cLT #-} cTB :: TB.Builder cTB = TB.fromString "\50504\45397" {-# NOINLINE cTB #-} assertEq :: (Eq term) => String -> term -> term -> IO () assertEq comment leftTerm rightTerm | leftTerm == rightTerm = report | otherwise = report >> exitFailure where report = putStrLn comment -- TODO: More test cases -- NOTE: Data.ByteString.Builder.Builder does not have Eq main :: IO () main = do assertEq " cB == from cLB" cB (from cLB) assertEq " cB == from cBB" cB (from cBB) assertEq " cB == from cSB" cB (from cSB) assertEq " cB == from cT" cB (from cT) assertEq " cB == from cLT" cB (from cLT) assertEq " cB == from cTB" cB (from cTB) assertEq "cLB == from cB" cLB (from cB) assertEq "cLB == from cBB" cLB (from cBB) assertEq "cLB == from cSB" cLB (from cSB) assertEq "cLB == from cT" cLB (from cT) assertEq "cLB == from cLT" cLB (from cLT) assertEq "cLB == from cTB" cLB (from cTB) assertEq "cSB == from cB" cSB (from cB) assertEq "cSB == from cLB" cSB (from cLB) assertEq "cSB == from cBB" cSB (from cBB) assertEq "cSB == from cT" cSB (from cT) assertEq "cSB == from cLT" cSB (from cLT) assertEq "cSB == from cTB" cSB (from cTB) assertEq " cT == from cB" cT (from cB) assertEq " cT == from cLB" cT (from cLB) assertEq " cT == from cBB" cT (from cBB) assertEq " cT == from cSB" cT (from cSB) assertEq " cT == from cLT" cT (from cLT) assertEq " cT == from cTB" cT (from cTB) assertEq "cLT == from cB" cLT (from cB) assertEq "cLT == from cLB" cLT (from cLB) assertEq "cLT == from cBB" cLT (from cBB) assertEq "cLT == from cSB" cLT (from cSB) assertEq "cLT == from cT" cLT (from cT) assertEq "cLT == from cTB" cLT (from cTB) assertEq "cTB == from cB" cTB (from cB) assertEq "cTB == from cLB" cTB (from cLB) assertEq "cTB == from cBB" cTB (from cBB) assertEq "cTB == from cSB" cTB (from cSB) assertEq "cTB == from cT" cTB (from cT) assertEq "cTB == from cLT" cTB (from cLT) exitSuccess