diff options
Diffstat (limited to 'testsuite/tests/lib/should_run/cstring001.hs')
-rw-r--r-- | testsuite/tests/lib/should_run/cstring001.hs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/testsuite/tests/lib/should_run/cstring001.hs b/testsuite/tests/lib/should_run/cstring001.hs new file mode 100644 index 0000000000..38d0d25db2 --- /dev/null +++ b/testsuite/tests/lib/should_run/cstring001.hs @@ -0,0 +1,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 |