ibruby 0.5.0-i586-linux

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,55 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'TestSetup'
4
+ require 'test/unit'
5
+ #require 'rubygems'
6
+ require 'ibruby'
7
+
8
+ include IBRuby
9
+
10
+ class AddRemoveUserTest < Test::Unit::TestCase
11
+ CURDIR = "#{Dir.getwd}"
12
+ DB_FILE = "#{CURDIR}#{File::SEPARATOR}add_remove_user_unit_test.ib"
13
+
14
+ def setup
15
+ puts "#{self.class.name} started." if TEST_LOGGING
16
+ # Remove existing database files.
17
+ @database = Database.new(DB_FILE)
18
+ if File.exist?(DB_FILE)
19
+ @database.drop(DB_USER_NAME, DB_PASSWORD)
20
+ end
21
+ Database.create(DB_FILE, DB_USER_NAME, DB_PASSWORD)
22
+ end
23
+
24
+ def teardown
25
+ # Remove existing database files.
26
+ if File.exist?(DB_FILE)
27
+ @database.drop(DB_USER_NAME, DB_PASSWORD)
28
+ end
29
+ puts "#{self.class.name} finished." if TEST_LOGGING
30
+ end
31
+
32
+ def test01
33
+ sm = ServiceManager.new('localhost')
34
+ sm.connect(DB_USER_NAME, DB_PASSWORD)
35
+
36
+ au = AddUser.new('newuser', 'password', 'first', 'middle', 'last')
37
+ au.execute(sm)
38
+ sleep(3)
39
+
40
+ cxn = @database.connect('newuser', 'password')
41
+ cxn.close
42
+
43
+ ru = RemoveUser.new('newuser')
44
+ ru.execute(sm)
45
+
46
+ sm.disconnect
47
+
48
+ begin
49
+ cxn = @database.connect('newuser', 'password')
50
+ cxn.close
51
+ assert(false, "Able to connect as supposedly removed user.")
52
+ rescue IBRubyException
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,99 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'TestSetup'
4
+ require 'test/unit'
5
+ #require 'rubygems'
6
+ require 'ibruby'
7
+
8
+ include IBRuby
9
+
10
+ class BackupRestoreTest < Test::Unit::TestCase
11
+ CURDIR = "#{Dir.getwd}"
12
+ DB_FILE = "#{CURDIR}#{File::SEPARATOR}backup_restore_unit_test.ib"
13
+ BACKUP_FILE = "#{CURDIR}#{File::SEPARATOR}database.ibak"
14
+
15
+ def setup
16
+ puts "#{self.class.name} started." if TEST_LOGGING
17
+ # Remove existing database files.
18
+ if File.exist?(DB_FILE)
19
+ db = Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
20
+ end
21
+
22
+ if File.exist?(BACKUP_FILE)
23
+ File.delete(BACKUP_FILE)
24
+ end
25
+
26
+ # Create and populate the database files.
27
+ @database = Database.create(DB_FILE, DB_USER_NAME, DB_PASSWORD)
28
+ @database.connect(DB_USER_NAME, DB_PASSWORD) do |cxn|
29
+ cxn.execute_immediate('create table test(id integer)')
30
+ cxn.execute_immediate('insert into test values (1000)')
31
+ cxn.execute_immediate('insert into test values (2000)')
32
+ cxn.execute_immediate('insert into test values (NULL)')
33
+ cxn.execute_immediate('insert into test values (3000)')
34
+ cxn.execute_immediate('insert into test values (4000)')
35
+ end
36
+ end
37
+
38
+ def teardown
39
+ # Remove existing database files.
40
+ if File.exist?(DB_FILE)
41
+ db = Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
42
+ end
43
+
44
+ if File.exist?(BACKUP_FILE)
45
+ File.delete(BACKUP_FILE)
46
+ end
47
+ puts "#{self.class.name} finished." if TEST_LOGGING
48
+ end
49
+
50
+ def test01
51
+ sm = ServiceManager.new('localhost')
52
+ sm.connect(DB_USER_NAME, DB_PASSWORD)
53
+
54
+ b = Backup.new(DB_FILE, BACKUP_FILE)
55
+ b.execute(sm)
56
+
57
+ assert(File.exist?(BACKUP_FILE))
58
+ @database.drop(DB_USER_NAME, DB_PASSWORD)
59
+ assert(File.exists?(DB_FILE) == false)
60
+
61
+ r = Restore.new(BACKUP_FILE, DB_FILE)
62
+ r.execute(sm)
63
+ sm.disconnect
64
+
65
+ assert(File.exist?(DB_FILE))
66
+ @database.connect(DB_USER_NAME, DB_PASSWORD) do |cxn|
67
+ total = 0
68
+ cxn.execute_immediate('select * from test') do |row|
69
+ assert([1000, 2000, 3000, 4000, nil].include?(row[0]))
70
+ total += 1
71
+ end
72
+ assert(total == 5)
73
+ end
74
+ end
75
+
76
+ def test02
77
+ sm = ServiceManager.new('localhost')
78
+ sm.connect(DB_USER_NAME, DB_PASSWORD)
79
+
80
+ b = Backup.new(DB_FILE, BACKUP_FILE)
81
+ b.metadata_only = true
82
+ b.execute(sm)
83
+
84
+ assert(File.exist?(BACKUP_FILE))
85
+ @database.drop(DB_USER_NAME, DB_PASSWORD)
86
+ assert(File.exists?(DB_FILE) == false)
87
+
88
+ r = Restore.new(BACKUP_FILE, DB_FILE)
89
+ r.execute(sm)
90
+ sm.disconnect
91
+
92
+ assert(File.exist?(DB_FILE))
93
+ @database.connect(DB_USER_NAME, DB_PASSWORD) do |cxn|
94
+ cxn.execute_immediate('select count(*) from test') do |row|
95
+ assert(row[0] == 0)
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,113 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'TestSetup'
4
+ require 'test/unit'
5
+ #require 'rubygems'
6
+ require 'ibruby'
7
+
8
+ include IBRuby
9
+
10
+ class RowTest < Test::Unit::TestCase
11
+ CURDIR = "#{Dir.getwd}"
12
+ DB_FILE = "#{CURDIR}#{File::SEPARATOR}boolean_unit_test.ib"
13
+
14
+ def setup
15
+ puts "#{self.class.name} started." if TEST_LOGGING
16
+ if File::exist?(DB_FILE)
17
+ Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
18
+ end
19
+
20
+ database = Database::create(DB_FILE, DB_USER_NAME, DB_PASSWORD)
21
+ @connection = database.connect(DB_USER_NAME, DB_PASSWORD)
22
+
23
+ @connection.start_transaction do |tx|
24
+ tx.execute('create table bool_types (col01 boolean)')
25
+ end
26
+ end
27
+
28
+ # test to ensure we can insert boolean data directly in
29
+ def test01
30
+ @connection.start_transaction do |tx|
31
+ tx.execute("delete from bool_types")
32
+ end
33
+ @connection.start_transaction do |tx|
34
+ tx.execute("insert into bool_types values (false)")
35
+ tx.execute("insert into bool_types values (true)")
36
+ tx.execute("insert into bool_types values (null)")
37
+ end
38
+
39
+ checkBooleanValues
40
+ end
41
+
42
+ def checkBooleanValues
43
+ sql = "select col01 from bool_types"
44
+ rows = @connection.execute_immediate(sql)
45
+ row = rows.fetch
46
+ assert(row != nil )
47
+ assert(row[0] == false)
48
+ row = rows.fetch
49
+ assert(row != nil )
50
+ assert(row[0] == true)
51
+ row = rows.fetch
52
+ assert(row != nil )
53
+ assert(row[0]==nil)
54
+
55
+ rows.close
56
+ end
57
+
58
+ #test to ensure we can insert boolean data in using
59
+ def test02
60
+ @connection.start_transaction do |tx|
61
+ tx.execute("delete from bool_types")
62
+ end
63
+ @connection.start_transaction do |tx|
64
+ stmt = Statement.new(@connection, tx,
65
+ "insert into bool_types values(?)",
66
+ 3)
67
+
68
+ stmt.execute_for([false])
69
+ stmt.execute_for([true])
70
+ stmt.execute_for([nil])
71
+ end
72
+
73
+ checkBooleanValues
74
+ end
75
+
76
+ #ensures that non-valid string names cause exceptions to be thrown
77
+ def test03
78
+ @connection.start_transaction do |tx|
79
+ stmt = Statement.new(@connection, tx,
80
+ "insert into bool_types values(?)",
81
+ 3)
82
+
83
+ assert_raise(IBRuby::IBRubyException) do
84
+ stmt.execute_for(['fred'])
85
+ end
86
+ end
87
+ end
88
+
89
+ # does tests for proper handling of string names for booleans (true/false)
90
+ def test04
91
+ @connection.start_transaction do |tx|
92
+ stmt = Statement.new(@connection, tx,
93
+ "insert into bool_types values(?)",
94
+ 3)
95
+
96
+ assert_nothing_raised() do
97
+ assert( stmt.execute_for(['false']) == 1 )
98
+ assert( stmt.execute_for(['False']) == 1 )
99
+ assert( stmt.execute_for(['true']) == 1 )
100
+ assert( stmt.execute_for(['True']) == 1 )
101
+ end
102
+ end
103
+ end
104
+
105
+
106
+ def teardown
107
+ @connection.close
108
+ if File::exist?(DB_FILE)
109
+ Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
110
+ end
111
+ puts "#{self.class.name} finished." if TEST_LOGGING
112
+ end
113
+ end
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'TestSetup'
4
+ require 'test/unit'
5
+ #require 'rubygems'
6
+ require 'ibruby'
7
+
8
+ include IBRuby
9
+
10
+ class CharacterSetTest < Test::Unit::TestCase
11
+ CURDIR = "#{Dir.getwd}"
12
+ DB_FILE = "#{CURDIR}#{File::SEPARATOR}cxnarset_unit_test.ib"
13
+ CHAR_SET = 'WIN1251'
14
+
15
+ def setup
16
+ puts "#{self.class.name} started." if TEST_LOGGING
17
+ if File::exist?(DB_FILE)
18
+ Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
19
+ end
20
+
21
+ @database = Database.create(DB_FILE, DB_USER_NAME, DB_PASSWORD, 1024,
22
+ CHAR_SET)
23
+ end
24
+
25
+ def teardown
26
+ if File::exist?(DB_FILE)
27
+ Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
28
+ end
29
+ puts "#{self.class.name} finished." if TEST_LOGGING
30
+ end
31
+
32
+ def test01
33
+ db = Database.new(DB_FILE, CHAR_SET)
34
+
35
+ assert(db.character_set = CHAR_SET)
36
+
37
+ db.character_set = 'ASCII'
38
+ assert(db.character_set == 'ASCII')
39
+ end
40
+
41
+ def test02
42
+ text = "�?����"
43
+ db = Database.new(DB_FILE, CHAR_SET)
44
+
45
+ begin
46
+ db.connect("SYSDBA", "masterkey") do |cxn|
47
+ cxn.start_transaction do |tr|
48
+ cxn.execute("CREATE TABLE SAMPLE_TABLE(SAMPLE_FIELD VARCHAR(100))",tr)
49
+ end
50
+ cxn.start_transaction do |tr|
51
+ cxn.execute("INSERT INTO SAMPLE_TABLE VALUES ('#{win1251_str}')",tr)
52
+ cxn.execute("SELECT * FROM SAMPLE_TABLE WHERE SAMPLE_FIELD = "\
53
+ "'#{win1251_str}'",tr) do |row|
54
+ # here we have an exception:
55
+ some_var = row['SAMPLE_FIELD']
56
+ end
57
+ end
58
+ end
59
+ rescue => error
60
+ assert("Character set unit test failure.", false)
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,111 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'TestSetup'
4
+ require 'test/unit'
5
+ #require 'rubygems'
6
+ require 'ibruby'
7
+
8
+ include IBRuby
9
+
10
+ class ConnectionTest < Test::Unit::TestCase
11
+ CURDIR = "#{Dir.getwd}"
12
+ DB_FILE = "#{CURDIR}#{File::SEPARATOR}con_unit_test.ib"
13
+
14
+ def setup
15
+ puts "#{self.class.name} started." if TEST_LOGGING
16
+ if File::exist?(DB_FILE)
17
+ Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
18
+ end
19
+
20
+ @database = Database.create(DB_FILE, DB_USER_NAME, DB_PASSWORD)
21
+ @connections = []
22
+ end
23
+
24
+ def teardown
25
+ @connections.each {|connection| connection.close}
26
+ @connections.clear
27
+
28
+ if File::exist?(DB_FILE)
29
+ Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
30
+ end
31
+ puts "#{self.class.name} finished." if TEST_LOGGING
32
+ end
33
+
34
+ def test01
35
+ @connections.push(@database.connect(DB_USER_NAME, DB_PASSWORD))
36
+
37
+ assert(@connections[0].user == DB_USER_NAME)
38
+ assert(@connections[0].open?)
39
+ assert(@connections[0].closed? == false)
40
+ assert(@connections[0].database == @database)
41
+ assert(@connections[0].to_s == "#{DB_USER_NAME}@#{DB_FILE} (OPEN)")
42
+
43
+ @connections[0].close
44
+ assert(@connections[0].user == DB_USER_NAME)
45
+ assert(@connections[0].open? == false)
46
+ assert(@connections[0].closed?)
47
+ assert(@connections[0].database == @database)
48
+ assert(@connections[0].to_s == "(CLOSED)")
49
+
50
+ @connections[0] = @database.connect(DB_USER_NAME, DB_PASSWORD)
51
+ assert(@connections[0].open?)
52
+ @connections.push(Connection.new(@database, DB_USER_NAME, DB_PASSWORD))
53
+ assert(@connections[0].open?)
54
+ assert(@connections[1].open?)
55
+ end
56
+
57
+ def test02
58
+ @connections.push(@database.connect(DB_USER_NAME, DB_PASSWORD))
59
+
60
+ tx = @connections[0].start_transaction
61
+ assert(tx != nil)
62
+ assert(tx.class == Transaction)
63
+ assert(tx.active?)
64
+ tx.rollback
65
+
66
+ tx = nil
67
+ @connections[0].start_transaction do |transaction|
68
+ assert(transaction != nil)
69
+ assert(transaction.class == Transaction)
70
+ assert(transaction.active?)
71
+ tx = transaction
72
+ end
73
+ assert(tx != nil)
74
+ assert(tx.class == Transaction)
75
+ assert(tx.active? == false)
76
+ end
77
+
78
+ def test03
79
+ @connections.push(@database.connect(DB_USER_NAME, DB_PASSWORD))
80
+ tx = @connections[0].start_transaction
81
+ total = 0
82
+ @connections[0].execute("SELECT RDB$FIELD_NAME FROM RDB$FIELDS", tx) do |row|
83
+ total = total + 1
84
+ end
85
+ assert(total == 113) # interbase has 113 field types for a newly created database vs firebird's 88
86
+ tx.commit
87
+
88
+ total = 0
89
+ @connections[0].execute_immediate("SELECT RDB$FIELD_NAME FROM RDB$FIELDS") do |row|
90
+ total = total + 1
91
+ end
92
+ assert(total == 113)
93
+ end
94
+
95
+ def test04
96
+ connection = @database.connect(DB_USER_NAME, DB_PASSWORD)
97
+
98
+ tx1 = connection.start_transaction
99
+ tx2 = connection.start_transaction
100
+ tx3 = connection.start_transaction
101
+
102
+ tx2.rollback
103
+ assert(tx2.active? == false)
104
+
105
+ connection.close
106
+
107
+ assert(connection.closed?)
108
+ assert(tx1.active? == false)
109
+ assert(tx3.active? == false)
110
+ end
111
+ end
data/test/DDLTest.rb ADDED
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'TestSetup'
4
+ require 'test/unit'
5
+ #require 'rubygems'
6
+ require 'ibruby'
7
+
8
+ include IBRuby
9
+
10
+ class DDLTest < Test::Unit::TestCase
11
+ CURDIR = "#{Dir.getwd}"
12
+ DB_FILE = "#{CURDIR}#{File::SEPARATOR}ddl_unit_test.ibb"
13
+
14
+ def setup
15
+ puts "#{self.class.name} started." if TEST_LOGGING
16
+ if File::exist?(DB_FILE)
17
+ Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
18
+ end
19
+ @database = Database::create(DB_FILE, DB_USER_NAME, DB_PASSWORD)
20
+ end
21
+
22
+ def teardown
23
+ if File::exist?(DB_FILE)
24
+ Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
25
+ end
26
+ puts "#{self.class.name} finished." if TEST_LOGGING
27
+ end
28
+
29
+ def test01
30
+ @database.connect(DB_USER_NAME, DB_PASSWORD) do |cxn|
31
+ cxn.execute_immediate('CREATE TABLE DDL_TABLE_01 (TABLEID '\
32
+ 'INTEGER NOT NULL, '\
33
+ 'FIELD01 FLOAT, FIELD02 CHAR(50), '\
34
+ 'FIELD03 NUMERIC(18,0), FIELD04 TIMESTAMP '\
35
+ 'NOT NULL, FIELD05 VARCHAR(600))')
36
+
37
+ cxn.start_transaction do |tx|
38
+ r = tx.execute('SELECT COUNT(*) FROM DDL_TABLE_01')
39
+ assert(r.fetch[0] == 0)
40
+ r.close
41
+ end
42
+
43
+ cxn.execute_immediate('ALTER TABLE DDL_TABLE_01 ADD PRIMARY KEY '\
44
+ '(TABLEID)')
45
+
46
+ cxn.execute_immediate('CREATE UNIQUE INDEX DDL_TABLE_IDX ON '\
47
+ 'DDL_TABLE_01 (TABLEID)')
48
+
49
+ cxn.execute_immediate('DROP INDEX DDL_TABLE_IDX')
50
+
51
+ cxn.execute_immediate('DROP TABLE DDL_TABLE_01')
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,83 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'TestSetup'
4
+ require 'test/unit'
5
+ #require 'rubygems'
6
+ require 'ibruby'
7
+
8
+ include IBRuby
9
+
10
+ class DatabaseTest < Test::Unit::TestCase
11
+ CURDIR = "#{Dir.getwd}"
12
+ DB_FILE = "#{CURDIR}#{File::SEPARATOR}db_unit_test.ibb"
13
+ CREATE_FILE = "#{CURDIR}#{File::SEPARATOR}db_create_test.ibb"
14
+
15
+ def setup
16
+ puts "#{self.class.name} started." if TEST_LOGGING
17
+ if File.exist?(DB_FILE)
18
+ db = Database.new(DB_FILE)
19
+ db.drop
20
+ end
21
+ if File.exist?(CREATE_FILE)
22
+ db = Database.new(CREATE_FILE)
23
+ db.drop
24
+ end
25
+
26
+ Database::create(DB_FILE, DB_USER_NAME, DB_PASSWORD, 1024, 'ASCII')
27
+ end
28
+
29
+ def teardown
30
+ if File::exist?(DB_FILE)
31
+ db = Database.new(DB_FILE)
32
+ db.drop(DB_USER_NAME, DB_PASSWORD)
33
+ end
34
+ if File::exist?(CREATE_FILE)
35
+ db = Database.new(CREATE_FILE)
36
+ db.drop(DB_USER_NAME, DB_PASSWORD)
37
+ end
38
+ puts "#{self.class.name} finished." if TEST_LOGGING
39
+ end
40
+
41
+
42
+ def test01
43
+ db = Database.create(CREATE_FILE, DB_USER_NAME, DB_PASSWORD, 2048, 'ASCII')
44
+
45
+ assert(File.exist?(CREATE_FILE))
46
+ assert(db.file == CREATE_FILE)
47
+
48
+ begin
49
+ Database.create(CREATE_FILE, DB_USER_NAME, DB_PASSWORD, 2048, 'ASCII')
50
+ assert(false,
51
+ "Successfully created a database file that already exists.")
52
+ rescue Exception
53
+ end
54
+
55
+ db.drop(DB_USER_NAME, DB_PASSWORD)
56
+ assert(File.exist?(CREATE_FILE) == false)
57
+ end
58
+
59
+ def test02
60
+ db = Database.new(DB_FILE);
61
+
62
+ assert(db.file == DB_FILE)
63
+
64
+ c = db.connect(DB_USER_NAME, DB_PASSWORD)
65
+ assert(c != nil)
66
+ c.close
67
+ end
68
+
69
+ def test03
70
+ db = Database.new(DB_FILE);
71
+ c = nil
72
+
73
+ db.connect(DB_USER_NAME, DB_PASSWORD) do |connection|
74
+ assert(connection != nil)
75
+ assert(connection.class == Connection)
76
+ assert(connection.open?)
77
+ c = connection
78
+ end
79
+ assert(c != nil)
80
+ assert(c.class == Connection)
81
+ assert(c.closed?)
82
+ end
83
+ end
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'TestSetup'
4
+ require 'test/unit'
5
+ #require 'rubygems'
6
+ require 'ibruby'
7
+
8
+ include IBRuby
9
+
10
+ class GeneratorTest < Test::Unit::TestCase
11
+ CURDIR = "#{Dir.getwd}"
12
+ DB_FILE = "#{CURDIR}#{File::SEPARATOR}generator_unit_test.ib"
13
+
14
+ def setup
15
+ puts "#{self.class.name} started." if TEST_LOGGING
16
+ if File::exist?(DB_FILE)
17
+ Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
18
+ end
19
+ @database = Database::create(DB_FILE, DB_USER_NAME, DB_PASSWORD)
20
+ @connections = []
21
+
22
+ @connections.push(@database.connect(DB_USER_NAME, DB_PASSWORD))
23
+ end
24
+
25
+ def teardown
26
+ @connections.each do |cxn|
27
+ cxn.close if cxn.open?
28
+ end
29
+ @connections.clear
30
+ if File::exist?(DB_FILE)
31
+ Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
32
+ end
33
+ puts "#{self.class.name} finished." if TEST_LOGGING
34
+ end
35
+
36
+ def test01
37
+ assert(Generator::exists?('TEST_GEN', @connections[0]) == false)
38
+ g = Generator::create('TEST_GEN', @connections[0])
39
+ assert(Generator::exists?('TEST_GEN', @connections[0]))
40
+ assert(g.last == 0)
41
+ assert(g.next(1) == 1)
42
+ assert(g.last == 1)
43
+ assert(g.next(10) == 11)
44
+ assert(g.connection == @connections[0])
45
+ assert(g.name == 'TEST_GEN')
46
+
47
+ g.drop
48
+ assert(Generator::exists?('TEST_GEN', @connections[0]) == false)
49
+ end
50
+ end