summaryrefslogtreecommitdiff
path: root/test/win32ole/test_win32ole_event.rb
diff options
context:
space:
mode:
authorsuke <suke@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-05-01 09:05:08 +0000
committersuke <suke@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-05-01 09:05:08 +0000
commit2bdd9d6eba7f2088e017ae80e0029c236eeb47e0 (patch)
tree495cb40485a055756292d2f34e0e04f1ffa14a0c /test/win32ole/test_win32ole_event.rb
parent0cf4abaa278e338f3aa6e4633f06ef2da934ccf8 (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.rb98
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