aboutsummaryrefslogtreecommitdiffstats
path: root/test/win32ole/available_ole.rb
diff options
context:
space:
mode:
authorsuke <suke@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-10-20 14:34:30 +0000
committersuke <suke@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-10-20 14:34:30 +0000
commit2afc2a058133affff5fa49c1ce92beb7ab5b88cb (patch)
tree8d8b3879caf5463b484bf82a6ea9a7dc8026e083 /test/win32ole/available_ole.rb
parentb4766a4d9ee5dca0d9491ae320131f065242b574 (diff)
downloadruby-2afc2a058133affff5fa49c1ce92beb7ab5b88cb.tar.gz
Merge branch 'modify_test_win32ole' into trunk
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65250 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/win32ole/available_ole.rb')
-rw-r--r--test/win32ole/available_ole.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/test/win32ole/available_ole.rb b/test/win32ole/available_ole.rb
index e697092032..ebc9baae66 100644
--- a/test/win32ole/available_ole.rb
+++ b/test/win32ole/available_ole.rb
@@ -13,5 +13,29 @@ if defined?(WIN32OLE)
rescue
false
end
+
+ def ado_available?
+ WIN32OLE.new('ADODB.Connection')
+ true
+ rescue
+ false
+ end
+
+ def msxml_available?
+ !WIN32OLE_TYPELIB.typelibs.find { |t| t.name.start_with?('Microsoft XML') }.nil?
+ end
+
+ def event_param
+ method = if msxml_available?
+ typelib = WIN32OLE_TYPELIB.typelibs.find { |t| t.name.start_with?('Microsoft XML') }
+ ole_type = WIN32OLE_TYPE.new(typelib.name, 'IVBSAXContentHandler')
+ WIN32OLE_METHOD.new(ole_type, 'startElement')
+ elsif ado_available?
+ typelib = WIN32OLE.new('ADODB.Connection').ole_typelib
+ ole_type = WIN32OLE_TYPE.new(typelib.name, 'Connection')
+ WIN32OLE_METHOD.new(ole_type, 'WillConnect')
+ end
+ method && method.params[0]
+ end
end
end