diff options
author | suke <suke@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-05-01 09:05:08 +0000 |
---|---|---|
committer | suke <suke@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-05-01 09:05:08 +0000 |
commit | 2bdd9d6eba7f2088e017ae80e0029c236eeb47e0 (patch) | |
tree | 495cb40485a055756292d2f34e0e04f1ffa14a0c /test/win32ole/test_win32ole_event.rb | |
parent | 0cf4abaa278e338f3aa6e4633f06ef2da934ccf8 (diff) |
ext/win32ole/win32ole.c (add_event_call_back): should not
delete event handler when the event name is not entried.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10125 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/win32ole/test_win32ole_event.rb')
-rw-r--r-- | test/win32ole/test_win32ole_event.rb | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/test/win32ole/test_win32ole_event.rb b/test/win32ole/test_win32ole_event.rb new file mode 100644 index 0000000000..1b0285cb58 --- /dev/null +++ b/test/win32ole/test_win32ole_event.rb @@ -0,0 +1,98 @@ +begin + require 'win32ole' +rescue +end +require 'test/unit' +if defined?(WIN32OLE_EVENT) + class TestWIN32OLE_EVENT < Test::Unit::TestCase + def setup + @ie = WIN32OLE.new("InternetExplorer.Application") + @ie.visible = true + @event = "" + @event2 = "" + @event3 = "" + end + + def default_handler(event, *args) + @event += event + end + + def test_on_event + ev = WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents') + ev.on_event {|*args| default_handler(*args)} + @ie.gohome + while @ie.busy + WIN32OLE_EVENT.message_loop + end + assert_match(/BeforeNavigate/, @event) + assert_match(/NavigateComplete/, @event) + end + + def test_on_event2 + ev = WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents') + ev.on_event('BeforeNavigate') {|*args| handler1} + ev.on_event('BeforeNavigate') {|*args| handler2} + @ie.gohome + while @ie.busy + WIN32OLE_EVENT.message_loop + end + assert_equal("handler2", @event2) + end + + def test_on_event3 + ev = WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents') + ev.on_event {handler1} + ev.on_event {handler2} + @ie.gohome + while @ie.busy + WIN32OLE_EVENT.message_loop + end + assert_equal("handler2", @event2) + end + + def test_on_event4 + ev = WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents') + ev.on_event{handler1} + ev.on_event{handler2} + ev.on_event('NavigateComplete'){|*args| handler3(*args)} + @ie.gohome + while @ie.busy + WIN32OLE_EVENT.message_loop + end + assert(@event3!="") + assert("handler2", @event2) + end + + def test_on_event5 + ev = WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents') + ev.on_event {|*args| default_handler(*args)} + ev.on_event('NavigateComplete'){|*args| handler3(*args)} + @ie.gohome + while @ie.busy + WIN32OLE_EVENT.message_loop + end + assert_match(/BeforeNavigate/, @event) + assert(/NavigateComplete/ !~ @event) + assert(@event!="") + end + + def handler1 + @event2 = "handler1" + end + + def handler2 + @event2 = "handler2" + end + + def handler3(url) + @event3 += url + end + + def teardown + @ie.quit + @ie = nil + GC.start + sleep 1 + end + end +end |