44 lines
979 B
Ruby
44 lines
979 B
Ruby
|
require 'em_test_helper'
|
||
|
|
||
|
class TestSomeExceptions < Test::Unit::TestCase
|
||
|
class DoomedConnectionError < StandardError
|
||
|
end
|
||
|
class DoomedConnection < EventMachine::Connection
|
||
|
def unbind
|
||
|
raise DoomedConnectionError
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# Read the commentary in EM#run.
|
||
|
# This test exercises the ensure block in #run that makes sure
|
||
|
# EM#release_machine gets called even if an exception is
|
||
|
# thrown within the user code. Without the ensured call to release_machine,
|
||
|
# the second call to EM#run will fail with a C++ exception
|
||
|
# because the machine wasn't cleaned up properly.
|
||
|
|
||
|
def test_a
|
||
|
assert_raises(RuntimeError) {
|
||
|
EM.run {
|
||
|
raise "some exception"
|
||
|
}
|
||
|
}
|
||
|
end
|
||
|
|
||
|
def test_b
|
||
|
assert_raises(RuntimeError) {
|
||
|
EM.run {
|
||
|
raise "some exception"
|
||
|
}
|
||
|
}
|
||
|
end
|
||
|
|
||
|
def test_exception_on_unbind
|
||
|
assert_raises(DoomedConnectionError) {
|
||
|
EM.run {
|
||
|
EM.connect("localhost", 8888, DoomedConnection)
|
||
|
}
|
||
|
}
|
||
|
end
|
||
|
|
||
|
end
|