import Paths_utf8_prelude
import Data.Maybe
import qualified Prelude
import UTF8Prelude
----------------------
writeFile_test :: String
writeFile_test = "writeFile_test.txt"
main :: IO ()
main = do
do
s <- do
readFile_test <- getDataFileName "readFile_test.txt"
s <- readFile readFile_test
let errors = catMaybes $ map checkLine $ lines s
assert (null errors) "readFile" $ head errors
return s
do
writeFile writeFile_test s
s' <- readFile writeFile_test
let diffs = filter (\(a,b) -> a /= b) $ zip s s'
assert (null diffs) "writeFile" $ "First 10 different charcodes: " ++ show (take 10 diffs)
do
putStrLn "Basic putStrLn test:"
putStrLn_test <- getDataFileName "putStrLn_test.txt"
s <- readFile putStrLn_test
mapM_ putStrLn $ map (" " ++) $ lines s
checkLine :: String -> Maybe String
checkLine s = case reads s of
[(i, [' ',c])]
| i == fromEnum c -> Nothing
[(i, ' ':cs)]
| otherwise -> Just $ "\"\\" ++ show i ++ "\" /= \"" ++ cs ++ "\""
_ -> Just $ "Fatal error: Invalid line in testfile: " ++ s
assert :: Bool -> String -> String -> IO ()
assert True t _ = putStrLn $ t ++ " test OK."
assert False t s = error $ t ++ " test failed! " ++ s
make_readFile_test :: IO ()
make_readFile_test = writeFile "readFile_test.txt" $ unlines [show i ++ " " ++ [toEnum i] | i<-[33,132..55000]]
-- it fails with [33,132..65535]!