aboutsummaryrefslogtreecommitdiffstats
path: root/test/win32ole/available_ole.rb
diff options
context:
space:
mode:
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