diff options
Diffstat (limited to 'test/win32ole')
-rw-r--r-- | test/win32ole/available_ole.rb | 24 | ||||
-rw-r--r-- | test/win32ole/test_win32ole_param_event.rb | 32 |
2 files changed, 33 insertions, 23 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 diff --git a/test/win32ole/test_win32ole_param_event.rb b/test/win32ole/test_win32ole_param_event.rb index 730161021f..64812e567d 100644 --- a/test/win32ole/test_win32ole_param_event.rb +++ b/test/win32ole/test_win32ole_param_event.rb @@ -6,38 +6,24 @@ end require 'test/unit' if defined?(WIN32OLE_PARAM) - - def ado_installed? - installed = false - if defined?(WIN32OLE) - begin - WIN32OLE.new('ADODB.Connection') - installed = true - rescue - end - end - installed - end + require_relative 'available_ole' class TestWIN32OLE_PARAM_EVENT < Test::Unit::TestCase - unless ado_installed? - def test_dummy_for_skip_message - skip 'ActiveX Data Object Library not found' - end - else + if AvailableOLE.msxml_available? || AvailableOLE.ado_available? def setup - typelib = WIN32OLE.new('ADODB.Connection').ole_typelib - otype = WIN32OLE_TYPE.new(typelib.name, 'Connection') - m_will_connect = WIN32OLE_METHOD.new(otype, 'WillConnect') - @param_user_id = m_will_connect.params[0] + @param = AvailableOLE.event_param end def test_input? - assert_equal(true, @param_user_id.input?) + assert_equal(true, @param.input?) end def test_output? - assert_equal(true, @param_user_id.output?) + assert_equal(true, @param.output?) + end + else + def test_dummy_for_skip_message + skip 'ActiveX Data Object Library and MS XML not found' end end end |