Skip to content

Commit

Permalink
add a test case for CodePage encodings
Browse files Browse the repository at this point in the history
  • Loading branch information
msakai committed Aug 15, 2018
1 parent cab2f8a commit e5ef07d
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 1 deletion.
30 changes: 30 additions & 0 deletions test/CodePage.hs
@@ -0,0 +1,30 @@
{-# OPTIONS_GHC -Wall #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TemplateHaskell #-}
module CodePage (codepageTestGroup) where

import qualified Data.ByteString.Encoding as Enc
import qualified Data.ByteString.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
]
3 changes: 2 additions & 1 deletion test/Main.hs
Expand Up @@ -5,10 +5,11 @@ import qualified System.Info
import Test.Tasty

import Base
import CodePage
import Iconv

main :: IO ()
main = defaultMain $ testGroup "bytestring-encoding" $
[ baseTestGroup ] ++
[ baseTestGroup, codepageTestGroup ] ++
[ iconvTestGroup | System.Info.os /= "mingw32" ]

0 comments on commit e5ef07d

Please sign in to comment.