1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/ext/win32ole/tests/testOLEEVENT.rb
suke 5d71328bca avoid core dump with WIN32OLE_EVENT.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9282 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-09-23 08:39:24 +00:00

91 lines
1.9 KiB
Ruby

require 'rubyunit'
require 'win32ole'
class TestWIN32OLE_EVENT < RUNIT::TestCase
def setup
@excel = WIN32OLE.new("Excel.Application")
@excel.visible = true
@event = ""
@event2 = ""
end
def test_on_event
book = @excel.workbooks.Add
value = ""
begin
ev = WIN32OLE_EVENT.new(book, 'WorkbookEvents')
ev.on_event('SheetChange'){|arg1, arg2|
begin
value = arg1.value
rescue
value = $!.message
end
}
book.Worksheets(1).Range("A1").value = "OK"
ensure
book.saved = true
end
assert_equal("OK", value)
end
def handler1
@event += "handler1"
end
def handler2
@event += "handler2"
end
def handler3
@event += "handler3"
end
def test_on_event2
book = @excel.workbooks.Add
begin
ev = WIN32OLE_EVENT.new(book, 'WorkbookEvents')
ev.on_event('SheetChange'){|arg1, arg2|
handler1
}
ev.on_event('SheetChange'){|arg1, arg2|
handler2
}
book.Worksheets(1).Range("A1").value = "OK"
ensure
book.saved = true
end
assert_equal("handler2", @event)
end
def test_on_event3
book = @excel.workbooks.Add
begin
ev = WIN32OLE_EVENT.new(book, 'WorkbookEvents')
ev.on_event{ handler1 }
ev.on_event{ handler2 }
book.Worksheets(1).Range("A1").value = "OK"
ensure
book.saved = true
end
assert_equal("handler2", @event)
end
def test_on_event4
book = @excel.workbooks.Add
begin
ev = WIN32OLE_EVENT.new(book, 'WorkbookEvents')
ev.on_event{ handler1 }
ev.on_event{ handler2 }
ev.on_event('SheetChange'){|arg1, arg2| handler3 }
book.Worksheets(1).Range("A1").value = "OK"
ensure
book.saved = true
end
assert_equal("handler3", @event)
end
def teardown
@excel.quit
@excel = nil
GC.start
end
end