e75e5b8c647155fdf10c822d1d7183b36eeec2d0
[ghc-hetmet.git] / ghc / tests / lib / IO / openFile005.hs
1 -- !!! test multiple-reader single-writer locking semantics
2
3 import IO
4
5 file1 = "openFile005.out1"
6 file2 = "openFile005.out2"
7
8 main = do
9   putStrLn "two writes (should fail)"
10   h <- openFile file1 WriteMode
11   try (openFile file1 WriteMode) >>= print
12   hClose h
13
14   putStrLn "write and an append (should fail)"
15   h <- openFile file1 WriteMode
16   try (openFile file1 AppendMode) >>= print
17   hClose h
18
19   putStrLn "read/write and a write (should fail)"
20   h <- openFile file1 ReadWriteMode
21   try (openFile file1 WriteMode) >>= print
22   hClose h
23
24   putStrLn "read and a read/write (should fail)"
25   h <- openFile file1 ReadMode
26   try (openFile file1 ReadWriteMode) >>= print
27   hClose h
28
29   putStrLn "write and a read (should fail)"
30   h <- openFile file1 WriteMode
31   try (openFile file1 ReadMode) >>= print
32   hClose h
33
34   putStrLn "two writes, different files (silly, but should succeed)"
35   h1 <- openFile file1 WriteMode
36   h2 <- openFile file2 WriteMode
37   hClose h1
38   hClose h2
39
40   putStrLn "two reads, should succeed"
41   h1 <- openFile file1 ReadMode
42   h2 <- openFile file1 ReadMode
43   hClose h1
44   hClose h2