mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
63 lines
1.7 KiB
Ruby
63 lines
1.7 KiB
Ruby
![]() |
require File.expand_path('../../fixtures/classes', __FILE__)
|
||
|
|
||
|
platform_is :windows do
|
||
|
require 'win32ole'
|
||
|
|
||
|
def default_handler(event, *args)
|
||
|
@event += event
|
||
|
end
|
||
|
|
||
|
def alternate_handler(event, *args)
|
||
|
@event2 = "alternate"
|
||
|
end
|
||
|
|
||
|
def handler3(event, *args)
|
||
|
@event3 += event
|
||
|
end
|
||
|
|
||
|
|
||
|
describe "WIN32OLE_EVENT#on_event with no argument" do
|
||
|
before :each do
|
||
|
@ie = WIN32OLESpecs.new_ole('InternetExplorer.Application')
|
||
|
@ev = WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents')
|
||
|
@event = ''
|
||
|
@event2 = ''
|
||
|
@event3 = ''
|
||
|
@ie.StatusBar = true
|
||
|
end
|
||
|
|
||
|
after :each do
|
||
|
@ie.Quit
|
||
|
end
|
||
|
|
||
|
it "sets event handler properly, and the handler is invoked by event loop" do
|
||
|
@ev.on_event { |*args| default_handler(*args) }
|
||
|
@ie.StatusText='hello'
|
||
|
WIN32OLE_EVENT.message_loop
|
||
|
@event.should =~ /StatusTextChange/
|
||
|
end
|
||
|
|
||
|
it "accepts a String argument, sets event handler properly, and the handler is invoked by event loop" do
|
||
|
@ev.on_event("StatusTextChange") { |*args| @event = 'foo' }
|
||
|
@ie.StatusText='hello'
|
||
|
WIN32OLE_EVENT.message_loop
|
||
|
@event.should =~ /foo/
|
||
|
end
|
||
|
|
||
|
it "registers multiple event handlers for the same event" do
|
||
|
@ev.on_event("StatusTextChange") { |*args| default_handler(*args) }
|
||
|
@ev.on_event("StatusTextChange") { |*args| alternate_handler(*args) }
|
||
|
@ie.StatusText= 'hello'
|
||
|
WIN32OLE_EVENT.message_loop
|
||
|
@event2.should == 'alternate'
|
||
|
end
|
||
|
|
||
|
it "accepts a Symbol argument, sets event handler properly, and the handler is invoked by event loop" do
|
||
|
@ev.on_event(:StatusTextChange) { |*args| @event = 'foo' }
|
||
|
@ie.StatusText='hello'
|
||
|
WIN32OLE_EVENT.message_loop
|
||
|
@event.should =~ /foo/
|
||
|
end
|
||
|
end
|
||
|
end
|