diff options
author | Rob Holland <rob@inversepath.com> | 2008-05-13 22:52:01 +0100 |
---|---|---|
committer | Rob Holland <rob@inversepath.com> | 2008-05-13 22:52:01 +0100 |
commit | 2993b5e37d233e6346a801aea73b231675008363 (patch) | |
tree | bf5e411f2af2070b40fc4b5c39bdc432f200fd15 | |
parent | f73726f40cc62ae21777c7cc001a67b7eaa1018c (diff) | |
download | third_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.rb | 69 | ||||
-rw-r--r-- | test/tc_database.rb | 80 |
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 |