47 lines
1020 B
Ruby
47 lines
1020 B
Ruby
require 'FixParser'
|
|
require 'runit/testcase'
|
|
require "thread"
|
|
require 'SocketServer'
|
|
|
|
class FixParserTestCase < RUNIT::TestCase
|
|
|
|
def test_readFixMessage
|
|
fixMsg1 = "8=FIX.4.2\0019=12\00135=A\001108=30\00110=31\001"
|
|
fixMsg2 = "8=FIX.4.2\0019=17\00135=4\00136=88\001123=Y\00110=34\001"
|
|
|
|
server = SocketServer.new
|
|
def server.message=(m)
|
|
@message = m
|
|
end
|
|
|
|
def server.connectAction(s)
|
|
end
|
|
|
|
def server.receiveAction(s)
|
|
s.write(@message)
|
|
end
|
|
|
|
def server.disconnectAction(s)
|
|
end
|
|
|
|
server.message = fixMsg1 + fixMsg2
|
|
Thread.start do
|
|
server.listen(RUNIT::TestCase.port)
|
|
end
|
|
server.wait
|
|
|
|
s = TCPSocket.open("localhost", RUNIT::TestCase.port)
|
|
parser = FixParser.new(s)
|
|
begin
|
|
assert_equals(fixMsg1, parser.readFixMessage)
|
|
assert_equals(fixMsg2, parser.readFixMessage)
|
|
rescue IOError
|
|
# I have no idea why this is being thrown
|
|
end
|
|
|
|
s.close
|
|
server.stop()
|
|
end
|
|
|
|
end
|