[project @ 2001-08-22 12:24:41 by simonmar]
[ghc-hetmet.git] / ghc / tests / lib / should_run / enum03.hs
diff --git a/ghc/tests/lib/should_run/enum03.hs b/ghc/tests/lib/should_run/enum03.hs
deleted file mode 100644 (file)
index 0821326..0000000
+++ /dev/null
@@ -1,263 +0,0 @@
--- !!! Testing the Word Enum instances.
-module Main(main) where
-
-import Exception
-import Word
-
-main = do
-  putStrLn "Testing Enum Word8:"
-  testEnumWord8
-  putStrLn "Testing Enum Word16:"
-  testEnumWord16
-  putStrLn "Testing Enum Word32:"
-  testEnumWord32
-  putStrLn "Testing Enum Word64:"
-  testEnumWord64
-
-
-#define printTest(x) (do{ putStr ( "    " ++ "x" ++ " = " ) ; print (x) })
-
-testEnumWord8 :: IO ()
-testEnumWord8 = do
-     -- succ
-  printTest ((succ (0::Word8)))
-  printTest ((succ (minBound::Word8)))
-  mayBomb   (printTest ((succ (maxBound::Word8))))
-
-     -- pred
-  printTest (pred (1::Word8))
-  printTest (pred (maxBound::Word8))
-  mayBomb   (printTest (pred (minBound::Word8))) 
-
-     -- toEnum
-  printTest ((map (toEnum::Int->Word8) [1, fromIntegral (minBound::Word8)::Int, fromIntegral (maxBound::Word8)::Int]))
-  mayBomb   (printTest ((toEnum (maxBound::Int))::Word8))
-
-     -- fromEnum
-  printTest ((map fromEnum [(1::Word8),minBound,maxBound]))
-
-     -- [x..] aka enumFrom
-  printTest ((take 7 [(1::Word8)..]))
-  printTest ((take 7 [((maxBound::Word8)-5)..])) -- just in case it doesn't catch the upper bound..
-
-     -- [x,y..] aka enumFromThen
-  printTest ((take 7 [(1::Word8),2..]))
-  printTest ((take 7 [(1::Word8),7..]))
-  printTest ((take 7 [(1::Word8),1..]))
-  printTest ((take 7 [(1::Word8),0..]))
-  printTest ((take 7 [(5::Word8),2..]))
-  let x = (minBound::Word8) + 1
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (minBound::Word8) + 5
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (maxBound::Word8) - 5
-  printTest ((take 7 [x, (x+1) ..]))
-
-     -- [x..y] aka enumFromTo
-  printTest ((take 7 ([(1::Word8) .. 5])))
-  printTest ((take 4 ([(1::Word8) .. 1])))
-  printTest ((take 7 ([(1::Word8) .. 0])))
-  printTest ((take 7 ([(5::Word8) .. 0])))
-  printTest ((take 7 ([(maxBound-(5::Word8)) .. maxBound])))
-  printTest ((take 7 ([(minBound+(5::Word8)) .. minBound])))
-
-     -- [x,y..z] aka enumFromThenTo
-  printTest ((take 7 [(5::Word8),4..1]))
-  printTest ((take 7 [(5::Word8),3..1]))
-  printTest ((take 7 [(5::Word8),3..2]))
-  printTest ((take 7 [(1::Word8),2..1]))
-  printTest ((take 7 [(2::Word8),1..2]))
-  printTest ((take 7 [(2::Word8),1..1]))
-  printTest ((take 7 [(2::Word8),3..1]))
-
-  let x = (maxBound::Word8) - 4
-  printTest ((take 7 [x,(x+1)..maxBound]))
-  let x = (minBound::Word8) + 5
-  printTest ((take 7 [x,(x-1)..minBound]))
-
-testEnumWord16 :: IO ()
-testEnumWord16 = do
-     -- succ
-  printTest ((succ (0::Word16)))
-  printTest ((succ (minBound::Word16)))
-  mayBomb   (printTest ((succ (maxBound::Word16))))
-
-     -- pred
-  printTest (pred (1::Word16))
-  printTest (pred (maxBound::Word16))
-  mayBomb   (printTest (pred (minBound::Word16))) 
-
-     -- toEnum
-  printTest ((map (toEnum::Int->Word16) [1, fromIntegral (minBound::Word16)::Int, fromIntegral (maxBound::Word16)::Int]))
-  mayBomb   (printTest ((toEnum (maxBound::Int))::Word16))
-
-
-     -- fromEnum
-  printTest ((map fromEnum [(1::Word16),minBound,maxBound]))
-
-     -- [x..] aka enumFrom
-  printTest ((take 7 [(1::Word16)..]))
-  printTest ((take 7 [((maxBound::Word16)-5)..])) -- just in case it doesn't catch the upper bound..
-  
-     -- [x,y..] aka enumFromThen
-  printTest ((take 7 [(1::Word16),2..]))
-  printTest ((take 7 [(1::Word16),7..]))
-  printTest ((take 7 [(1::Word16),1..]))
-  printTest ((take 7 [(1::Word16),0..]))
-  printTest ((take 7 [(5::Word16),2..]))
-  let x = (minBound::Word16) + 1
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (minBound::Word16) + 5
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (maxBound::Word16) - 5
-  printTest ((take 7 [x, (x+1) ..]))
-
-     -- [x..y] aka enumFromTo
-  printTest ((take 7 ([(1::Word16) .. 5])))
-  printTest ((take 4 ([(1::Word16) .. 1])))
-  printTest ((take 7 ([(1::Word16) .. 0])))
-  printTest ((take 7 ([(5::Word16) .. 0])))
-  printTest ((take 7 ([(maxBound-(5::Word16)) .. maxBound])))
-  printTest ((take 7 ([(minBound+(5::Word16)) .. minBound])))
-
-     -- [x,y..z] aka enumFromThenTo
-  printTest ((take 7 [(5::Word16),4..1]))
-  printTest ((take 7 [(5::Word16),3..1]))
-  printTest ((take 7 [(5::Word16),3..2]))
-  printTest ((take 7 [(1::Word16),2..1]))
-  printTest ((take 7 [(2::Word16),1..2]))
-  printTest ((take 7 [(2::Word16),1..1]))
-  printTest ((take 7 [(2::Word16),3..1]))
-
-  let x = (maxBound::Word16) - 4
-  printTest ((take 7 [x,(x+1)..maxBound]))
-  let x = (minBound::Word16) + 5
-  printTest ((take 7 [x,(x-1)..minBound]))
-
-testEnumWord32 :: IO ()
-testEnumWord32 = do
-     -- succ
-  printTest ((succ (0::Word32)))
-  printTest ((succ (minBound::Word32)))
-  mayBomb   (printTest ((succ (maxBound::Word32))))
-
-     -- pred
-  printTest (pred (1::Word32))
-  printTest (pred (maxBound::Word32))
-  mayBomb   (printTest (pred (minBound::Word32))) 
-
-     -- toEnum
-  printTest ((map (toEnum::Int->Word32) [1, fromIntegral (minBound::Word32)::Int, maxBound::Int]))
-  mayBomb   (printTest ((toEnum (maxBound::Int))::Word32))
-
-     -- fromEnum
-  printTest ((map fromEnum [(1::Word32),minBound,fromIntegral (maxBound::Int)]))
-  mayBomb   (printTest (fromEnum (maxBound::Word32)))
-
-     -- [x..] aka enumFrom
-  printTest ((take 7 [(1::Word32)..]))
-  printTest ((take 7 [((maxBound::Word32)-5)..])) -- just in case it doesn't catch the upper bound..
-  
-     -- [x,y..] aka enumFromThen
-  printTest ((take 7 [(1::Word32),2..]))
-  printTest ((take 7 [(1::Word32),7..]))
-  printTest ((take 7 [(1::Word32),1..]))
-  printTest ((take 7 [(1::Word32),0..]))
-  printTest ((take 7 [(5::Word32),2..]))
-  let x = (minBound::Word32) + 1
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (minBound::Word32) + 5
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (maxBound::Word32) - 5
-  printTest ((take 7 [x, (x+1) ..]))
-
-     -- [x..y] aka enumFromTo
-  printTest ((take 7 ([(1::Word32) .. 5])))
-  printTest ((take 4 ([(1::Word32) .. 1])))
-  printTest ((take 7 ([(1::Word32) .. 0])))
-  printTest ((take 7 ([(5::Word32) .. 0])))
-  printTest ((take 7 ([(maxBound-(5::Word32)) .. maxBound])))
-  printTest ((take 7 ([(minBound+(5::Word32)) .. minBound])))
-
-     -- [x,y..z] aka enumFromThenTo
-  printTest ((take 7 [(5::Word32),4..1]))
-  printTest ((take 7 [(5::Word32),3..1]))
-  printTest ((take 7 [(5::Word32),3..2]))
-  printTest ((take 7 [(1::Word32),2..1]))
-  printTest ((take 7 [(2::Word32),1..2]))
-  printTest ((take 7 [(2::Word32),1..1]))
-  printTest ((take 7 [(2::Word32),3..1]))
-
-  let x = (maxBound::Word32) - 4
-  printTest ((take 7 [x,(x+1)..maxBound]))
-  let x = (minBound::Word32) + 5
-  printTest ((take 7 [x,(x-1)..minBound]))
-
-testEnumWord64 :: IO ()
-testEnumWord64 = do
-     -- succ
-  printTest ((succ (0::Word64)))
-  printTest ((succ (minBound::Word64)))
-  mayBomb   (printTest ((succ (maxBound::Word64))))
-
-     -- pred
-  printTest (pred (1::Word64))
-  printTest (pred (maxBound::Word64))
-  mayBomb   (printTest (pred (minBound::Word64))) 
-
-     -- toEnum
-  printTest ((map (toEnum::Int->Word64) [1, fromIntegral (minBound::Word64)::Int, maxBound::Int]))
-  mayBomb   (printTest ((toEnum (maxBound::Int))::Word64))
-
-     -- fromEnum
-  printTest ((map fromEnum [(1::Word64),minBound,fromIntegral (maxBound::Int)]))
-  mayBomb   (printTest (fromEnum (maxBound::Word64)))
-
-     -- [x..] aka enumFrom
-  printTest ((take 7 [(1::Word64)..]))
-  printTest ((take 7 [((maxBound::Word64)-5)..])) -- just in case it doesn't catch the upper bound..
-
-     -- [x,y..] aka enumFromThen
-  printTest ((take 7 [(1::Word64),2..]))
-  printTest ((take 7 [(1::Word64),7..]))
-  printTest ((take 7 [(1::Word64),1..]))
-  printTest ((take 7 [(1::Word64),0..]))
-  printTest ((take 7 [(5::Word64),2..]))
-  let x = (minBound::Word64) + 1
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (minBound::Word64) + 5
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (maxBound::Word64) - 5
-  printTest ((take 7 [x, (x+1) ..]))
-
-     -- [x..y] aka enumFromTo
-  printTest ((take 7 ([(1::Word64) .. 5])))
-  printTest ((take 4 ([(1::Word64) .. 1])))
-  printTest ((take 7 ([(1::Word64) .. 0])))
-  printTest ((take 7 ([(5::Word64) .. 0])))
-  printTest ((take 7 ([(maxBound-(5::Word64)) .. maxBound])))
-  printTest ((take 7 ([(minBound+(5::Word64)) .. minBound])))
-
-     -- [x,y..z] aka enumFromThenTo
-  printTest ((take 7 [(5::Word64),4..1]))
-  printTest ((take 7 [(5::Word64),3..1]))
-  printTest ((take 7 [(5::Word64),3..2]))
-  printTest ((take 7 [(1::Word64),2..1]))
-  printTest ((take 7 [(2::Word64),1..2]))
-  printTest ((take 7 [(2::Word64),1..1]))
-  printTest ((take 7 [(2::Word64),3..1]))
-
-  let x = (maxBound::Word64) - 4
-  printTest ((take 7 [x,(x+1)..maxBound]))
-  let x = (minBound::Word64) + 5
-  printTest ((take 7 [x,(x-1)..minBound]))
-
-
---
---
---  Utils
---
---
-
-
-mayBomb x = catchJust errorCalls x (\e -> putStrLn ("error " ++ show e))