From b9deecb1506d4f8d2e1796a0e2d334d01a8f1a1b Mon Sep 17 00:00:00 2001 From: suke Date: Sun, 2 Nov 2008 21:52:04 +0000 Subject: * ext/win32ole/win32ole.c (ole_event_free): invoke IConnectionPoint::Unadvise before invoking IConnectionPoint::Release. * test/win32ole/test_win32ole_event.rb, test/win32ole/err_in_callback.rb, test/win32ole/test_err_in_callback.rb, test/win32ole/test_win32ole_variant_outarg.rb, test/win32ole/orig_data.csv: Use ActiveX Data Object Library instead of InternetExplorer. remove test/win32ole/test_win32ole_variant_with_ie.rb. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20093 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/win32ole/err_in_callback.rb | 18 +- test/win32ole/orig_data.csv | 5 + test/win32ole/test_err_in_callback.rb | 44 +- test/win32ole/test_win32ole_event.rb | 569 +++++++++++++------------ test/win32ole/test_win32ole_variant_outarg.rb | 69 +++ test/win32ole/test_win32ole_variant_with_ie.rb | 53 --- 6 files changed, 367 insertions(+), 391 deletions(-) create mode 100644 test/win32ole/orig_data.csv create mode 100644 test/win32ole/test_win32ole_variant_outarg.rb delete mode 100644 test/win32ole/test_win32ole_variant_with_ie.rb (limited to 'test/win32ole') diff --git a/test/win32ole/err_in_callback.rb b/test/win32ole/err_in_callback.rb index 6a0b711403..fabb7bef0e 100644 --- a/test/win32ole/err_in_callback.rb +++ b/test/win32ole/err_in_callback.rb @@ -1,15 +1,9 @@ require 'win32ole' -ie = WIN32OLE.new('InternetExplorer.Application') -ie.visible = true -WIN32OLE_EVENT.message_loop -sleep 0.2 -ev = WIN32OLE_EVENT.new(ie) - -ev.on_event('NavigateComplete2') {|*args| +db = WIN32OLE.new('ADODB.Connection') +db.connectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=.;" +ev = WIN32OLE_EVENT.new(db) +ev.on_event('WillConnect') {|*args| foo } -ie.navigate(ARGV.shift) -while ie.readystate != 4 - WIN32OLE_EVENT.message_loop - sleep 0.2 -end +db.open +WIN32OLE_EVENT.message_loop diff --git a/test/win32ole/orig_data.csv b/test/win32ole/orig_data.csv new file mode 100644 index 0000000000..3931c6ad1b --- /dev/null +++ b/test/win32ole/orig_data.csv @@ -0,0 +1,5 @@ +ID,VALUE +1,"A" +2,"B" +3,"C" +4,"B" diff --git a/test/win32ole/test_err_in_callback.rb b/test/win32ole/test_err_in_callback.rb index c223804ce6..bbbab719d6 100644 --- a/test/win32ole/test_err_in_callback.rb +++ b/test/win32ole/test_err_in_callback.rb @@ -21,27 +21,12 @@ if defined?(WIN32OLE) " -I " + e }.join("") @script = File.dirname(__FILE__) + "/err_in_callback.rb" - @param = create_temp_html - @param = "file:///" + @param.gsub(/\\/, '/') end end - def create_temp_html - fso = WIN32OLE.new('Scripting.FileSystemObject') - @dummy_file = fso.GetTempName + ".html" - cfolder = fso.getFolder(".") - @str = "This is test HTML file for Win32OLE (#{Time.now})" - f = cfolder.CreateTextFile(@dummy_file) - f.writeLine("
#{@str}
") - f.close - @f = @dummy_file - dummy_path = cfolder.path + "\\" + @dummy_file - dummy_path - end - def test_err_in_callback if @ruby - cmd = "#{@ruby} -v #{@iopt} #{@script} #{@param} > test_err_in_callback.log 2>&1" + cmd = "#{@ruby} -v #{@iopt} #{@script} > test_err_in_callback.log 2>&1" system(cmd) str = "" open("test_err_in_callback.log") {|ifs| @@ -51,34 +36,9 @@ if defined?(WIN32OLE) end end - def ie_quit - WIN32OLE_EVENT.message_loop - sh = WIN32OLE.new('Shell.Application') - sh.windows.each do |w| - i = 0 - begin - i = i + 1 - next if i > 100 - WIN32OLE_EVENT.message_loop - sleep 0.1 - next if /#{@dummy_file}/ !~ w.locationURL - e = w.document.all.item("str") - if e && e.innerHTML == @str - w.quit - WIN32OLE_EVENT.message_loop - sleep 0.2 - break - end - rescue - retry - end - end - end - def teardown - ie_quit - File.unlink(@f) File.unlink("test_err_in_callback.log") end + end end diff --git a/test/win32ole/test_win32ole_event.rb b/test/win32ole/test_win32ole_event.rb index 5b2a1af420..dff9a68c9b 100644 --- a/test/win32ole/test_win32ole_event.rb +++ b/test/win32ole/test_win32ole_event.rb @@ -4,330 +4,331 @@ rescue LoadError end require 'test/unit' -if defined?(WIN32OLE_EVENT) - class TestWIN32OLE_EVENT < Test::Unit::TestCase - module IE - end - def create_temp_html - fso = WIN32OLE.new('Scripting.FileSystemObject') - dummy_file = fso.GetTempName + ".html" - cfolder = fso.getFolder(".") - f = cfolder.CreateTextFile(dummy_file) - f.writeLine("This is test HTML file for Win32OLE.") - f.close - dummy_path = cfolder.path + "\\" + dummy_file - dummy_path +def ado_installed? + installed = false + if defined?(WIN32OLE) + db = nil + begin + db = WIN32OLE.new('ADODB.Connection') + db.connectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=.;" + db.open + db.close + db = nil + installed = true + rescue end + end + installed +end - def message_loop - WIN32OLE_EVENT.message_loop - sleep 0.1 - end +if defined?(WIN32OLE_EVENT) + dotest = ado_installed? + if !dotest + STDERR.puts("\n#{__FILE__} skipped(ActiveX Data Object Library not found.)") + end + if dotest + class TestWIN32OLE_EVENT < Test::Unit::TestCase + CONNSTR="Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=.;" + module ADO + end + def message_loop + WIN32OLE_EVENT.message_loop + end - def wait_ie - while @ie.readyState != IE::READYSTATE_COMPLETE - message_loop + def default_handler(event, *args) + @event += event end - end - def setup - WIN32OLE_EVENT.message_loop - @ie = WIN32OLE.new("InternetExplorer.Application") - if !defined?(IE::READYSTATE_COMPLETE) - WIN32OLE.const_load(@ie, IE) - end - @ie.visible = true - message_loop - @event = "" - @event2 = "" - @event3 = "" - @f = create_temp_html - end + def setup + @db = WIN32OLE.new('ADODB.Connection') + if !defined?(ADO::AdStateOpen) + WIN32OLE.const_load(@db, ADO) + end + @db.connectionString = CONNSTR + @event = "" + @event2 = "" + @event3 = "" + end - def default_handler(event, *args) - @event += event - end + def test_s_new + assert_raise(TypeError) { + ev = WIN32OLE_EVENT.new("A") + } + end - def test_s_new - assert_raise(TypeError) { - ev = WIN32OLE_EVENT.new("A") - } - end + def test_s_new_without_itf + ev = WIN32OLE_EVENT.new(@db) + ev.on_event {|*args| default_handler(*args)} + @db.open + @db.close + 10.times do |i| + WIN32OLE_EVENT.new(@db) + GC.start + message_loop + @db.open + message_loop + @db.close + end + assert_match(/WillConnect/, @event) + end - def test_s_new_without_itf - ev = WIN32OLE_EVENT.new(@ie) - ev.on_event {|*args| default_handler(*args)} - @ie.navigate("file:///#{@f}") - while @ie.busy - WIN32OLE_EVENT.new(@ie) - GC.start + def test_on_event + ev = WIN32OLE_EVENT.new(@db, 'ConnectionEvents') + ev.on_event {|*args| default_handler(*args)} + @db.open message_loop + assert_match(/WillConnect/, @event) end - assert_match(/BeforeNavigate/, @event) - assert_match(/NavigateComplete/, @event) - end - - def test_on_event - ev = WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents') - ev.on_event {|*args| default_handler(*args)} - @ie.navigate("file:///#{@f}") - wait_ie - assert_match(/BeforeNavigate/, @event) - assert_match(/NavigateComplete/, @event) - end - def test_on_event_symbol - ev = WIN32OLE_EVENT.new(@ie) - ev.on_event(:BeforeNavigate2) {|*args| - handler1 - } - @ie.navigate("file:///#{@f}") - wait_ie - assert_equal("handler1", @event2) - end - - def test_on_event2 - ev = WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents') - ev.on_event('BeforeNavigate') {|*args| handler1} - ev.on_event('BeforeNavigate') {|*args| handler2} - @ie.navigate("file:///#{@f}") - wait_ie - assert_equal("handler2", @event2) - end + def test_on_event_symbol + ev = WIN32OLE_EVENT.new(@db) + ev.on_event(:WillConnect) {|*args| + handler1 + } + @db.open + message_loop + assert_equal("handler1", @event2) + end - def test_on_event3 - ev = WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents') - ev.on_event {|*args| handler1} - ev.on_event {|*args| handler2} - @ie.navigate("file:///#{@f}") - wait_ie - assert_equal("handler2", @event2) - end + def test_on_event2 + ev = WIN32OLE_EVENT.new(@db, 'ConnectionEvents') + ev.on_event('WillConnect') {|*args| handler1} + ev.on_event('WillConnect') {|*args| handler2} + @db.open + message_loop + assert_equal("handler2", @event2) + end - def test_on_event4 - ev = WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents') - ev.on_event{|*args| handler1} - ev.on_event{|*args| handler2} - ev.on_event('NavigateComplete'){|*args| handler3(*args)} - @ie.navigate("file:///#{@f}") - wait_ie - assert(@event3!="") - assert("handler2", @event2) - end + def test_on_event3 + ev = WIN32OLE_EVENT.new(@db, 'ConnectionEvents') + ev.on_event('WillConnect') {|*args| handler1} + ev.on_event('WillConnect') {|*args| handler2} + @db.open + message_loop + assert_equal("handler2", @event2) + end - def test_on_event5 - ev = WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents') - ev.on_event {|*args| default_handler(*args)} - ev.on_event('NavigateComplete'){|*args| handler3(*args)} - @ie.navigate("file:///#{@f}") - wait_ie - assert_match(/BeforeNavigate/, @event) - assert(/NavigateComplete/ !~ @event) - assert(@event!="") - end + def test_on_event4 + ev = WIN32OLE_EVENT.new(@db, 'ConnectionEvents') + ev.on_event{|*args| handler1} + ev.on_event{|*args| handler2} + ev.on_event('WillConnect'){|*args| handler3(*args)} + @db.open + message_loop + assert_equal(CONNSTR, @event3) + assert("handler2", @event2) + end - def test_unadvise - ev = WIN32OLE_EVENT.new(@ie, 'DWebBrowserEvents') - ev.on_event {|*args| default_handler(*args)} - @ie.navigate("file:///#{@f}") - wait_ie - assert_match(/BeforeNavigate/, @event) - ev.unadvise - @event = "" - @ie.navigate("file:///#{@f}") - wait_ie - assert_equal("", @event); - assert_raise(WIN32OLERuntimeError) { + def test_on_event5 + ev = WIN32OLE_EVENT.new(@db, 'ConnectionEvents') ev.on_event {|*args| default_handler(*args)} - } - end - - def test_non_exist_event - assert_raise(RuntimeError) { - ev = WIN32OLE_EVENT.new(@ie, 'XXXX') - } - dict = WIN32OLE.new('Scripting.Dictionary') - assert_raise(RuntimeError) { - ev = WIN32OLE_EVENT.new(dict) - } - end + ev.on_event('WillConnect'){|*args| handler3(*args)} + @db.open + message_loop + assert_match(/ConnectComplete/, @event) + assert(/WillConnect/ !~ @event) + assert_equal(CONNSTR, @event3) + end - def test_on_event_with_outargs - ev = WIN32OLE_EVENT.new(@ie) - # ev.on_event_with_outargs('BeforeNavigate'){|*args| - # args.last[5] = true # Cancel = true - # } - ev.on_event_with_outargs('BeforeNavigate2'){|*args| - args.last[6] = true # Cancel = true - } - bl = @ie.locationURL - @ie.navigate("file:///#{@f}") - wait_ie - assert_equal(bl, @ie.locationURL) - end + def test_unadvise + ev = WIN32OLE_EVENT.new(@db, 'ConnectionEvents') + ev.on_event {|*args| default_handler(*args)} + @db.open + message_loop + assert_match(/WillConnect/, @event) + ev.unadvise + @event = "" + @db.close + @db.open + message_loop + assert_equal("", @event); + assert_raise(WIN32OLERuntimeError) { + ev.on_event {|*args| default_handler(*args)} + } + end - def test_on_event_hash_return - ev = WIN32OLE_EVENT.new(@ie) - ev.on_event('BeforeNavigate2'){|*args| - {:return => 1, :Cancel => true} - } - bl = @ie.locationURL - @ie.navigate("file:///#{@f}") - wait_ie - assert_equal(bl, @ie.locationURL) - end + def test_non_exist_event + assert_raise(RuntimeError) { + ev = WIN32OLE_EVENT.new(@db, 'XXXX') + } + dict = WIN32OLE.new('Scripting.Dictionary') + assert_raise(RuntimeError) { + ev = WIN32OLE_EVENT.new(dict) + } + end - def test_on_event_hash_return2 - ev = WIN32OLE_EVENT.new(@ie) - ev.on_event('BeforeNavigate2'){|*args| - {:Cancel => true} - } - bl = @ie.locationURL - @ie.navigate("file:///#{@f}") - wait_ie - assert_equal(bl, @ie.locationURL) - end + def test_on_event_with_outargs + ev = WIN32OLE_EVENT.new(@db) + @db.connectionString = 'XXX' # set illegal connection string + assert_raise(WIN32OLERuntimeError) { + @db.open + } + ev.on_event_with_outargs('WillConnect'){|*args| + args.last[0] = CONNSTR # ConnectionString = CONNSTR + } + @db.open + message_loop + assert(true) + end - def test_on_event_hash_return3 - ev = WIN32OLE_EVENT.new(@ie) - ev.on_event('BeforeNavigate2'){|*args| - {'Cancel' => true} - } - bl = @ie.locationURL - @ie.navigate("file:///#{@f}") - wait_ie - assert_equal(bl, @ie.locationURL) - end - - def test_on_event_hash_return4 - ev = WIN32OLE_EVENT.new(@ie) - ev.on_event('BeforeNavigate2'){|*args| - {'return' => 2, 'Cancel' => true} - } - bl = @ie.locationURL - @ie.navigate("file:///#{@f}") - wait_ie - assert_equal(bl, @ie.locationURL) - end + def test_on_event_hash_return + ev = WIN32OLE_EVENT.new(@db) + ev.on_event('WillConnect'){|*args| + {:return => 1, :ConnectionString => CONNSTR} + } + @db.connectionString = 'XXX' + @db.open + assert(true) + end - def test_on_event_hash_return5 - ev = WIN32OLE_EVENT.new(@ie) - ev.on_event('BeforeNavigate2'){|*args| - {6 => true} - } - bl = @ie.locationURL - @ie.navigate("file:///#{@f}") - wait_ie - assert_equal(bl, @ie.locationURL) - end + def test_on_event_hash_return2 + ev = WIN32OLE_EVENT.new(@db) + ev.on_event('WillConnect'){|*args| + {:ConnectionString => CONNSTR} + } + @db.connectionString = 'XXX' + @db.open + assert(true) + end - def test_off_event - ev = WIN32OLE_EVENT.new(@ie) - ev.on_event{handler1} - ev.off_event - @ie.navigate("file:///#{@f}") - wait_ie - assert_equal("", @event2) - end + def test_on_event_hash_return3 + ev = WIN32OLE_EVENT.new(@db) + ev.on_event('WillConnect'){|*args| + {'ConnectionString' => CONNSTR} + } + @db.connectionString = 'XXX' + @db.open + assert(true) + end - def test_off_event_arg - ev = WIN32OLE_EVENT.new(@ie) - ev.on_event('BeforeNavigate2'){handler1} - ev.off_event('BeforeNavigate2') - @ie.navigate("file:///#{@f}") - wait_ie - assert_equal("", @event2) - end + def test_on_event_hash_return4 + ev = WIN32OLE_EVENT.new(@db) + ev.on_event('WillConnect'){|*args| + {'return' => 1, 'ConnectionString' => CONNSTR} + } + @db.connectionString = 'XXX' + @db.open + assert(true) + end - def test_off_event_sym_arg - ev = WIN32OLE_EVENT.new(@ie) - ev.on_event('BeforeNavigate2'){handler1} - ev.off_event(:BeforeNavigate2) - @ie.navigate("file:///#{@f}") - wait_ie - assert_equal("", @event2) - end + def test_on_event_hash_return5 + ev = WIN32OLE_EVENT.new(@db) + ev.on_event('WillConnect'){|*args| + {0 => CONNSTR} + } + @db.connectionString = 'XXX' + @db.open + assert(true) + end - def handler1 - @event2 = "handler1" - end + def test_off_event + ev = WIN32OLE_EVENT.new(@db) + ev.on_event{handler1} + ev.off_event + @db.open + message_loop + assert_equal("", @event2) + end - def handler2 - @event2 = "handler2" - end + def test_off_event_arg + ev = WIN32OLE_EVENT.new(@db) + ev.on_event('WillConnect'){handler1} + ev.off_event('WillConnect') + @db.open + message_loop + assert_equal("", @event2) + end - def handler3(url) - @event3 += url - end + def test_off_event_arg2 + ev = WIN32OLE_EVENT.new(@db) + ev.on_event('WillConnect'){handler1} + ev.on_event('ConnectComplete'){handler1} + ev.off_event('WillConnect') + @db.open + message_loop + assert_equal("handler1", @event2) + end - def teardown - @ie.quit - message_loop - @ie = nil - i = 0 - begin - i += 1 - File.unlink(@f) if i < 10 - rescue Errno::EACCES + def test_off_event_sym_arg + ev = WIN32OLE_EVENT.new(@db) + ev.on_event('WillConnect'){handler1} + ev.off_event(:WillConnect) + @db.open message_loop - retry + assert_equal("", @event2) end - message_loop - GC.start - message_loop - end - class Handler1 - attr_reader :val1, :val2, :val3, :val4 - def initialize - @val1 = nil - @val2 = nil - @val3 = nil - @val4 = nil + def handler1 + @event2 = "handler1" end - def onStatusTextChange(t) - @val1 = t + + def handler2 + @event2 = "handler2" end - def onProgressChange(p, pmax) - @val2 = p - @val3 = pmax + + def handler3(*arg) + @event3 += arg[0] end - def onPropertyChange(p) - @val4 = p + + def teardown + if @db && @db.state == ADO::AdStateOpen + @db.close + end + message_loop + @db = nil end - end - class Handler2 - attr_reader :ev - def initialize - @ev = "" + class Handler1 + attr_reader :val1, :val2, :val3, :val4 + def initialize + @val1 = nil + @val2 = nil + @val3 = nil + @val4 = nil + end + def onWillConnect(conn, uid, pwd, opts, stat, pconn) + @val1 = conn + end + def onConnectComplete(err, stat, pconn) + @val2 = err + @val3 = stat + end + def onInfoMessage(err, stat, pconn) + @val4 = stat + end end - def method_missing(ev, *arg) - @ev += ev + + class Handler2 + attr_reader :ev + def initialize + @ev = "" + end + def method_missing(ev, *arg) + @ev += ev + end end - end - def test_handler1 - ev = WIN32OLE_EVENT.new(@ie) - h1 = Handler1.new - ev.handler = h1 - @ie.navigate("file:///#{@f}") - wait_ie - assert(h1.val1) - assert_equal(h1.val1, ev.handler.val1) - assert(h1.val2) - assert(h1.val3) - assert(h1.val4) - end + def test_handler1 + ev = WIN32OLE_EVENT.new(@db) + h1 = Handler1.new + ev.handler = h1 + @db.open + message_loop + assert_equal(CONNSTR, h1.val1) + assert_equal(h1.val1, ev.handler.val1) + assert_equal(nil, h1.val2) + assert_equal(ADO::AdStateOpen, h1.val3) + assert_equal(ADO::AdStateOpen, h1.val4) + end - def test_handler2 - ev = WIN32OLE_EVENT.new(@ie) - h2 = Handler2.new - ev.handler = h2 - @ie.navigate("file:///#{@f}") - wait_ie - assert(h2.ev != "") + def test_handler2 + ev = WIN32OLE_EVENT.new(@db) + h2 = Handler2.new + ev.handler = h2 + @db.open + message_loop + assert(h2.ev != "") + end end - end end diff --git a/test/win32ole/test_win32ole_variant_outarg.rb b/test/win32ole/test_win32ole_variant_outarg.rb new file mode 100644 index 0000000000..1e4892f7f1 --- /dev/null +++ b/test/win32ole/test_win32ole_variant_outarg.rb @@ -0,0 +1,69 @@ +begin + require 'win32ole' +rescue LoadError +end +require 'test/unit' +require 'fileutils' + +def ado_csv_installed? + installed = false + if defined?(WIN32OLE) + db = nil + begin + db = WIN32OLE.new('ADODB.Connection') + db.connectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=.;" + db.open + db.close + db = nil + installed = true + rescue + end + end + installed +end + +if defined?(WIN32OLE_VARIANT) + dotest = ado_csv_installed? + if !dotest + STDERR.puts("\n#{__FILE__} skipped(ActiveX Data Object Library not found.)") + end + if dotest + class TestWIN32OLE_VARIANT_OUTARG < Test::Unit::TestCase + module ADO + end + CONNSTR="Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=.;" + def setup + FileUtils.cp(File.dirname(__FILE__) + '/orig_data.csv', './data.csv') + @db = WIN32OLE.new('ADODB.Connection') + if !defined?(ADO::AdStateOpen) + WIN32OLE.const_load(@db, ADO) + end + @db.connectionString = CONNSTR + @db.open + end + + def test_variant_ref_and_argv + sql = "INSERT INTO data.csv VALUES (5, 'E')" + @db.execute(sql, -1) + c = WIN32OLE::ARGV[1] + assert_equal(1, WIN32OLE::ARGV[1]) + obj = WIN32OLE_VARIANT.new(nil, WIN32OLE::VARIANT::VT_VARIANT|WIN32OLE::VARIANT::VT_BYREF) + assert_equal(nil, obj.value) + @db.execute(sql , obj) + assert_equal(1, obj.value) + obj = WIN32OLE_VARIANT.new(-100, WIN32OLE::VARIANT::VT_VARIANT|WIN32OLE::VARIANT::VT_BYREF) + assert_equal(-100, obj.value) + @db.execute(sql, obj) + assert_equal(1, obj.value) + end + + def teardown + if @db && @db.state == ADO::AdStateOpen + @db.close + end + File.unlink("data.csv") + end + + end + end +end diff --git a/test/win32ole/test_win32ole_variant_with_ie.rb b/test/win32ole/test_win32ole_variant_with_ie.rb deleted file mode 100644 index 680f17ff54..0000000000 --- a/test/win32ole/test_win32ole_variant_with_ie.rb +++ /dev/null @@ -1,53 +0,0 @@ -# This is test script to check WIN32OLE_VARIANT using Internet Explorer -begin - require 'win32ole' -rescue LoadError -end -require 'test/unit' - -if defined?(WIN32OLE) - class TestWIN32OLE_VARIANT_WITH_IE < Test::Unit::TestCase - def create_temp_html - fso = WIN32OLE.new('Scripting.FileSystemObject') - dummy_file = fso.GetTempName + ".html" - cfolder = fso.getFolder(".") - f = cfolder.CreateTextFile(dummy_file) - f.writeLine("This is test HTML file for Win32OLE.") - f.close - dummy_path = cfolder.path + "\\" + dummy_file - dummy_path - end - def setup - @f = create_temp_html - @ie = WIN32OLE.new('InternetExplorer.Application') - @ie.visible = true - @ie.navigate("file:///#{@f}") - while @ie.busy - sleep 0.5 - end - end - def test_variant_ref_and_argv - @ie.execWB(19, 0, nil, -1) - size = WIN32OLE::ARGV[3] - assert(size >= 0) - - obj = WIN32OLE_VARIANT.new(nil, WIN32OLE::VARIANT::VT_VARIANT|WIN32OLE::VARIANT::VT_BYREF) - @ie.execWb(19, 0, nil, obj) - assert_equal(size, obj.value) - assert_equal(size, WIN32OLE::ARGV[3]) - - obj = WIN32OLE_VARIANT.new(-1, WIN32OLE::VARIANT::VT_VARIANT|WIN32OLE::VARIANT::VT_BYREF) - @ie.execWb(19, 0, nil, obj) - assert_equal(size, obj.value) - assert_equal(size, WIN32OLE::ARGV[3]) - end - - def teardown - File.unlink(@f) - if @ie - @ie.quit - @ie = nil - end - end - end -end -- cgit v1.2.3