[project @ 1998-12-02 13:17:09 by simonm]
[ghc-hetmet.git] / ghc / interpreter / test / runtime / r001.hs
1 --!!! Testing Enum
2
3 module TestEnum where
4
5 -- test for derived instances
6
7 data T = C1 | C2 | C3 | C4 | C5 | C6 | C7 deriving (Eq, Ord, Enum, Show)
8
9 test1 = show $ [C1 .. ]
10 test2 = show $ [C1 .. C4]
11 test3 = show $ [C1, C3 ..]
12 test4 = show $ [C1, C3 .. C6]
13 test5 = show $ [C7, C5 .. ]
14 test6 = show $ [C7, C5 .. C2]
15 test7 = show $ map fromEnum [C1 .. ]
16 test8 = show (map toEnum [0..6]  :: [T])
17
18 test9  = show (toEnum (-1) :: T)  -- should fail
19 test10 = show (toEnum 7    :: T)  -- should fail
20
21 test11 = show $ take 7 (iterate succ C1)
22 test12 = show $ take 7 (iterate pred C7)
23
24 test13 = show $ succ C7 -- should fail
25 test14 = show $ pred C1 -- should fail
26
27 -- test for built in Enum instances
28
29 test20 = show $ ['a' ..]
30 test21 = show $ ['a' ..'z']
31 test22 = show $ ['a', 'd' ..]
32 test23 = show $ ['a', 'd' .. 'z']
33 test24 = show $ ['z','y'..'a']
34 test25 = show $ map fromEnum ['a' ..]
35 test26 = show $ map fromEnum ['a', 'd' ..]
36 test27 = show $ map fromEnum ['a'..'z']
37 test28 = show (map toEnum [fromEnum 'a'..fromEnum 'z'] :: [Char])
38
39 test30 = show (take 50 $ [1..]::[Int])
40 test31 = show ([1..10]::[Int])
41 test32 = show (take 50 $ [1, 3 ..]::[Int])
42 test33 = show ([1, 3 .. 10]::[Int])
43 test34 = show ([10,9..1]::[Int])
44 test35 = show (map fromEnum [1..10]::[Int])
45 test36 = show (map toEnum [fromEnum 1..fromEnum 10]::[Int])
46
47
48 test40 = show (take 50 $ [1..]::[Integer])
49 test41 = show ([1..10]::[Integer])
50 test42 = show (take 50 $ [1, 3 ..]::[Integer])
51 test43 = show ([1, 3 .. 10]::[Integer])
52 test44 = show ([10,9..1]::[Integer])
53 test45 = show (map fromEnum [1..10]::[Int])
54 test46 = show (map toEnum [fromEnum 1..fromEnum 10]::[Integer])
55
56 -- All these tests use integers because roundoff errors have
57 -- such bizarre effects on the printed number.
58 test50 = show (take 50 $ [1..]::[Float])
59 test51 = show ([1..10]::[Float])
60 test52 = show (take 50 $ [1, 2 ..]::[Float])
61 test53 = show ([1, 2 .. 20]::[Float])
62 test54 = show ([20,19..10]::[Float])
63 test55 = show (map fromEnum ([1..10]::[Float]))
64 test56 = show (map toEnum [fromEnum 1..fromEnum 10]::[Float])
65
66
67 test60 = show (take 50 $ [1..]::[Double])
68 test61 = show ([1..10]::[Double])
69 test62 = show (take 50 $ [1, 2 ..]::[Double])
70 test63 = show ([1, 2 .. 20]::[Double])
71 test64 = show ([20,19..10]::[Double])
72 test65 = show (map fromEnum ([1..10]::[Double]))
73 test66 = show (map toEnum [fromEnum 1..fromEnum 10]::[Double])
74
75
76