mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 9e5f063138
			
		
	
	
		9e5f063138
		
	
	
	
	
		
			
			git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45257 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			68 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| 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)
 | |
|     class TestWIN32OLE_VARIANT_OUTARG < Test::Unit::TestCase
 | |
|       module ADO
 | |
|       end
 | |
|       CONNSTR="Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=.;"
 | |
|       def setup
 | |
|         return if !ado_csv_installed?
 | |
| 
 | |
|         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
 | |
|         if !ado_csv_installed?
 | |
|           skip("ActiveX Data Object Library not found")
 | |
|         end
 | |
|         sql = "INSERT INTO data.csv VALUES (5, 'E')"
 | |
|         @db.execute(sql, -1)
 | |
|         c = WIN32OLE::ARGV[1]
 | |
|         assert_equal(1, c)
 | |
|         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
 | |
|         return if !ado_csv_installed?
 | |
|         if @db && @db.state == ADO::AdStateOpen
 | |
|           @db.close
 | |
|         end
 | |
|         File.unlink("data.csv")
 | |
|       end
 | |
|     end
 | |
| end
 |