diff options
Diffstat (limited to 'testsuite/tests/lib/IO/hSetEncoding001.hs')
-rw-r--r-- | testsuite/tests/lib/IO/hSetEncoding001.hs | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/testsuite/tests/lib/IO/hSetEncoding001.hs b/testsuite/tests/lib/IO/hSetEncoding001.hs new file mode 100644 index 0000000000..95f570d094 --- /dev/null +++ b/testsuite/tests/lib/IO/hSetEncoding001.hs @@ -0,0 +1,49 @@ +import System.IO +import GHC.IO.Handle +import GHC.IO.Encoding +import System.Environment + +-- Test switching encodings +-- The test file is built by the Makefile + +main = do + [file] <- getArgs + test file NoBuffering + test file (BlockBuffering Nothing) + test file (BlockBuffering (Just 5)) + +test file buf = do + hSetEncoding stdout utf8 + h <- openBinaryFile file ReadMode + hSetBuffering stdout buf + putStrLn "no encoding:" + getUntilX h + hSetEncoding h utf8 + putStrLn "UTF8:" + getUntilX h + hSetEncoding h utf16le + putStrLn "UTF16LE:" + getUntilX h + hSetEncoding h utf16be + putStrLn "UTF16BE:" + getUntilX h + hSetEncoding h utf16 + putStrLn "UTF16:" + getUntilX h + hSetEncoding h utf32 + putStrLn "UTF32:" + getUntilX h + hSetEncoding h utf32le + putStrLn "UTF32LE:" + getUntilX h + hSetEncoding h utf32be + putStrLn "UTF32BE:" + getUntilX h + hSetEncoding h utf8_bom + putStrLn "UTF8-BOM:" + getUntilX h + hIsEOF h >>= print + +getUntilX h = do + c <- hGetChar h + if c == 'X' then return () else do putChar c; getUntilX h |