{-# OPTIONS_GHC -Wall #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TemplateHaskell #-}
module CodePage (codepageTestGroup) where
import qualified Data.ByteString.Lazy.Encoding as Enc
import qualified Data.ByteString.Lazy.Encoding.Internal as Enc
import qualified Data.ByteString.Lazy as BL
import qualified Test.QuickCheck.Monadic as QM
import Test.Tasty
import Test.Tasty.HUnit
import Test.Tasty.QuickCheck
prop_encode_decode_cp932 :: Property
prop_encode_decode_cp932 = QM.monadicIO $ do
enc <- QM.run $ Enc.mkTextEncoding "CP932"
inBufSizeE <- QM.pick $ choose (2,16)
outBufSizeE <- QM.pick $ choose (2,16)
inBufSizeD <- QM.pick $ choose (2,16)
outBufSizeD <- QM.pick $ choose (2,16)
let s = "\12371\12435\12395\12385\12399ABC\19990\30028\65402\65437\65414\65409\65436\n" -- "こんにちはABC世界コンニチワ\n"
QM.assert $ Enc.decodeWith enc inBufSizeD outBufSizeD (Enc.encodeWith enc inBufSizeE outBufSizeE s) == s
codepageTestGroup :: TestTree
codepageTestGroup =
testGroup "CodePage"
[ testProperty "encode decode cp932" prop_encode_decode_cp932
]