1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/spec/ruby/library/win32ole/win32ole_event/on_event_spec.rb
eregon 401b64c4e8 Update to ruby/spec@c1b568b
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62656 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-03-04 15:09:32 +00:00

62 lines
1.7 KiB
Ruby

require_relative '../fixtures/classes'
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