diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | ext/win32ole/tests/testVARIANT.rb | 32 | ||||
-rw-r--r-- | ext/win32ole/tests/testall.rb | 1 | ||||
-rw-r--r-- | ext/win32ole/win32ole.c | 4 | ||||
-rw-r--r-- | test/win32ole/test_win32ole_variant.rb | 166 | ||||
-rw-r--r-- | test/win32ole/test_win32ole_variant_m.rb | 36 |
6 files changed, 129 insertions, 115 deletions
@@ -1,3 +1,8 @@ +Mon May 1 08:32:10 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp> + + * ext/win32ole/win32ole.c (ole_param_ole_type): should return + "unknown type" string when ITypeInfo::GetFuncDesc failed. + Sat Apr 29 22:43:37 2006 GOTOU Yuuzou <gotoyuzo@notwork.org> * ext/openssl/ossl_asn1.c (ossl_asn1_decode0): should initialize diff --git a/ext/win32ole/tests/testVARIANT.rb b/ext/win32ole/tests/testVARIANT.rb deleted file mode 100644 index f274778f27..0000000000 --- a/ext/win32ole/tests/testVARIANT.rb +++ /dev/null @@ -1,32 +0,0 @@ -# You need RubyUnit and MS Excel and MSI to run this test script - -require 'rubyunit' - -require 'win32ole' - -class TestWin32OLE_VARIANT < RUNIT::TestCase - include WIN32OLE::VARIANT - def test_variant - assert_equal(2, VT_I2) - assert_equal(3, VT_I4) - assert_equal(4, VT_R4) - assert_equal(5, VT_R8) - assert_equal(6, VT_CY) - assert_equal(7, VT_DATE) - assert_equal(8, VT_BSTR) - assert_equal(9, VT_DISPATCH) - assert_equal(10, VT_ERROR) - assert_equal(11, VT_BOOL) - assert_equal(12, VT_VARIANT) - assert_equal(13, VT_UNKNOWN) - assert_equal(16, VT_I1) - assert_equal(17, VT_UI1) - assert_equal(18, VT_UI2) - assert_equal(19, VT_UI4) - assert_equal(22, VT_INT) - assert_equal(23, VT_UINT) - assert_equal(0x2000, VT_ARRAY) - assert_equal(0x4000, VT_BYREF) - end -end - diff --git a/ext/win32ole/tests/testall.rb b/ext/win32ole/tests/testall.rb index bf04d9d844..e5dad78684 100644 --- a/ext/win32ole/tests/testall.rb +++ b/ext/win32ole/tests/testall.rb @@ -2,7 +2,6 @@ require 'test/unit' require 'win32ole' puts "Now Test Win32OLE version #{WIN32OLE::VERSION}" require "testWIN32OLE" -require "testVARIANT" require "testOLEEVENT" require "testNIL2VTEMPTY" require "testINVOKEVERB" diff --git a/ext/win32ole/win32ole.c b/ext/win32ole/win32ole.c index ab35a204f1..2a89dfb8a6 100644 --- a/ext/win32ole/win32ole.c +++ b/ext/win32ole/win32ole.c @@ -79,7 +79,7 @@ #define WC2VSTR(x) ole_wc2vstr((x), TRUE) -#define WIN32OLE_VERSION "0.7.5" +#define WIN32OLE_VERSION "0.7.6" typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX) (REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*); @@ -5910,7 +5910,7 @@ ole_param_ole_type(ITypeInfo *pTypeInfo, UINT method_index, UINT index) { FUNCDESC *pFuncDesc; HRESULT hr; - VALUE type = rb_str_new2("UNKNOWN"); + VALUE type = rb_str_new2("unknown type"); hr = pTypeInfo->lpVtbl->GetFuncDesc(pTypeInfo, method_index, &pFuncDesc); if (FAILED(hr)) return type; diff --git a/test/win32ole/test_win32ole_variant.rb b/test/win32ole/test_win32ole_variant.rb index e7df6f9180..175d1d53f5 100644 --- a/test/win32ole/test_win32ole_variant.rb +++ b/test/win32ole/test_win32ole_variant.rb @@ -1,104 +1,110 @@ -require 'test/unit' +begin + require 'win32ole' +rescue LoadError +end -require 'win32ole' +require "test/unit" -class TestWIN32OLE_VARIANT < Test::Unit::TestCase - def test_new - obj = WIN32OLE_VARIANT.new('foo') - assert_instance_of(WIN32OLE_VARIANT, obj) - end +if defined?(WIN32OLE_VARIANT) - def test_new_no_argument - ex = nil - begin - obj = WIN32OLE_VARIANT.new - rescue ArgumentError - ex = $! + class TestWIN32OLE_VARIANT < Test::Unit::TestCase + def test_new + obj = WIN32OLE_VARIANT.new('foo') + assert_instance_of(WIN32OLE_VARIANT, obj) end - assert_instance_of(ArgumentError, ex) - assert_equal("wrong number of arguments (0 for 1..3)", ex.message); - end - def test_new_one_argument - ex = nil - begin + def test_new_no_argument + ex = nil + begin + obj = WIN32OLE_VARIANT.new + rescue ArgumentError + ex = $! + end + assert_instance_of(ArgumentError, ex) + assert_equal("wrong number of arguments (0 for 1..3)", ex.message); + end + + def test_new_one_argument + ex = nil + begin + obj = WIN32OLE_VARIANT.new('foo') + rescue + ex = $! + end + assert_equal(nil, ex); + end + + def test_value obj = WIN32OLE_VARIANT.new('foo') - rescue - ex = $! + assert_equal('foo', obj.value) end - assert_equal(nil, ex); - end - def test_value - obj = WIN32OLE_VARIANT.new('foo') - assert_equal('foo', obj.value) - end + def test_new_2_argument + ex = nil + obj = nil + begin + obj = WIN32OLE_VARIANT.new('foo', WIN32OLE::VARIANT::VT_BSTR|WIN32OLE::VARIANT::VT_BYREF) + rescue + ex = $! + end + assert_equal('foo', obj.value); + end - def test_new_2_argument - ex = nil - obj = nil - begin - obj = WIN32OLE_VARIANT.new('foo', WIN32OLE::VARIANT::VT_BSTR|WIN32OLE::VARIANT::VT_BYREF) - rescue - ex = $! + def test_new_2_argument2 + ex = nil + obj = nil + begin + obj = WIN32OLE_VARIANT.new('foo', WIN32OLE::VARIANT::VT_BSTR) + rescue + ex = $! + end + assert_equal('foo', obj.value); end - assert_equal('foo', obj.value); - end - def test_new_2_argument2 - ex = nil - obj = nil - begin - obj = WIN32OLE_VARIANT.new('foo', WIN32OLE::VARIANT::VT_BSTR) - rescue - ex = $! + def test_conversion_num2str + obj = WIN32OLE_VARIANT.new(124, WIN32OLE::VARIANT::VT_BSTR) + assert_equal("124", obj.value); end - assert_equal('foo', obj.value); - end - def test_conversion_num2str - obj = WIN32OLE_VARIANT.new(124, WIN32OLE::VARIANT::VT_BSTR) - assert_equal("124", obj.value); - end + def test_conversion_str2date + obj = WIN32OLE_VARIANT.new("2004-12-24 12:24:45", WIN32OLE::VARIANT::VT_DATE) + assert_equal("2004/12/24 12:24:45", obj.value) + end - def test_conversion_str2date - obj = WIN32OLE_VARIANT.new("2004-12-24 12:24:45", WIN32OLE::VARIANT::VT_DATE) - assert_equal("2004/12/24 12:24:45", obj.value) - end + def test_conversion_time2date + dt = Time.mktime(2004, 12, 24, 12, 24, 45) + obj = WIN32OLE_VARIANT.new(dt, WIN32OLE::VARIANT::VT_DATE) + assert_equal("2004/12/24 12:24:45", obj.value) + end - def test_conversion_time2date - dt = Time.mktime(2004, 12, 24, 12, 24, 45) - obj = WIN32OLE_VARIANT.new(dt, WIN32OLE::VARIANT::VT_DATE) - assert_equal("2004/12/24 12:24:45", obj.value) - end + def test_conversion_str2cy + obj = WIN32OLE_VARIANT.new("\\10,000", WIN32OLE::VARIANT::VT_CY) + assert_equal("10000", obj.value) + end - def test_conversion_str2cy - obj = WIN32OLE_VARIANT.new("\\10,000", WIN32OLE::VARIANT::VT_CY) - assert_equal("10000", obj.value) - end + def test_create_vt_array + obj = WIN32OLE_VARIANT.new([1.2, 2.3], WIN32OLE::VARIANT::VT_ARRAY|WIN32OLE::VARIANT::VT_R8) + assert_equal([1.2, 2.3], obj.value) + end - def test_create_vt_array - obj = WIN32OLE_VARIANT.new([1.2, 2.3], WIN32OLE::VARIANT::VT_ARRAY|WIN32OLE::VARIANT::VT_R8) - assert_equal([1.2, 2.3], obj.value) - end + def test_create_vt_array_str2ui1array + obj = WIN32OLE_VARIANT.new("ABC", WIN32OLE::VARIANT::VT_ARRAY|WIN32OLE::VARIANT::VT_UI1) + assert_equal("ABC", obj.value) - def test_create_vt_array_str2ui1array - obj = WIN32OLE_VARIANT.new("ABC", WIN32OLE::VARIANT::VT_ARRAY|WIN32OLE::VARIANT::VT_UI1) - assert_equal("ABC", obj.value) + obj = WIN32OLE_VARIANT.new([65, 0].pack("C*"), WIN32OLE::VARIANT::VT_ARRAY|WIN32OLE::VARIANT::VT_UI1) + assert_equal([65, 0].pack("C*"), obj.value) - obj = WIN32OLE_VARIANT.new([65, 0].pack("C*"), WIN32OLE::VARIANT::VT_ARRAY|WIN32OLE::VARIANT::VT_UI1) - assert_equal([65, 0].pack("C*"), obj.value) + end + def test_create_vt_array_int + obj = WIN32OLE_VARIANT.new([65, 0], WIN32OLE::VARIANT::VT_ARRAY|WIN32OLE::VARIANT::VT_UI1) + assert_equal([65, 0].pack("C*"), obj.value) - end - def test_create_vt_array_int - obj = WIN32OLE_VARIANT.new([65, 0], WIN32OLE::VARIANT::VT_ARRAY|WIN32OLE::VARIANT::VT_UI1) - assert_equal([65, 0].pack("C*"), obj.value) + obj = WIN32OLE_VARIANT.new([65, 0]) + assert_equal([65, 0], obj.value) - obj = WIN32OLE_VARIANT.new([65, 0]) - assert_equal([65, 0], obj.value) + obj = WIN32OLE_VARIANT.new([65, 0], WIN32OLE::VARIANT::VT_I2|WIN32OLE::VARIANT::VT_ARRAY) + assert_equal([65, 0], obj.value) + end - obj = WIN32OLE_VARIANT.new([65, 0], WIN32OLE::VARIANT::VT_I2|WIN32OLE::VARIANT::VT_ARRAY) - assert_equal([65, 0], obj.value) end - end diff --git a/test/win32ole/test_win32ole_variant_m.rb b/test/win32ole/test_win32ole_variant_m.rb new file mode 100644 index 0000000000..1271526db9 --- /dev/null +++ b/test/win32ole/test_win32ole_variant_m.rb @@ -0,0 +1,36 @@ +# You need RubyUnit and MS Excel and MSI to run this test script + +begin + require 'win32ole' +rescue LoadError +end + +require "test/unit" + +if defined?(WIN32OLE::VARIANT) + class TestWin32OLE_VARIANT < Test::Unit::TestCase + include WIN32OLE::VARIANT + def test_variant + assert_equal(2, VT_I2) + assert_equal(3, VT_I4) + assert_equal(4, VT_R4) + assert_equal(5, VT_R8) + assert_equal(6, VT_CY) + assert_equal(7, VT_DATE) + assert_equal(8, VT_BSTR) + assert_equal(9, VT_DISPATCH) + assert_equal(10, VT_ERROR) + assert_equal(11, VT_BOOL) + assert_equal(12, VT_VARIANT) + assert_equal(13, VT_UNKNOWN) + assert_equal(16, VT_I1) + assert_equal(17, VT_UI1) + assert_equal(18, VT_UI2) + assert_equal(19, VT_UI4) + assert_equal(22, VT_INT) + assert_equal(23, VT_UINT) + assert_equal(0x2000, VT_ARRAY) + assert_equal(0x4000, VT_BYREF) + end + end +end |