Update SQLite3 Drivers
Update bundled drivers to version 1.2.4.
This commit is contained in:
parent
14561d998d
commit
65c08e1090
37 changed files with 7364 additions and 521 deletions
140
vendor/plugins/sqlite3-ruby/test/bm.rb
vendored
Normal file
140
vendor/plugins/sqlite3-ruby/test/bm.rb
vendored
Normal file
|
@ -0,0 +1,140 @@
|
|||
require 'benchmark'
|
||||
|
||||
N = 1000
|
||||
|
||||
$VERBOSE=nil
|
||||
|
||||
puts "file require"
|
||||
Benchmark.bm( 7 ) do |x|
|
||||
x.report('sqlite') do
|
||||
N.times do
|
||||
$".delete_if { |i| i =~ /sqlite/ }
|
||||
require 'sqlite'
|
||||
end
|
||||
end
|
||||
x.report('sqlite3') do
|
||||
N.times do
|
||||
$".delete_if { |i| i =~ /sqlite3/ }
|
||||
require 'sqlite3'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
puts
|
||||
puts "database creation..."
|
||||
Benchmark.bm( 7 ) do |x|
|
||||
x.report('sqlite') do
|
||||
N.times do
|
||||
File.delete "test.db" rescue nil
|
||||
SQLite::Database.open( "test.db" ).close
|
||||
end
|
||||
end
|
||||
x.report('sqlite3') do
|
||||
N.times do
|
||||
File.delete "test.db" rescue nil
|
||||
SQLite3::Database.open( "test.db" ).close
|
||||
end
|
||||
end
|
||||
end
|
||||
File.delete "test.db" rescue nil
|
||||
|
||||
SQLite::Database.open( "test.db" ).close
|
||||
SQLite3::Database.open( "test3.db" ).close
|
||||
|
||||
puts
|
||||
puts "database open..."
|
||||
Benchmark.bm( 7 ) do |x|
|
||||
x.report('sqlite') do
|
||||
N.times do
|
||||
SQLite::Database.open( "test.db" ).close
|
||||
end
|
||||
end
|
||||
x.report('sqlite3') do
|
||||
N.times do
|
||||
SQLite3::Database.open( "test3.db" ).close
|
||||
end
|
||||
end
|
||||
end
|
||||
File.delete "test.db" rescue nil
|
||||
File.delete "test3.db" rescue nil
|
||||
|
||||
db = SQLite::Database.open( "test.db" )
|
||||
db3 = SQLite3::Database.open( "test3.db" )
|
||||
|
||||
db.execute "create table foo (a,b)"
|
||||
db3.execute "create table foo (a,b)"
|
||||
|
||||
puts
|
||||
puts "insertions"
|
||||
Benchmark.bm( 7 ) do |x|
|
||||
x.report('sqlite') do
|
||||
db.transaction do
|
||||
N.times do |i|
|
||||
db.execute "insert into foo values (#{i}, #{i+1})"
|
||||
end
|
||||
end
|
||||
end
|
||||
x.report('sqlite3') do
|
||||
db3.transaction do
|
||||
N.times do |i|
|
||||
db3.execute "insert into foo values (#{i}, #{i+1})"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
puts
|
||||
puts "insertions using prepared statement"
|
||||
Benchmark.bm( 7 ) do |x|
|
||||
x.report('sqlite') do
|
||||
db.transaction do
|
||||
stmt = db.prepare "insert into foo values (?,?)"
|
||||
N.times { |i| stmt.execute i, i+1 }
|
||||
end
|
||||
end
|
||||
x.report('sqlite3') do
|
||||
db3.transaction do
|
||||
db3.prepare( "insert into foo values (?,?)" ) do |stmt|
|
||||
N.times { |i| stmt.execute i, i+1 }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
db.close
|
||||
db3.close
|
||||
File.delete "test.db" rescue nil
|
||||
File.delete "test3.db" rescue nil
|
||||
|
||||
db = SQLite::Database.open( "test.db" )
|
||||
db3 = SQLite3::Database.open( "test3.db" )
|
||||
|
||||
db.execute "create table foo (a,b)"
|
||||
db.execute "insert into foo values (1,2)"
|
||||
db.execute "insert into foo values (3,4)"
|
||||
db.execute "insert into foo values (5,6)"
|
||||
|
||||
db3.execute "create table foo (a,b)"
|
||||
db3.execute "insert into foo values (1,2)"
|
||||
db3.execute "insert into foo values (3,4)"
|
||||
db3.execute "insert into foo values (5,6)"
|
||||
|
||||
puts
|
||||
puts "queries"
|
||||
Benchmark.bm( 7 ) do |x|
|
||||
x.report('sqlite') do
|
||||
N.times do
|
||||
db.execute "select * from foo"
|
||||
end
|
||||
end
|
||||
x.report('sqlite3') do
|
||||
N.times do
|
||||
db3.execute "select * from foo"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
db.close
|
||||
db3.close
|
||||
File.delete "test.db" rescue nil
|
||||
File.delete "test3.db" rescue nil
|
292
vendor/plugins/sqlite3-ruby/test/driver/dl/tc_driver.rb
vendored
Normal file
292
vendor/plugins/sqlite3-ruby/test/driver/dl/tc_driver.rb
vendored
Normal file
|
@ -0,0 +1,292 @@
|
|||
if (ENV["SQLITE3_DRIVERS"] || "Native").split(/,/).include?("DL")
|
||||
$:.unshift "../../../lib"
|
||||
|
||||
require 'sqlite3/constants'
|
||||
require 'sqlite3/driver/dl/driver'
|
||||
require 'test/unit'
|
||||
|
||||
class TC_DL_Driver < Test::Unit::TestCase
|
||||
|
||||
def utf16ify( str )
|
||||
chars = str.split(//)
|
||||
chars.zip(["\0"] * chars.length).flatten.join
|
||||
end
|
||||
|
||||
def setup
|
||||
@driver = SQLite3::Driver::DL::Driver.new
|
||||
@dbname = "test.db"
|
||||
@db = nil
|
||||
end
|
||||
|
||||
def teardown
|
||||
@driver.close( @db ) rescue nil
|
||||
File.delete @dbname rescue nil
|
||||
end
|
||||
|
||||
def test_open
|
||||
result, @db = @driver.open( @dbname )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
assert File.exist?( @dbname )
|
||||
end
|
||||
|
||||
def test_open_utf16
|
||||
name = utf16ify( @dbname )
|
||||
result, @db = @driver.open( name, true )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
assert File.exist?( @dbname )
|
||||
end
|
||||
|
||||
def test_errmsg
|
||||
result, @db = @driver.open( @dbname )
|
||||
msg = @driver.errmsg( @db )
|
||||
assert_equal msg, "not an error"
|
||||
end
|
||||
|
||||
def test_errmsg16
|
||||
result, @db = @driver.open( @dbname )
|
||||
msg = @driver.errmsg( @db, true )
|
||||
assert_equal msg, utf16ify( "not an error" )
|
||||
end
|
||||
|
||||
def test_prepare
|
||||
result, @db = @driver.open( @dbname )
|
||||
sql = "create table foo ( a, b )"
|
||||
result, handle, remainder = @driver.prepare( @db, sql )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
assert_equal "", remainder
|
||||
@driver.finalize( handle )
|
||||
end
|
||||
|
||||
def test_prepare_error
|
||||
result, @db = @driver.open( @dbname )
|
||||
sql = "create tble foo ( a, b )"
|
||||
result, handle, remainder = @driver.prepare( @db, sql )
|
||||
assert_equal SQLite3::Constants::ErrorCode::ERROR, result
|
||||
end
|
||||
|
||||
def test_prepare_remainder
|
||||
result, @db = @driver.open( @dbname )
|
||||
sql = "create table foo ( a, b ); select * from foo"
|
||||
result, handle, remainder = @driver.prepare( @db, sql )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
assert_equal " select * from foo", remainder
|
||||
@driver.finalize( handle )
|
||||
end
|
||||
|
||||
def test_prepare16
|
||||
result, @db = @driver.open( @dbname )
|
||||
sql = utf16ify( "create table foo ( a, b )" )
|
||||
result, handle, remainder = @driver.prepare( @db, sql, true )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
assert_equal "", remainder
|
||||
@driver.finalize( handle )
|
||||
end
|
||||
|
||||
def test_prepare16_remainder
|
||||
result, @db = @driver.open( @dbname )
|
||||
sql = utf16ify( "create table foo ( a, b ); select * from foo" )
|
||||
result, handle, remainder = @driver.prepare( @db, sql, true )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
assert_equal utf16ify( " select * from foo" ), remainder
|
||||
@driver.finalize( handle )
|
||||
end
|
||||
|
||||
def test_complete
|
||||
assert @driver.complete?( "select * from foo;" )
|
||||
end
|
||||
|
||||
def test_complete_fail
|
||||
assert !@driver.complete?( "select * from foo" )
|
||||
end
|
||||
|
||||
def test_complete16
|
||||
assert @driver.complete?( utf16ify("select * from foo;"), true )
|
||||
end
|
||||
|
||||
def create_foo
|
||||
result, @db = @driver.open( @dbname )
|
||||
sql = "create table foo ( a, b )"
|
||||
result, handle, = @driver.prepare( @db, sql )
|
||||
@driver.step( handle )
|
||||
@driver.finalize( handle )
|
||||
end
|
||||
|
||||
def populate_foo
|
||||
create_foo
|
||||
sql = "insert into foo values ( 100, 200 )"
|
||||
result, handle, = @driver.prepare( @db, sql )
|
||||
@driver.step( handle )
|
||||
@driver.finalize( handle )
|
||||
end
|
||||
|
||||
def test_step
|
||||
populate_foo
|
||||
sql = "select * from foo"
|
||||
result, handle, = @driver.prepare( @db, sql )
|
||||
result = @driver.step( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::ROW, result
|
||||
result = @driver.step( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::DONE, result
|
||||
@driver.finalize( handle )
|
||||
end
|
||||
|
||||
def test_step_fail
|
||||
populate_foo
|
||||
sql = "select * from"
|
||||
result, handle, = @driver.prepare( @db, sql )
|
||||
result = @driver.step( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::MISUSE, result
|
||||
@driver.finalize( handle )
|
||||
end
|
||||
|
||||
def test_bind_blob
|
||||
create_foo
|
||||
sql = "insert into foo (b) values (?)"
|
||||
result, handle, = @driver.prepare( @db, sql )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.bind_blob( handle, 1, "a\0b\1c\2d\0e" )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.step( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::DONE, result
|
||||
result = @driver.finalize( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
sql = "select b from foo"
|
||||
result, handle, = @driver.prepare( @db, sql )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.step( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::ROW, result
|
||||
assert_equal "a\0b\1c\2d\0e", @driver.column_blob( handle, 0 )
|
||||
result = @driver.finalize( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
end
|
||||
|
||||
def test_bind_double
|
||||
create_foo
|
||||
sql = "insert into foo (b) values (?)"
|
||||
result, handle, = @driver.prepare( @db, sql )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.bind_double( handle, 1, 3.14 )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.step( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::DONE, result
|
||||
result = @driver.finalize( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
sql = "select b from foo"
|
||||
result, handle, = @driver.prepare( @db, sql )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.step( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::ROW, result
|
||||
assert_equal 3.14, @driver.column_double( handle, 0 )
|
||||
result = @driver.finalize( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
end
|
||||
|
||||
def test_bind_int
|
||||
create_foo
|
||||
sql = "insert into foo (b) values (?)"
|
||||
result, handle, = @driver.prepare( @db, sql )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.bind_int( handle, 1, 14 )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.step( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::DONE, result
|
||||
result = @driver.finalize( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
sql = "select b from foo"
|
||||
result, handle, = @driver.prepare( @db, sql )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.step( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::ROW, result
|
||||
assert_equal 14, @driver.column_int( handle, 0 )
|
||||
result = @driver.finalize( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
end
|
||||
|
||||
def test_bind_null
|
||||
create_foo
|
||||
sql = "insert into foo (b) values (?)"
|
||||
result, handle, = @driver.prepare( @db, sql )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.bind_null( handle, 1 )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.step( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::DONE, result
|
||||
result = @driver.finalize( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
sql = "select b from foo"
|
||||
result, handle, = @driver.prepare( @db, sql )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.step( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::ROW, result
|
||||
assert_equal SQLite3::Constants::ColumnType::NULL,
|
||||
@driver.column_type( handle, 0 )
|
||||
result = @driver.finalize( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
end
|
||||
|
||||
def test_bind_text
|
||||
create_foo
|
||||
sql = "insert into foo (b) values (?)"
|
||||
result, handle, = @driver.prepare( @db, sql )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.bind_text( handle, 1, "hello, world" )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.step( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::DONE, result
|
||||
result = @driver.finalize( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
sql = "select b from foo"
|
||||
result, handle, = @driver.prepare( @db, sql )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.step( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::ROW, result
|
||||
assert_equal "hello, world", @driver.column_text( handle, 0 )
|
||||
result = @driver.finalize( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
end
|
||||
|
||||
def test_bind_text16
|
||||
create_foo
|
||||
sql = "insert into foo (b) values (?)"
|
||||
result, handle, = @driver.prepare( @db, sql )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.bind_text( handle, 1, utf16ify("hello, world"), true )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.step( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::DONE, result
|
||||
result = @driver.finalize( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
sql = "select b from foo"
|
||||
result, handle, = @driver.prepare( @db, sql )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.step( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::ROW, result
|
||||
assert_equal "hello, world", @driver.column_text( handle, 0 )
|
||||
result = @driver.finalize( handle )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
end
|
||||
|
||||
def test_bind_parameter_index
|
||||
create_foo
|
||||
sql = "insert into foo (b) values (:hello)"
|
||||
result, handle, = @driver.prepare( @db, sql )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
result = @driver.bind_parameter_index( handle, ":hello" )
|
||||
assert_equal 1, result
|
||||
result = @driver.bind_parameter_index( handle, ":foo" )
|
||||
assert_equal 0, result
|
||||
@driver.finalize( handle )
|
||||
end
|
||||
|
||||
def test_bind_parameter_name
|
||||
create_foo
|
||||
sql = "insert into foo (a,b) values (?,:foo)"
|
||||
result, handle, = @driver.prepare( @db, sql )
|
||||
assert_equal SQLite3::Constants::ErrorCode::OK, result
|
||||
assert_nil nil, @driver.bind_parameter_name(handle,1)
|
||||
assert_equal ":foo", @driver.bind_parameter_name(handle,2)
|
||||
@driver.finalize( handle )
|
||||
end
|
||||
|
||||
end
|
||||
end
|
45
vendor/plugins/sqlite3-ruby/test/mocks.rb
vendored
Normal file
45
vendor/plugins/sqlite3-ruby/test/mocks.rb
vendored
Normal file
|
@ -0,0 +1,45 @@
|
|||
require 'rubygems'
|
||||
gem 'mocha'
|
||||
|
||||
require 'mocha'
|
||||
|
||||
class Driver < Mocha::Mock
|
||||
def initialize
|
||||
super
|
||||
stubs( :open ).returns([0, 'cookie'])
|
||||
stubs( :close ).returns(0)
|
||||
stubs( :complete? ).returns(0)
|
||||
stubs( :errmsg ).returns('')
|
||||
stubs( :errcode ).returns(0)
|
||||
stubs( :trace ).returns(nil)
|
||||
stubs( :set_authorizer ).returns(0)
|
||||
stubs( :prepare ).returns([0, 'stmt', 'remainder'])
|
||||
stubs( :finalize ).returns(0)
|
||||
stubs( :changes ).returns(14)
|
||||
stubs( :total_changes ).returns(28)
|
||||
stubs( :interrupt ).returns(0)
|
||||
end
|
||||
end
|
||||
|
||||
class MockResultSet < Mocha::Mock
|
||||
def initialize
|
||||
super
|
||||
stubs( :each ).yields(['foo'])
|
||||
stubs( :columns ).returns(['name'])
|
||||
end
|
||||
end
|
||||
|
||||
class Statement < Mocha::Mock
|
||||
attr_reader :handle
|
||||
attr_reader :sql
|
||||
attr_reader :last_result
|
||||
|
||||
def initialize( handle, sql )
|
||||
super()
|
||||
@handle = handle
|
||||
@sql = sql
|
||||
stubs( :close ).returns(0)
|
||||
stubs( :remainder ).returns('')
|
||||
stubs( :execute ).returns(MockResultSet.new)
|
||||
end
|
||||
end
|
126
vendor/plugins/sqlite3-ruby/test/native-vs-dl.rb
vendored
Normal file
126
vendor/plugins/sqlite3-ruby/test/native-vs-dl.rb
vendored
Normal file
|
@ -0,0 +1,126 @@
|
|||
$:.unshift "../lib", "../ext/sqlite3_api"
|
||||
|
||||
require 'sqlite3'
|
||||
|
||||
require 'benchmark'
|
||||
|
||||
N = 1000
|
||||
|
||||
$VERBOSE=nil
|
||||
|
||||
puts "database creation..."
|
||||
Benchmark.bm( 7 ) do |x|
|
||||
x.report('dl') do
|
||||
N.times do
|
||||
File.delete "test.db" rescue nil
|
||||
SQLite3::Database.open( "test.db", :driver => "DL" ).close
|
||||
end
|
||||
end
|
||||
x.report('native') do
|
||||
N.times do
|
||||
File.delete "test.db" rescue nil
|
||||
SQLite3::Database.open( "test.db", :driver => "Native" ).close
|
||||
end
|
||||
end
|
||||
end
|
||||
File.delete "test.db" rescue nil
|
||||
|
||||
SQLite3::Database.open( "test.db" ).close
|
||||
|
||||
puts
|
||||
puts "database open..."
|
||||
Benchmark.bm( 7 ) do |x|
|
||||
x.report('dl') do
|
||||
N.times do
|
||||
SQLite3::Database.open( "test.db", :driver => "DL" ).close
|
||||
end
|
||||
end
|
||||
x.report('native') do
|
||||
N.times do
|
||||
SQLite3::Database.open( "test.db", :driver => "Native" ).close
|
||||
end
|
||||
end
|
||||
end
|
||||
File.delete "test.db" rescue nil
|
||||
|
||||
dl = SQLite3::Database.open( "test-dl.db", :driver => "DL" )
|
||||
native = SQLite3::Database.open( "test-native.db", :driver => "Native" )
|
||||
|
||||
dl.execute "create table foo (a,b)"
|
||||
native.execute "create table foo (a,b)"
|
||||
|
||||
puts
|
||||
puts "insertions"
|
||||
Benchmark.bm( 7 ) do |x|
|
||||
x.report('dl') do
|
||||
dl.transaction do
|
||||
N.times do |i|
|
||||
dl.execute "insert into foo values (#{i}, #{i+1})"
|
||||
end
|
||||
end
|
||||
end
|
||||
x.report('native') do
|
||||
native.transaction do
|
||||
N.times do |i|
|
||||
native.execute "insert into foo values (#{i}, #{i+1})"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
puts
|
||||
puts "insertions using prepared statement"
|
||||
Benchmark.bm( 7 ) do |x|
|
||||
x.report('dl') do
|
||||
dl.transaction do
|
||||
dl.prepare "insert into foo values (?,?)" do |stmt|
|
||||
N.times { |i| stmt.execute i, i+1 }
|
||||
end
|
||||
end
|
||||
end
|
||||
x.report('native') do
|
||||
native.transaction do
|
||||
native.prepare( "insert into foo values (?,?)" ) do |stmt|
|
||||
N.times { |i| stmt.execute i, i+1 }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
dl.close
|
||||
native.close
|
||||
File.delete "test-dl.db" rescue nil
|
||||
File.delete "test-native.db" rescue nil
|
||||
|
||||
dl = SQLite3::Database.open( "test-dl.db", :driver => "DL" )
|
||||
native = SQLite3::Database.open( "test-native.db", :driver => "Native" )
|
||||
|
||||
dl.execute "create table foo (a,b)"
|
||||
dl.execute "insert into foo values (1,2)"
|
||||
dl.execute "insert into foo values (3,4)"
|
||||
dl.execute "insert into foo values (5,6)"
|
||||
|
||||
native.execute "create table foo (a,b)"
|
||||
native.execute "insert into foo values (1,2)"
|
||||
native.execute "insert into foo values (3,4)"
|
||||
native.execute "insert into foo values (5,6)"
|
||||
|
||||
puts
|
||||
puts "queries"
|
||||
Benchmark.bm( 7 ) do |x|
|
||||
x.report('dl') do
|
||||
N.times do
|
||||
dl.execute "select * from foo"
|
||||
end
|
||||
end
|
||||
x.report('native') do
|
||||
N.times do
|
||||
native.execute "select * from foo"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
dl.close
|
||||
native.close
|
||||
File.delete "test-dl.db" rescue nil
|
||||
File.delete "test-native.db" rescue nil
|
198
vendor/plugins/sqlite3-ruby/test/tc_database.rb
vendored
Normal file
198
vendor/plugins/sqlite3-ruby/test/tc_database.rb
vendored
Normal file
|
@ -0,0 +1,198 @@
|
|||
$:.unshift "../lib"
|
||||
|
||||
require 'sqlite3/database'
|
||||
require 'test/unit'
|
||||
|
||||
require 'mocks'
|
||||
|
||||
class TC_Database_Init < Test::Unit::TestCase
|
||||
def test_new
|
||||
# any_instance fails here...
|
||||
driver = Driver.new
|
||||
driver.expects(:open).once.with('foo.db', false).returns([0, 'cookie'])
|
||||
Driver.stubs(:new).returns(driver)
|
||||
db = SQLite3::Database.new( 'foo.db', :driver => Driver )
|
||||
assert !db.closed?
|
||||
assert !db.results_as_hash
|
||||
assert !db.type_translation
|
||||
end
|
||||
|
||||
def test_open
|
||||
driver = Driver.new
|
||||
driver.expects(:open).once.with('foo.db', false).returns([0, 'cookie'])
|
||||
Driver.stubs(:new).returns(driver)
|
||||
db = SQLite3::Database.open( "foo.db", :driver => Driver )
|
||||
assert !db.closed?
|
||||
assert !db.results_as_hash
|
||||
assert !db.type_translation
|
||||
end
|
||||
|
||||
def test_with_type_translation
|
||||
db = SQLite3::Database.open( "foo.db", :driver => Driver,
|
||||
:type_translation => true )
|
||||
assert db.type_translation
|
||||
end
|
||||
|
||||
def test_with_results_as_hash
|
||||
db = SQLite3::Database.open( "foo.db", :driver => Driver,
|
||||
:results_as_hash => true )
|
||||
assert db.results_as_hash
|
||||
end
|
||||
|
||||
def test_with_type_translation_and_results_as_hash
|
||||
db = SQLite3::Database.open( "foo.db", :driver => Driver,
|
||||
:results_as_hash => true,
|
||||
:type_translation => true )
|
||||
assert db.results_as_hash
|
||||
assert db.type_translation
|
||||
end
|
||||
end
|
||||
|
||||
class TC_Database < Test::Unit::TestCase
|
||||
def setup
|
||||
@db = SQLite3::Database.open( "foo.db",
|
||||
:driver => Driver, :statement_factory => Statement )
|
||||
end
|
||||
|
||||
def test_quote
|
||||
assert_equal "''one''two''three''", SQLite3::Database.quote(
|
||||
"'one'two'three'" )
|
||||
end
|
||||
|
||||
def test_complete
|
||||
Driver.any_instance.expects(:complete?)
|
||||
@db.complete? "foo"
|
||||
end
|
||||
|
||||
def test_errmsg
|
||||
Driver.any_instance.expects(:errmsg)
|
||||
@db.errmsg
|
||||
end
|
||||
|
||||
def test_errcode
|
||||
Driver.any_instance.expects(:errcode)
|
||||
@db.errcode
|
||||
end
|
||||
|
||||
def test_translator
|
||||
translator = @db.translator
|
||||
assert_instance_of SQLite3::Translator, translator
|
||||
end
|
||||
|
||||
def test_close
|
||||
Driver.any_instance.expects(:close).returns(0)
|
||||
@db.close
|
||||
assert @db.closed?
|
||||
Driver.any_instance.expects(:close).never
|
||||
@db.close
|
||||
end
|
||||
|
||||
def test_trace
|
||||
Driver.any_instance.expects(:trace).with('cookie', 15)
|
||||
@db.trace( 15 ) { "foo" }
|
||||
# assert_equal 1, driver.mock_blocks[:trace].length
|
||||
end
|
||||
|
||||
def test_authorizer
|
||||
Driver.any_instance.expects(:set_authorizer).with('cookie', 15).returns(0)
|
||||
@db.authorizer( 15 ) { "foo" }
|
||||
# assert_equal 1, driver.mock_blocks[:set_authorizer].length
|
||||
end
|
||||
|
||||
def test_prepare_no_block
|
||||
Statement.any_instance.expects(:close).never
|
||||
assert_nothing_raised { @db.prepare( "foo" ) }
|
||||
end
|
||||
|
||||
def test_prepare_with_block
|
||||
called = false
|
||||
# any_instance fails here...
|
||||
statement = Statement.new('cookie', 'foo')
|
||||
statement.expects(:close).once
|
||||
Statement.stubs(:new).returns(statement)
|
||||
@db.prepare( "foo" ) { |stmt| called = true }
|
||||
assert called
|
||||
end
|
||||
|
||||
def test_execute_no_block
|
||||
# any_instance fails here...
|
||||
statement = Statement.new('cookie', 'foo')
|
||||
statement.expects(:execute).with('bar', 'baz').returns(MockResultSet.new)
|
||||
Statement.stubs(:new).returns(statement)
|
||||
MockResultSet.any_instance.stubs(:inject).returns([['foo']])
|
||||
result = @db.execute( "foo", "bar", "baz" )
|
||||
assert_equal [["foo"]], result
|
||||
end
|
||||
|
||||
def test_execute_with_block
|
||||
called = false
|
||||
# any_instance fails here...
|
||||
statement = Statement.new('cookie', 'foo')
|
||||
statement.expects(:execute).with('bar', 'baz').returns(MockResultSet.new)
|
||||
Statement.stubs(:new).returns(statement)
|
||||
@db.execute( "foo", "bar", "baz" ) do |row|
|
||||
called = true
|
||||
assert_equal ["foo"], row
|
||||
end
|
||||
|
||||
assert called
|
||||
end
|
||||
|
||||
def test_execute2_no_block
|
||||
# any_instance fails here...
|
||||
statement = Statement.new('cookie', 'foo')
|
||||
statement.expects(:execute).with('bar', 'baz').returns(MockResultSet.new)
|
||||
Statement.stubs(:new).returns(statement)
|
||||
MockResultSet.any_instance.stubs(:inject).returns([['name'], ['foo']])
|
||||
result = @db.execute2( "foo", "bar", "baz" )
|
||||
assert_equal [["name"],["foo"]], result
|
||||
end
|
||||
|
||||
def test_execute2_with_block
|
||||
called = false
|
||||
parts = [ ["name"],["foo"] ]
|
||||
# any_instance fails here...
|
||||
statement = Statement.new('cookie', 'foo')
|
||||
statement.expects(:execute).with('bar', 'baz').returns(MockResultSet.new)
|
||||
Statement.stubs(:new).returns(statement)
|
||||
@db.execute2( "foo", "bar", "baz" ) do |row|
|
||||
called = true
|
||||
assert_equal parts.shift, row
|
||||
end
|
||||
|
||||
assert called
|
||||
end
|
||||
|
||||
def test_execute_batch
|
||||
# any_instance fails here...
|
||||
statement = Statement.new('cookie', 'foo')
|
||||
statement.expects(:execute).with('bar', 'baz').returns(MockResultSet.new)
|
||||
Statement.stubs(:new).returns(statement)
|
||||
@db.execute_batch( "foo", "bar", "baz" )
|
||||
end
|
||||
|
||||
def test_get_first_row
|
||||
result = @db.get_first_row( "foo", "bar", "baz" )
|
||||
assert_equal ["foo"], result
|
||||
end
|
||||
|
||||
def test_get_first_value
|
||||
result = @db.get_first_value( "foo", "bar", "baz" )
|
||||
assert_equal "foo", result
|
||||
end
|
||||
|
||||
def test_changes
|
||||
Driver.any_instance.expects(:changes).returns(14)
|
||||
assert_equal 14, @db.changes
|
||||
end
|
||||
|
||||
def test_total_changes
|
||||
Driver.any_instance.expects(:total_changes).returns(28)
|
||||
assert_equal 28, @db.total_changes
|
||||
end
|
||||
|
||||
def test_interrupt
|
||||
Driver.any_instance.expects(:interrupt)
|
||||
@db.interrupt
|
||||
end
|
||||
end
|
21
vendor/plugins/sqlite3-ruby/test/tc_errors.rb
vendored
Normal file
21
vendor/plugins/sqlite3-ruby/test/tc_errors.rb
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
$:.unshift "../lib"
|
||||
|
||||
require 'sqlite3/errors'
|
||||
require 'test/unit'
|
||||
require 'mocha'
|
||||
|
||||
class TC_Errors < Test::Unit::TestCase
|
||||
(1..26).each do |code|
|
||||
define_method( "test_error_code_%02d" % code ) do
|
||||
db = stub('database', :errmsg => 'message')
|
||||
begin
|
||||
SQLite3::Error.check( code, db )
|
||||
rescue SQLite3::Exception => e
|
||||
assert_instance_of SQLite3::EXCEPTIONS[code], e
|
||||
assert_equal code, e.code
|
||||
assert_equal code, e.class.code
|
||||
assert_equal "message", e.message
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
1044
vendor/plugins/sqlite3-ruby/test/tc_integration.rb
vendored
Normal file
1044
vendor/plugins/sqlite3-ruby/test/tc_integration.rb
vendored
Normal file
File diff suppressed because it is too large
Load diff
6
vendor/plugins/sqlite3-ruby/test/tests.rb
vendored
Normal file
6
vendor/plugins/sqlite3-ruby/test/tests.rb
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
Dir.chdir File.dirname( __FILE__ )
|
||||
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
|
||||
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../ext/sqlite3_api"
|
||||
p $LOAD_PATH
|
||||
|
||||
Dir["**/tc_*.rb"].each { |file| load file }
|
Loading…
Add table
Add a link
Reference in a new issue