69 lines
1.5 KiB
Ruby
69 lines
1.5 KiB
Ruby
require 'SocketServer'
|
|
require 'runit/testcase'
|
|
require "thread"
|
|
|
|
class SocketServerTestCase < RUNIT::TestCase
|
|
|
|
def test_listen
|
|
socketServer = SocketServer.new
|
|
connectQueue = Queue.new
|
|
receiveQueue = Queue.new
|
|
disconnectQueue = Queue.new
|
|
|
|
def socketServer.connectQueue=(q)
|
|
@connectQueue = q
|
|
end
|
|
def socketServer.connectQueue
|
|
return @connectQueue
|
|
end
|
|
|
|
def socketServer.receiveQueue=(q)
|
|
@receiveQueue = q
|
|
end
|
|
def socketServer.receiveQueue
|
|
return @receiveQueue
|
|
end
|
|
|
|
def socketServer.disconnectQueue=(q)
|
|
@disconnectQueue = q
|
|
end
|
|
def socketServer.disconnectQueue
|
|
return @disconnectQueue
|
|
end
|
|
|
|
def socketServer.connectAction(s)
|
|
@connectQueue.push(true)
|
|
end
|
|
|
|
def socketServer.disconnectAction(s)
|
|
@disconnectQueue.push(true)
|
|
end
|
|
|
|
def socketServer.receiveAction(s)
|
|
while( str = s.gets )
|
|
@receiveQueue.push(str)
|
|
end
|
|
end
|
|
|
|
socketServer.connectQueue = connectQueue
|
|
socketServer.receiveQueue = receiveQueue
|
|
socketServer.disconnectQueue = disconnectQueue
|
|
|
|
Thread.start do
|
|
socketServer.listen(RUNIT::TestCase.port)
|
|
end
|
|
socketServer.wait
|
|
|
|
s = TCPSocket.open("localhost", RUNIT::TestCase.port)
|
|
assert(connectQueue.pop)
|
|
s.write("test\r\n")
|
|
s.write("test2\r\n")
|
|
assert_equals("test\r\n", receiveQueue.pop)
|
|
assert_equals("test2\r\n", receiveQueue.pop)
|
|
s.close
|
|
assert(disconnectQueue.pop)
|
|
socketServer.stop()
|
|
end
|
|
|
|
end
|