summaryrefslogtreecommitdiff
path: root/testsuite/tests/ghc-regress/lib/should_run/cstring001.hs
blob: 38d0d25db26e63f94d2678c5d2482c37d13b4547 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import Control.Monad
import Foreign.C.String

test_strings = ["Hello World", replicate 10000 'a']

assertEqual :: (Eq a, Show a) => a -> a -> IO ()
assertEqual x y = if x == y then return () else error $ "assertEqual: " ++ show x ++ " /= " ++ show y

main = do
    -- Try roundtripping some ASCII strings through the locale encoding
    forM test_strings $ \try_str -> do
        got_str <- withCString try_str peekCString
        got_str `assertEqual` try_str

    -- Try roundtripping some ASCII strings with lengths through the locale encoding
    forM test_strings $ \try_str -> do
        got_str <- withCStringLen try_str peekCStringLen
        got_str `assertEqual` try_str