sqlite3-ironruby 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,126 @@
1
+ $:.unshift "../lib", "../ext/sqlite3_api"
2
+
3
+ require 'sqlite3'
4
+
5
+ require 'benchmark'
6
+
7
+ N = 1000
8
+
9
+ $VERBOSE=nil
10
+
11
+ puts "database creation..."
12
+ Benchmark.bm( 7 ) do |x|
13
+ x.report('dl') do
14
+ N.times do
15
+ File.delete "test.db" rescue nil
16
+ SQLite3::Database.open( "test.db", :driver => "DL" ).close
17
+ end
18
+ end
19
+ x.report('native') do
20
+ N.times do
21
+ File.delete "test.db" rescue nil
22
+ SQLite3::Database.open( "test.db", :driver => "Native" ).close
23
+ end
24
+ end
25
+ end
26
+ File.delete "test.db" rescue nil
27
+
28
+ SQLite3::Database.open( "test.db" ).close
29
+
30
+ puts
31
+ puts "database open..."
32
+ Benchmark.bm( 7 ) do |x|
33
+ x.report('dl') do
34
+ N.times do
35
+ SQLite3::Database.open( "test.db", :driver => "DL" ).close
36
+ end
37
+ end
38
+ x.report('native') do
39
+ N.times do
40
+ SQLite3::Database.open( "test.db", :driver => "Native" ).close
41
+ end
42
+ end
43
+ end
44
+ File.delete "test.db" rescue nil
45
+
46
+ dl = SQLite3::Database.open( "test-dl.db", :driver => "DL" )
47
+ native = SQLite3::Database.open( "test-native.db", :driver => "Native" )
48
+
49
+ dl.execute "create table foo (a,b)"
50
+ native.execute "create table foo (a,b)"
51
+
52
+ puts
53
+ puts "insertions"
54
+ Benchmark.bm( 7 ) do |x|
55
+ x.report('dl') do
56
+ dl.transaction do
57
+ N.times do |i|
58
+ dl.execute "insert into foo values (#{i}, #{i+1})"
59
+ end
60
+ end
61
+ end
62
+ x.report('native') do
63
+ native.transaction do
64
+ N.times do |i|
65
+ native.execute "insert into foo values (#{i}, #{i+1})"
66
+ end
67
+ end
68
+ end
69
+ end
70
+
71
+ puts
72
+ puts "insertions using prepared statement"
73
+ Benchmark.bm( 7 ) do |x|
74
+ x.report('dl') do
75
+ dl.transaction do
76
+ dl.prepare "insert into foo values (?,?)" do |stmt|
77
+ N.times { |i| stmt.execute i, i+1 }
78
+ end
79
+ end
80
+ end
81
+ x.report('native') do
82
+ native.transaction do
83
+ native.prepare( "insert into foo values (?,?)" ) do |stmt|
84
+ N.times { |i| stmt.execute i, i+1 }
85
+ end
86
+ end
87
+ end
88
+ end
89
+
90
+ dl.close
91
+ native.close
92
+ File.delete "test-dl.db" rescue nil
93
+ File.delete "test-native.db" rescue nil
94
+
95
+ dl = SQLite3::Database.open( "test-dl.db", :driver => "DL" )
96
+ native = SQLite3::Database.open( "test-native.db", :driver => "Native" )
97
+
98
+ dl.execute "create table foo (a,b)"
99
+ dl.execute "insert into foo values (1,2)"
100
+ dl.execute "insert into foo values (3,4)"
101
+ dl.execute "insert into foo values (5,6)"
102
+
103
+ native.execute "create table foo (a,b)"
104
+ native.execute "insert into foo values (1,2)"
105
+ native.execute "insert into foo values (3,4)"
106
+ native.execute "insert into foo values (5,6)"
107
+
108
+ puts
109
+ puts "queries"
110
+ Benchmark.bm( 7 ) do |x|
111
+ x.report('dl') do
112
+ N.times do
113
+ dl.execute "select * from foo"
114
+ end
115
+ end
116
+ x.report('native') do
117
+ N.times do
118
+ native.execute "select * from foo"
119
+ end
120
+ end
121
+ end
122
+
123
+ dl.close
124
+ native.close
125
+ File.delete "test-dl.db" rescue nil
126
+ File.delete "test-native.db" rescue nil
@@ -0,0 +1,198 @@
1
+ $:.unshift "../lib"
2
+
3
+ require 'sqlite3/database'
4
+ require 'test/unit'
5
+
6
+ require 'mocks'
7
+
8
+ class TC_Database_Init < Test::Unit::TestCase
9
+ def test_new
10
+ # any_instance fails here...
11
+ driver = Driver.new
12
+ driver.expects(:open).once.with('foo.db', false).returns([0, 'cookie'])
13
+ Driver.stubs(:new).returns(driver)
14
+ db = SQLite3::Database.new( 'foo.db', :driver => Driver )
15
+ assert !db.closed?
16
+ assert !db.results_as_hash
17
+ assert !db.type_translation
18
+ end
19
+
20
+ def test_open
21
+ driver = Driver.new
22
+ driver.expects(:open).once.with('foo.db', false).returns([0, 'cookie'])
23
+ Driver.stubs(:new).returns(driver)
24
+ db = SQLite3::Database.open( "foo.db", :driver => Driver )
25
+ assert !db.closed?
26
+ assert !db.results_as_hash
27
+ assert !db.type_translation
28
+ end
29
+
30
+ def test_with_type_translation
31
+ db = SQLite3::Database.open( "foo.db", :driver => Driver,
32
+ :type_translation => true )
33
+ assert db.type_translation
34
+ end
35
+
36
+ def test_with_results_as_hash
37
+ db = SQLite3::Database.open( "foo.db", :driver => Driver,
38
+ :results_as_hash => true )
39
+ assert db.results_as_hash
40
+ end
41
+
42
+ def test_with_type_translation_and_results_as_hash
43
+ db = SQLite3::Database.open( "foo.db", :driver => Driver,
44
+ :results_as_hash => true,
45
+ :type_translation => true )
46
+ assert db.results_as_hash
47
+ assert db.type_translation
48
+ end
49
+ end
50
+
51
+ class TC_Database < Test::Unit::TestCase
52
+ def setup
53
+ @db = SQLite3::Database.open( "foo.db",
54
+ :driver => Driver, :statement_factory => Statement )
55
+ end
56
+
57
+ def test_quote
58
+ assert_equal "''one''two''three''", SQLite3::Database.quote(
59
+ "'one'two'three'" )
60
+ end
61
+
62
+ def test_complete
63
+ Driver.any_instance.expects(:complete?)
64
+ @db.complete? "foo"
65
+ end
66
+
67
+ def test_errmsg
68
+ Driver.any_instance.expects(:errmsg)
69
+ @db.errmsg
70
+ end
71
+
72
+ def test_errcode
73
+ Driver.any_instance.expects(:errcode)
74
+ @db.errcode
75
+ end
76
+
77
+ def test_translator
78
+ translator = @db.translator
79
+ assert_instance_of SQLite3::Translator, translator
80
+ end
81
+
82
+ def test_close
83
+ Driver.any_instance.expects(:close).returns(0)
84
+ @db.close
85
+ assert @db.closed?
86
+ Driver.any_instance.expects(:close).never
87
+ @db.close
88
+ end
89
+
90
+ #def test_trace
91
+ # Driver.any_instance.expects(:trace).with('cookie', 15)
92
+ # @db.trace( 15 ) { "foo" }
93
+ # # assert_equal 1, driver.mock_blocks[:trace].length
94
+ #end
95
+
96
+ #def test_authorizer
97
+ # Driver.any_instance.expects(:set_authorizer).with('cookie', 15).returns(0)
98
+ # @db.authorizer( 15 ) { "foo" }
99
+ # # assert_equal 1, driver.mock_blocks[:set_authorizer].length
100
+ #end
101
+
102
+ def test_prepare_no_block
103
+ Statement.any_instance.expects(:close).never
104
+ assert_nothing_raised { @db.prepare( "foo" ) }
105
+ end
106
+
107
+ def test_prepare_with_block
108
+ called = false
109
+ # any_instance fails here...
110
+ statement = Statement.new('cookie', 'foo')
111
+ statement.expects(:close).once
112
+ Statement.stubs(:new).returns(statement)
113
+ @db.prepare( "foo" ) { |stmt| called = true }
114
+ assert called
115
+ end
116
+
117
+ def test_execute_no_block
118
+ # any_instance fails here...
119
+ statement = Statement.new('cookie', 'foo')
120
+ statement.expects(:execute).with('bar', 'baz').returns(MockResultSet.new)
121
+ Statement.stubs(:new).returns(statement)
122
+ MockResultSet.any_instance.stubs(:inject).returns([['foo']])
123
+ result = @db.execute( "foo", "bar", "baz" )
124
+ assert_equal [["foo"]], result
125
+ end
126
+
127
+ def test_execute_with_block
128
+ called = false
129
+ # any_instance fails here...
130
+ statement = Statement.new('cookie', 'foo')
131
+ statement.expects(:execute).with('bar', 'baz').returns(MockResultSet.new)
132
+ Statement.stubs(:new).returns(statement)
133
+ @db.execute( "foo", "bar", "baz" ) do |row|
134
+ called = true
135
+ assert_equal ["foo"], row
136
+ end
137
+
138
+ assert called
139
+ end
140
+
141
+ def test_execute2_no_block
142
+ # any_instance fails here...
143
+ statement = Statement.new('cookie', 'foo')
144
+ statement.expects(:execute).with('bar', 'baz').returns(MockResultSet.new)
145
+ Statement.stubs(:new).returns(statement)
146
+ MockResultSet.any_instance.stubs(:inject).returns([['name'], ['foo']])
147
+ result = @db.execute2( "foo", "bar", "baz" )
148
+ assert_equal [["name"],["foo"]], result
149
+ end
150
+
151
+ def test_execute2_with_block
152
+ called = false
153
+ parts = [ ["name"],["foo"] ]
154
+ # any_instance fails here...
155
+ statement = Statement.new('cookie', 'foo')
156
+ statement.expects(:execute).with('bar', 'baz').returns(MockResultSet.new)
157
+ Statement.stubs(:new).returns(statement)
158
+ @db.execute2( "foo", "bar", "baz" ) do |row|
159
+ called = true
160
+ assert_equal parts.shift, row
161
+ end
162
+
163
+ assert called
164
+ end
165
+
166
+ def test_execute_batch
167
+ # any_instance fails here...
168
+ statement = Statement.new('cookie', 'foo')
169
+ statement.expects(:execute).with('bar', 'baz').returns(MockResultSet.new)
170
+ Statement.stubs(:new).returns(statement)
171
+ @db.execute_batch( "foo", "bar", "baz" )
172
+ end
173
+
174
+ def test_get_first_row
175
+ result = @db.get_first_row( "foo", "bar", "baz" )
176
+ assert_equal ["foo"], result
177
+ end
178
+
179
+ def test_get_first_value
180
+ result = @db.get_first_value( "foo", "bar", "baz" )
181
+ assert_equal "foo", result
182
+ end
183
+
184
+ def test_changes
185
+ Driver.any_instance.expects(:changes).returns(14)
186
+ assert_equal 14, @db.changes
187
+ end
188
+
189
+ def test_total_changes
190
+ Driver.any_instance.expects(:total_changes).returns(28)
191
+ assert_equal 28, @db.total_changes
192
+ end
193
+
194
+ def test_interrupt
195
+ Driver.any_instance.expects(:interrupt)
196
+ @db.interrupt
197
+ end
198
+ end
data/test/tc_errors.rb ADDED
@@ -0,0 +1,21 @@
1
+ $:.unshift "../lib"
2
+
3
+ require 'sqlite3/errors'
4
+ require 'test/unit'
5
+ require 'mocha'
6
+
7
+ class TC_Errors < Test::Unit::TestCase
8
+ (1..26).each do |code|
9
+ define_method( "test_error_code_%02d" % code ) do
10
+ db = stub('database', :errmsg => 'message')
11
+ begin
12
+ SQLite3::Error.check( code, db )
13
+ rescue SQLite3::Exception => e
14
+ assert_instance_of SQLite3::EXCEPTIONS[code], e
15
+ assert_equal code, e.code
16
+ assert_equal code, e.class.code
17
+ assert_equal "message", e.message
18
+ end
19
+ end
20
+ end
21
+ end