7
import Control.Concurrent
9
import Control.OldException
12
import Control.Monad.State
15
#if !defined(mingw32_HOST_OS)
22
readPacket :: StateT SState IO [String]
29
if not $ null l then hGetPacket h (buf ++ [l]) else return buf
31
waitPacket :: String -> StateT SState IO Bool
36
sendPacket :: [String] -> StateT SState IO ()
44
emulateSession :: StateT SState IO ()
46
n <- io $ randomRIO (100000::Int, 100100)
47
waitPacket "CONNECTED"
48
sendPacket ["NICK", "test" ++ show n]
50
sendPacket ["PROTO", "31"]
52
b <- waitPacket "LOBBY:JOINED"
54
sendPacket ["QUIT", "BYE"]
57
testing = Control.OldException.handle print $ do
59
sock <- connectTo "127.0.0.1" (PortNumber 46631)
60
evalStateT emulateSession sock
66
delay <- randomRIO (0::Int, 80000)
70
main = withSocketsDo $ do
71
#if !defined(mingw32_HOST_OS)
72
installHandler sigPIPE Ignore Nothing;