1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Merge branch 'modify_test_win32ole' into trunk

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65250 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
suke 2018-10-20 14:34:30 +00:00
parent b4766a4d9e
commit 2afc2a0581
2 changed files with 33 additions and 23 deletions

View file

@ -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

View file

@ -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