summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Holland <rob@inversepath.com>2008-05-13 22:52:01 +0100
committerRob Holland <rob@inversepath.com>2008-05-13 22:52:01 +0100
commit2993b5e37d233e6346a801aea73b231675008363 (patch)
treebf5e411f2af2070b40fc4b5c39bdc432f200fd15
parentf73726f40cc62ae21777c7cc001a67b7eaa1018c (diff)
downloadthird_party-sqlite3-ruby-2993b5e37d233e6346a801aea73b231675008363.tar.gz
third_party-sqlite3-ruby-2993b5e37d233e6346a801aea73b231675008363.tar.xz
third_party-sqlite3-ruby-2993b5e37d233e6346a801aea73b231675008363.zip
Move to mocha instead of flexmock.
-rw-r--r--test/mocks.rb69
-rw-r--r--test/tc_database.rb80
2 files changed, 69 insertions, 80 deletions
diff --git a/test/mocks.rb b/test/mocks.rb
index 7d2a161..f02eed0 100644
--- a/test/mocks.rb
+++ b/test/mocks.rb
@@ -1,70 +1,45 @@
require 'rubygems'
-gem 'flexmock', '< 0.1.0'
+gem 'mocha'
-require 'flexmock'
-
-class FlexMockWithArgs < FlexMock
- attr_reader :mock_args
- attr_reader :mock_blocks
+require 'mocha'
+class Driver < Mocha::Mock
def initialize
super
- @mock_args = Hash.new { |h,k| h[k] = [] }
- @mock_blocks = Hash.new { |h,k| h[k] = [] }
- end
-
- def method_missing( sym, *args, &block )
- @mock_args[sym] << args
- @mock_blocks[sym] << block
- 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 Driver < FlexMockWithArgs
- def self.instance
- @@instance
- end
-
+class MockResultSet < Mocha::Mock
def initialize
super
- @@instance = self
- mock_handle( :open ) { [0,"cookie"] }
- mock_handle( :close ) { 0 }
- mock_handle( :complete? ) { 0 }
- mock_handle( :errmsg ) { "" }
- mock_handle( :errcode ) { 0 }
- mock_handle( :trace ) { nil }
- mock_handle( :set_authorizer ) { 0 }
- mock_handle( :prepare ) { [0,"stmt", "remainder"] }
- mock_handle( :finalize ) { 0 }
- mock_handle( :changes ) { 14 }
- mock_handle( :total_changes ) { 28 }
- mock_handle( :interrupt ) { 0 }
+ stubs( :each ).yields(['foo'])
+ stubs( :columns ).returns(['name'])
end
end
-class Statement < FlexMockWithArgs
- def self.instance
- @@instance
- end
-
+class Statement < Mocha::Mock
attr_reader :handle
attr_reader :sql
attr_reader :last_result
def initialize( handle, sql )
super()
- @@instance = self
@handle = handle
@sql = sql
- mock_handle( :close ) { 0 }
- mock_handle( :remainder ) { "" }
- mock_handle( :execute ) do
- @last_result = FlexMockWithArgs.new
- @last_result.mock_handle( :each ) { @last_result.mock_blocks[:each].last.call ["foo"] }
- @last_result.mock_handle( :inject ) { |a,| @last_result.mock_blocks[:inject].last.call a, ["foo"] }
- @last_result.mock_handle( :columns ) { ["name"] }
- @last_result
- end
+ stubs( :close ).returns(0)
+ stubs( :remainder ).returns('')
+ stubs( :execute ).returns(MockResultSet.new)
end
end
diff --git a/test/tc_database.rb b/test/tc_database.rb
index 4bb6891..bddee6e 100644
--- a/test/tc_database.rb
+++ b/test/tc_database.rb
@@ -7,19 +7,22 @@ require 'mocks'
class TC_Database_Init < Test::Unit::TestCase
def test_new
- db = SQLite3::Database.new( "foo.db", :driver => Driver )
- assert_equal 1, Driver.instance.mock_count(:open)
+ # 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_equal [["foo.db",false]], Driver.instance.mock_args[:open]
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_equal 1, Driver.instance.mock_count(:open)
assert !db.closed?
- assert_equal [["foo.db",false]], Driver.instance.mock_args[:open]
assert !db.results_as_hash
assert !db.type_translation
end
@@ -57,18 +60,18 @@ class TC_Database < Test::Unit::TestCase
end
def test_complete
+ Driver.any_instance.expects(:complete?)
@db.complete? "foo"
- assert_equal 1, Driver.instance.mock_count( :complete? )
end
def test_errmsg
+ Driver.any_instance.expects(:errmsg)
@db.errmsg
- assert_equal 1, Driver.instance.mock_count( :errmsg )
end
def test_errcode
+ Driver.any_instance.expects(:errcode)
@db.errcode
- assert_equal 1, Driver.instance.mock_count( :errcode )
end
def test_translator
@@ -77,84 +80,95 @@ class TC_Database < Test::Unit::TestCase
end
def test_close
+ Driver.any_instance.expects(:close).returns(0)
@db.close
- assert_equal 1, Driver.instance.mock_count( :close )
assert @db.closed?
+ Driver.any_instance.expects(:close).never
@db.close
- assert_equal 1, Driver.instance.mock_count( :close )
end
def test_trace
+ Driver.any_instance.expects(:trace).with('cookie', 15)
@db.trace( 15 ) { "foo" }
- driver = Driver.instance
- assert_equal 1, driver.mock_count( :trace )
- assert_equal [[ "cookie", 15 ]], driver.mock_args[:trace]
- assert_equal 1, driver.mock_blocks[:trace].length
+ # 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" }
- driver = Driver.instance
- assert_equal 1, driver.mock_count( :set_authorizer )
- assert_equal [[ "cookie", 15 ]], driver.mock_args[:set_authorizer]
- assert_equal 1, driver.mock_blocks[:set_authorizer].length
+ # 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" ) }
- assert_equal 0, Statement.instance.mock_count( :close )
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
- assert_equal 1, Statement.instance.mock_count( :close )
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" )
- stmt = Statement.instance
assert_equal [["foo"]], result
- assert_equal [["bar", "baz"]], stmt.mock_args[:execute]
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
- stmt = Statement.instance
assert called
- assert_equal [["bar", "baz"]], stmt.mock_args[:execute]
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" )
- stmt = Statement.instance
assert_equal [["name"],["foo"]], result
- assert_equal [["bar", "baz"]], stmt.mock_args[:execute]
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
- stmt = Statement.instance
assert called
- assert_equal [["bar", "baz"]], stmt.mock_args[:execute]
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" )
- stmt = Statement.instance
- assert_equal [["bar", "baz"]], stmt.mock_args[:execute]
end
def test_get_first_row
@@ -168,17 +182,17 @@ class TC_Database < Test::Unit::TestCase
end
def test_changes
+ Driver.any_instance.expects(:changes).returns(14)
assert_equal 14, @db.changes
- assert_equal 1, Driver.instance.mock_count(:changes)
end
def test_total_changes
+ Driver.any_instance.expects(:total_changes).returns(28)
assert_equal 28, @db.total_changes
- assert_equal 1, Driver.instance.mock_count(:total_changes)
end
def test_interrupt
+ Driver.any_instance.expects(:interrupt)
@db.interrupt
- assert_equal 1, Driver.instance.mock_count(:interrupt)
end
end