summaryrefslogtreecommitdiff
path: root/spec/ruby/library
diff options
context:
space:
mode:
authorsuke <suke@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-10-28 06:11:30 +0000
committersuke <suke@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-10-28 06:11:30 +0000
commitd6f55c7d425bceb39fea5a362d50da40b8e2aabe (patch)
treedf3a911d7912abba41340686948dea1fab297002 /spec/ruby/library
parent7eda588d66846bc3f853d217bbe8865e4070a1af (diff)
use MSXML.DOMDocument instead of InternetExplorer.Application
* spec/ruby/library/win32ole/fixtures/event.xml use MSXML.DOMDocument instead of InternetExplorer.Application. InternetExplorer.Application is not available on some environments. Thanks to MSP-Greg (Greg L). * spec/ruby/library/win32ole/win32ole_event/on_event_spec.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65414 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/ruby/library')
-rw-r--r--spec/ruby/library/win32ole/fixtures/event.xml4
-rw-r--r--spec/ruby/library/win32ole/win32ole_event/on_event_spec.rb104
2 files changed, 60 insertions, 48 deletions
diff --git a/spec/ruby/library/win32ole/fixtures/event.xml b/spec/ruby/library/win32ole/fixtures/event.xml
new file mode 100644
index 0000000000..23f3d2b126
--- /dev/null
+++ b/spec/ruby/library/win32ole/fixtures/event.xml
@@ -0,0 +1,4 @@
+<program>
+ <name>Ruby</name>
+ <version>trunk</version>
+</program>
diff --git a/spec/ruby/library/win32ole/win32ole_event/on_event_spec.rb b/spec/ruby/library/win32ole/win32ole_event/on_event_spec.rb
index 00b8fcc035..feb26b0637 100644
--- a/spec/ruby/library/win32ole/win32ole_event/on_event_spec.rb
+++ b/spec/ruby/library/win32ole/win32ole_event/on_event_spec.rb
@@ -1,62 +1,70 @@
-require_relative '../fixtures/classes'
-
platform_is :windows do
- require 'win32ole'
+ require_relative '../fixtures/classes'
+ guard -> { WIN32OLESpecs::MSXML_AVAILABLE } do
- def default_handler(event, *args)
- @event += event
- end
+ def handler_global(event, *args)
+ @event_global += event
+ end
- def alternate_handler(event, *args)
- @event2 = "alternate"
- end
+ def handler_specific(*args)
+ @event_specific = "specific"
+ end
- def handler3(event, *args)
- @event3 += event
- end
+ def handler_spec_alt(*args)
+ @event_spec_alt = "spec_alt"
+ end
+ describe "WIN32OLE_EVENT#on_event" do
+ before :all do
+ @fn_xml = File.absolute_path "../fixtures/event.xml", __dir__
+ 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
+ before :each do
+ @xml_dom = WIN32OLESpecs.new_ole 'MSXML.DOMDocument'
+ @xml_dom.async = true
+ @ev = WIN32OLE_EVENT.new @xml_dom
+ @event_global = ''
+ @event_specific = ''
+ @event_spec_alt = ''
+ end
- after :each do
- @ie.Quit
- end
+ after :each do
+ @xml_dom = nil
+ @ev = nil
+ 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 "sets global event handler properly, and the handler is invoked by event loop" do
+ @ev.on_event { |*args| handler_global(*args) }
+ @xml_dom.loadXML "<program><name>Ruby</name><version>trunk</version></program>"
+ WIN32OLE_EVENT.message_loop
+ @event_global.should =~ /onreadystatechange/
+ 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 "accepts a String argument and the handler is invoked by event loop" do
+ @ev.on_event("onreadystatechange") { |*args| @event = 'foo' }
+ @xml_dom.loadXML "<program><name>Ruby</name><version>trunk</version></program>"
+ 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 and the handler is invoked by event loop" do
+ @ev.on_event(:onreadystatechange) { |*args| @event = 'bar' }
+ @xml_dom.loadXML "<program><name>Ruby</name><version>trunk</version></program>"
+ WIN32OLE_EVENT.message_loop
+ @event.should =~ /bar/
+ 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/
+ it "accepts a specific event handler and overrides a global event handler" do
+ @ev.on_event { |*args| handler_global(*args) }
+ @ev.on_event("onreadystatechange") { |*args| handler_specific(*args) }
+ @ev.on_event("onreadystatechange") { |*args| handler_spec_alt(*args) }
+ @xml_dom.load @fn_xml
+ WIN32OLE_EVENT.message_loop
+ @event_global.should == 'ondataavailable'
+ @event_global.should_not =~ /onreadystatechange/
+ @event_specific.should == ''
+ @event_spec_alt.should == "spec_alt"
+ end
end
end
end