fireruby 0.4.1-mswin32 → 0.4.2-mswin32
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.
- data/doc/README +456 -456
- data/doc/license.txt +411 -411
- data/examples/example01.rb +65 -65
- data/lib/SQLType.rb +223 -227
- data/lib/fireruby.rb +22 -22
- data/lib/fr_lib.so +0 -0
- data/lib/mkdoc +1 -1
- data/lib/src.rb +1795 -1795
- data/test/AddRemoveUserTest.rb +56 -55
- data/test/BackupRestoreTest.rb +99 -99
- data/test/BlobTest.rb +57 -0
- data/test/CharacterSetTest.rb +63 -63
- data/test/ConnectionTest.rb +111 -111
- data/test/DDLTest.rb +54 -54
- data/test/DatabaseTest.rb +83 -83
- data/test/GeneratorTest.rb +50 -50
- data/test/KeyTest.rb +140 -140
- data/test/ResultSetTest.rb +162 -162
- data/test/RoleTest.rb +73 -0
- data/test/RowCountTest.rb +65 -65
- data/test/RowTest.rb +203 -203
- data/test/SQLTest.rb +182 -182
- data/test/SQLTypeTest.rb +101 -101
- data/test/ServiceManagerTest.rb +29 -29
- data/test/StatementTest.rb +135 -135
- data/test/TestSetup.rb +11 -11
- data/test/TransactionTest.rb +112 -112
- data/test/TypeTest.rb +92 -92
- data/test/UnitTest.rb +65 -64
- metadata +49 -110
- data/doc/CVS/Entries +0 -3
- data/doc/CVS/Entries.Log +0 -2
- data/doc/CVS/Repository +0 -1
- data/doc/CVS/Root +0 -1
- data/doc/classes/CVS/Entries +0 -1
- data/doc/classes/CVS/Entries.Log +0 -1
- data/doc/classes/CVS/Repository +0 -1
- data/doc/classes/CVS/Root +0 -1
- data/doc/classes/FireRuby/CVS/Entries +0 -1
- data/doc/classes/FireRuby/CVS/Entries.Log +0 -7
- data/doc/classes/FireRuby/CVS/Repository +0 -1
- data/doc/classes/FireRuby/CVS/Root +0 -1
- data/doc/classes/FireRuby/Connection.src/CVS/Entries +0 -1
- data/doc/classes/FireRuby/Connection.src/CVS/Repository +0 -1
- data/doc/classes/FireRuby/Connection.src/CVS/Root +0 -1
- data/doc/classes/FireRuby/Database.src/CVS/Entries +0 -1
- data/doc/classes/FireRuby/Database.src/CVS/Repository +0 -1
- data/doc/classes/FireRuby/Database.src/CVS/Root +0 -1
- data/doc/classes/FireRuby/FireRubyError.src/CVS/Entries +0 -1
- data/doc/classes/FireRuby/FireRubyError.src/CVS/Repository +0 -1
- data/doc/classes/FireRuby/FireRubyError.src/CVS/Root +0 -1
- data/doc/classes/FireRuby/Generator.src/CVS/Entries +0 -1
- data/doc/classes/FireRuby/Generator.src/CVS/Repository +0 -1
- data/doc/classes/FireRuby/Generator.src/CVS/Root +0 -1
- data/doc/classes/FireRuby/ResultSet.src/CVS/Entries +0 -1
- data/doc/classes/FireRuby/ResultSet.src/CVS/Repository +0 -1
- data/doc/classes/FireRuby/ResultSet.src/CVS/Root +0 -1
- data/doc/classes/FireRuby/Statement.src/CVS/Entries +0 -1
- data/doc/classes/FireRuby/Statement.src/CVS/Repository +0 -1
- data/doc/classes/FireRuby/Statement.src/CVS/Root +0 -1
- data/doc/classes/FireRuby/Transaction.src/CVS/Entries +0 -1
- data/doc/classes/FireRuby/Transaction.src/CVS/Repository +0 -1
- data/doc/classes/FireRuby/Transaction.src/CVS/Root +0 -1
- data/doc/files/CVS/Entries +0 -1
- data/doc/files/CVS/Repository +0 -1
- data/doc/files/CVS/Root +0 -1
- data/examples/CVS/Entries +0 -2
- data/examples/CVS/Repository +0 -1
- data/examples/CVS/Root +0 -1
- data/lib/CVS/Entries +0 -6
- data/lib/CVS/Repository +0 -1
- data/lib/CVS/Root +0 -1
- data/test/CVS/Entries +0 -20
- data/test/CVS/Repository +0 -1
- data/test/CVS/Root +0 -1
data/test/SQLTest.rb
CHANGED
@@ -1,182 +1,182 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'TestSetup'
|
4
|
-
require 'test/unit'
|
5
|
-
require 'rubygems'
|
6
|
-
require 'fireruby'
|
7
|
-
|
8
|
-
include FireRuby
|
9
|
-
|
10
|
-
class SQLTest < Test::Unit::TestCase
|
11
|
-
CURDIR = "#{Dir.getwd}"
|
12
|
-
DB_FILE = "#{CURDIR}#{File::SEPARATOR}sql_unit_test.fdb"
|
13
|
-
ITERATIONS = 100
|
14
|
-
|
15
|
-
INSERT_SQL = "INSERT INTO TEST_TABLE VALUES(?, ?, ?, ?, ?, ?)"
|
16
|
-
|
17
|
-
def setup
|
18
|
-
puts "#{self.class.name} started." if TEST_LOGGING
|
19
|
-
if File::exist?(DB_FILE)
|
20
|
-
Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
|
21
|
-
end
|
22
|
-
@database = Database::create(DB_FILE, DB_USER_NAME, DB_PASSWORD)
|
23
|
-
@connections = []
|
24
|
-
@transactions = []
|
25
|
-
|
26
|
-
@database.connect(DB_USER_NAME, DB_PASSWORD) do |cxn|
|
27
|
-
cxn.execute_immediate('CREATE TABLE TEST_TABLE (TESTID INTEGER '\
|
28
|
-
'NOT NULL PRIMARY KEY, TESTTEXT VARCHAR(100), '\
|
29
|
-
'TESTFLOAT NUMERIC(8,2), TESTDATE DATE, TESTTIME '\
|
30
|
-
'TIME, TESTSTAMP TIMESTAMP)')
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def teardown
|
35
|
-
@transactions.each do |tx|
|
36
|
-
tx.rollback if tx.active?
|
37
|
-
end
|
38
|
-
|
39
|
-
@connections.each do |cxn|
|
40
|
-
cxn.close if cxn.open?
|
41
|
-
end
|
42
|
-
|
43
|
-
if File::exist?(DB_FILE)
|
44
|
-
Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
|
45
|
-
end
|
46
|
-
puts "#{self.class.name} finished." if TEST_LOGGING
|
47
|
-
end
|
48
|
-
|
49
|
-
def test01
|
50
|
-
@database.connect(DB_USER_NAME, DB_PASSWORD) do |cxn|
|
51
|
-
cxn.start_transaction do |tx|
|
52
|
-
s = Statement.new(cxn, tx, INSERT_SQL, 3)
|
53
|
-
f = 0.0
|
54
|
-
t = Time.new
|
55
|
-
|
56
|
-
1.upto(ITERATIONS) do |i|
|
57
|
-
f += 0.321
|
58
|
-
t = Time.at(t.to_i + 5)
|
59
|
-
s.execute_for([i, i.to_s, f, t, nil, t])
|
60
|
-
end
|
61
|
-
|
62
|
-
s.close
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
@connections.push(@database.connect(DB_USER_NAME, DB_PASSWORD))
|
67
|
-
@connections[0].start_transaction do |tx|
|
68
|
-
r = tx.execute("SELECT COUNT(*) FROM TEST_TABLE")
|
69
|
-
assert(r.fetch[0] == ITERATIONS)
|
70
|
-
r.close
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
def test02
|
75
|
-
f = 0.0
|
76
|
-
@database.connect(DB_USER_NAME, DB_PASSWORD) do |cxn|
|
77
|
-
1.upto(20) do |i|
|
78
|
-
f += i
|
79
|
-
sql = "INSERT INTO TEST_TABLE VALUES (#{i}, "\
|
80
|
-
"#{f.to_s}, #{f}, NULL, NULL, 'NOW')"
|
81
|
-
cxn.execute_immediate(sql)
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
@connections.push(@database.connect(DB_USER_NAME, DB_PASSWORD))
|
86
|
-
@transactions.push(@connections[0].start_transaction)
|
87
|
-
r = @transactions[0].execute("SELECT COUNT(*) FROM TEST_TABLE")
|
88
|
-
assert(r.fetch[0] == 20)
|
89
|
-
r.close
|
90
|
-
|
91
|
-
r = @transactions[0].execute("SELECT * FROM TEST_TABLE WHERE TESTID IN "\
|
92
|
-
"(2, 4, 6, 8, 10) ORDER BY TESTID ASCENDING")
|
93
|
-
a = r.fetch
|
94
|
-
assert(a[0] == 2)
|
95
|
-
assert(a[1] == '3.0')
|
96
|
-
assert(a[2] == 3.0)
|
97
|
-
assert(a[3] == nil)
|
98
|
-
assert(a[4] == nil)
|
99
|
-
|
100
|
-
a = r.fetch
|
101
|
-
assert(a[0] == 4)
|
102
|
-
assert(a[1] == '10.0')
|
103
|
-
assert(a[2] == 10.0)
|
104
|
-
assert(a[3] == nil)
|
105
|
-
assert(a[4] == nil)
|
106
|
-
|
107
|
-
a = r.fetch
|
108
|
-
assert(a[0] == 6)
|
109
|
-
assert(a[1] == '21.0')
|
110
|
-
assert(a[2] == 21.0)
|
111
|
-
assert(a[3] == nil)
|
112
|
-
assert(a[4] == nil)
|
113
|
-
|
114
|
-
a = r.fetch
|
115
|
-
assert(a[0] == 8)
|
116
|
-
assert(a[1] == '36.0')
|
117
|
-
assert(a[2] == 36.0)
|
118
|
-
assert(a[3] == nil)
|
119
|
-
assert(a[4] == nil)
|
120
|
-
|
121
|
-
a = r.fetch
|
122
|
-
assert(a[0] == 10)
|
123
|
-
assert(a[1] == '55.0')
|
124
|
-
assert(a[2] == 55.0)
|
125
|
-
assert(a[3] == nil)
|
126
|
-
assert(a[4] == nil)
|
127
|
-
|
128
|
-
r.close
|
129
|
-
|
130
|
-
@transactions[0].commit
|
131
|
-
|
132
|
-
@connections[0].start_transaction do |tx|
|
133
|
-
s = Statement.new(@connections[0], tx,
|
134
|
-
"UPDATE TEST_TABLE SET TESTSTAMP = NULL", 3)
|
135
|
-
s.execute()
|
136
|
-
s.close
|
137
|
-
|
138
|
-
r = tx.execute("SELECT TESTSTAMP FROM TEST_TABLE")
|
139
|
-
total = 0
|
140
|
-
r.each do |row|
|
141
|
-
assert(row[0] == nil)
|
142
|
-
total = total + 1
|
143
|
-
end
|
144
|
-
assert(total == 20)
|
145
|
-
r.close
|
146
|
-
end
|
147
|
-
|
148
|
-
a = []
|
149
|
-
t = nil
|
150
|
-
@connections[0].start_transaction do |tx|
|
151
|
-
# Perform an insert via a parameterized statement.
|
152
|
-
s = Statement.new(@connections[0], tx,
|
153
|
-
"INSERT INTO TEST_TABLE (TESTID, TESTTEXT, "\
|
154
|
-
"TESTFLOAT, TESTSTAMP) VALUES(?, ?, ?, ?)", 3)
|
155
|
-
t = Time.new
|
156
|
-
s.execute_for([25000, 'La la la', 3.14, t])
|
157
|
-
s.close
|
158
|
-
|
159
|
-
# Fetch the record and check the data.
|
160
|
-
r = tx.execute("SELECT TESTTEXT, TESTFLOAT, TESTSTAMP FROM "\
|
161
|
-
"TEST_TABLE WHERE TESTID = 25000")
|
162
|
-
a = r.fetch
|
163
|
-
r.close
|
164
|
-
end
|
165
|
-
assert(a[0] == 'La la la')
|
166
|
-
assert(a[1] == 3.14)
|
167
|
-
assert(a[2].to_i == t.to_i)
|
168
|
-
|
169
|
-
@connections[0].execute_immediate("DELETE FROM TEST_TABLE WHERE TESTID "\
|
170
|
-
"IN (1, 3, 5, 7, 9, 12, 14, 16, 18, 20)")
|
171
|
-
@database.connect(DB_USER_NAME, DB_PASSWORD) do |cxn|
|
172
|
-
a = []
|
173
|
-
cxn.start_transaction do |tx|
|
174
|
-
r = tx.execute("SELECT COUNT(*) FROM TEST_TABLE")
|
175
|
-
a = r.fetch
|
176
|
-
r.close
|
177
|
-
end
|
178
|
-
assert(a[0] == 11)
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
182
|
-
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'TestSetup'
|
4
|
+
require 'test/unit'
|
5
|
+
require 'rubygems'
|
6
|
+
require 'fireruby'
|
7
|
+
|
8
|
+
include FireRuby
|
9
|
+
|
10
|
+
class SQLTest < Test::Unit::TestCase
|
11
|
+
CURDIR = "#{Dir.getwd}"
|
12
|
+
DB_FILE = "#{CURDIR}#{File::SEPARATOR}sql_unit_test.fdb"
|
13
|
+
ITERATIONS = 100
|
14
|
+
|
15
|
+
INSERT_SQL = "INSERT INTO TEST_TABLE VALUES(?, ?, ?, ?, ?, ?)"
|
16
|
+
|
17
|
+
def setup
|
18
|
+
puts "#{self.class.name} started." if TEST_LOGGING
|
19
|
+
if File::exist?(DB_FILE)
|
20
|
+
Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
|
21
|
+
end
|
22
|
+
@database = Database::create(DB_FILE, DB_USER_NAME, DB_PASSWORD)
|
23
|
+
@connections = []
|
24
|
+
@transactions = []
|
25
|
+
|
26
|
+
@database.connect(DB_USER_NAME, DB_PASSWORD) do |cxn|
|
27
|
+
cxn.execute_immediate('CREATE TABLE TEST_TABLE (TESTID INTEGER '\
|
28
|
+
'NOT NULL PRIMARY KEY, TESTTEXT VARCHAR(100), '\
|
29
|
+
'TESTFLOAT NUMERIC(8,2), TESTDATE DATE, TESTTIME '\
|
30
|
+
'TIME, TESTSTAMP TIMESTAMP)')
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def teardown
|
35
|
+
@transactions.each do |tx|
|
36
|
+
tx.rollback if tx.active?
|
37
|
+
end
|
38
|
+
|
39
|
+
@connections.each do |cxn|
|
40
|
+
cxn.close if cxn.open?
|
41
|
+
end
|
42
|
+
|
43
|
+
if File::exist?(DB_FILE)
|
44
|
+
Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
|
45
|
+
end
|
46
|
+
puts "#{self.class.name} finished." if TEST_LOGGING
|
47
|
+
end
|
48
|
+
|
49
|
+
def test01
|
50
|
+
@database.connect(DB_USER_NAME, DB_PASSWORD) do |cxn|
|
51
|
+
cxn.start_transaction do |tx|
|
52
|
+
s = Statement.new(cxn, tx, INSERT_SQL, 3)
|
53
|
+
f = 0.0
|
54
|
+
t = Time.new
|
55
|
+
|
56
|
+
1.upto(ITERATIONS) do |i|
|
57
|
+
f += 0.321
|
58
|
+
t = Time.at(t.to_i + 5)
|
59
|
+
s.execute_for([i, i.to_s, f, t, nil, t])
|
60
|
+
end
|
61
|
+
|
62
|
+
s.close
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
@connections.push(@database.connect(DB_USER_NAME, DB_PASSWORD))
|
67
|
+
@connections[0].start_transaction do |tx|
|
68
|
+
r = tx.execute("SELECT COUNT(*) FROM TEST_TABLE")
|
69
|
+
assert(r.fetch[0] == ITERATIONS)
|
70
|
+
r.close
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def test02
|
75
|
+
f = 0.0
|
76
|
+
@database.connect(DB_USER_NAME, DB_PASSWORD) do |cxn|
|
77
|
+
1.upto(20) do |i|
|
78
|
+
f += i
|
79
|
+
sql = "INSERT INTO TEST_TABLE VALUES (#{i}, "\
|
80
|
+
"#{f.to_s}, #{f}, NULL, NULL, 'NOW')"
|
81
|
+
cxn.execute_immediate(sql)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
@connections.push(@database.connect(DB_USER_NAME, DB_PASSWORD))
|
86
|
+
@transactions.push(@connections[0].start_transaction)
|
87
|
+
r = @transactions[0].execute("SELECT COUNT(*) FROM TEST_TABLE")
|
88
|
+
assert(r.fetch[0] == 20)
|
89
|
+
r.close
|
90
|
+
|
91
|
+
r = @transactions[0].execute("SELECT * FROM TEST_TABLE WHERE TESTID IN "\
|
92
|
+
"(2, 4, 6, 8, 10) ORDER BY TESTID ASCENDING")
|
93
|
+
a = r.fetch
|
94
|
+
assert(a[0] == 2)
|
95
|
+
assert(a[1] == '3.0')
|
96
|
+
assert(a[2] == 3.0)
|
97
|
+
assert(a[3] == nil)
|
98
|
+
assert(a[4] == nil)
|
99
|
+
|
100
|
+
a = r.fetch
|
101
|
+
assert(a[0] == 4)
|
102
|
+
assert(a[1] == '10.0')
|
103
|
+
assert(a[2] == 10.0)
|
104
|
+
assert(a[3] == nil)
|
105
|
+
assert(a[4] == nil)
|
106
|
+
|
107
|
+
a = r.fetch
|
108
|
+
assert(a[0] == 6)
|
109
|
+
assert(a[1] == '21.0')
|
110
|
+
assert(a[2] == 21.0)
|
111
|
+
assert(a[3] == nil)
|
112
|
+
assert(a[4] == nil)
|
113
|
+
|
114
|
+
a = r.fetch
|
115
|
+
assert(a[0] == 8)
|
116
|
+
assert(a[1] == '36.0')
|
117
|
+
assert(a[2] == 36.0)
|
118
|
+
assert(a[3] == nil)
|
119
|
+
assert(a[4] == nil)
|
120
|
+
|
121
|
+
a = r.fetch
|
122
|
+
assert(a[0] == 10)
|
123
|
+
assert(a[1] == '55.0')
|
124
|
+
assert(a[2] == 55.0)
|
125
|
+
assert(a[3] == nil)
|
126
|
+
assert(a[4] == nil)
|
127
|
+
|
128
|
+
r.close
|
129
|
+
|
130
|
+
@transactions[0].commit
|
131
|
+
|
132
|
+
@connections[0].start_transaction do |tx|
|
133
|
+
s = Statement.new(@connections[0], tx,
|
134
|
+
"UPDATE TEST_TABLE SET TESTSTAMP = NULL", 3)
|
135
|
+
s.execute()
|
136
|
+
s.close
|
137
|
+
|
138
|
+
r = tx.execute("SELECT TESTSTAMP FROM TEST_TABLE")
|
139
|
+
total = 0
|
140
|
+
r.each do |row|
|
141
|
+
assert(row[0] == nil)
|
142
|
+
total = total + 1
|
143
|
+
end
|
144
|
+
assert(total == 20)
|
145
|
+
r.close
|
146
|
+
end
|
147
|
+
|
148
|
+
a = []
|
149
|
+
t = nil
|
150
|
+
@connections[0].start_transaction do |tx|
|
151
|
+
# Perform an insert via a parameterized statement.
|
152
|
+
s = Statement.new(@connections[0], tx,
|
153
|
+
"INSERT INTO TEST_TABLE (TESTID, TESTTEXT, "\
|
154
|
+
"TESTFLOAT, TESTSTAMP) VALUES(?, ?, ?, ?)", 3)
|
155
|
+
t = Time.new
|
156
|
+
s.execute_for([25000, 'La la la', 3.14, t])
|
157
|
+
s.close
|
158
|
+
|
159
|
+
# Fetch the record and check the data.
|
160
|
+
r = tx.execute("SELECT TESTTEXT, TESTFLOAT, TESTSTAMP FROM "\
|
161
|
+
"TEST_TABLE WHERE TESTID = 25000")
|
162
|
+
a = r.fetch
|
163
|
+
r.close
|
164
|
+
end
|
165
|
+
assert(a[0] == 'La la la')
|
166
|
+
assert(a[1] == 3.14)
|
167
|
+
assert(a[2].to_i == t.to_i)
|
168
|
+
|
169
|
+
@connections[0].execute_immediate("DELETE FROM TEST_TABLE WHERE TESTID "\
|
170
|
+
"IN (1, 3, 5, 7, 9, 12, 14, 16, 18, 20)")
|
171
|
+
@database.connect(DB_USER_NAME, DB_PASSWORD) do |cxn|
|
172
|
+
a = []
|
173
|
+
cxn.start_transaction do |tx|
|
174
|
+
r = tx.execute("SELECT COUNT(*) FROM TEST_TABLE")
|
175
|
+
a = r.fetch
|
176
|
+
r.close
|
177
|
+
end
|
178
|
+
assert(a[0] == 11)
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
data/test/SQLTypeTest.rb
CHANGED
@@ -1,101 +1,101 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'TestSetup'
|
4
|
-
require 'test/unit'
|
5
|
-
require 'rubygems'
|
6
|
-
require 'fireruby'
|
7
|
-
|
8
|
-
include FireRuby
|
9
|
-
|
10
|
-
class SQLTypeTest < Test::Unit::TestCase
|
11
|
-
CURDIR = "#{Dir.getwd}"
|
12
|
-
DB_FILE = "#{CURDIR}#{File::SEPARATOR}sql_type_test.fdb"
|
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 all_types (col01 bigint, col02 blob, "\
|
25
|
-
"col03 char(100), col04 date, col05 decimal(5,2), "\
|
26
|
-
"col06 double precision, col07 float, col08 integer, "\
|
27
|
-
"col09 numeric(10,3), col10 smallint, col11 time, "\
|
28
|
-
"col12 timestamp, col13 varchar(23))")
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def teardown
|
33
|
-
@connection.close if @connection != nil && @connection.open?
|
34
|
-
|
35
|
-
if File::exist?(DB_FILE)
|
36
|
-
Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
|
37
|
-
end
|
38
|
-
puts "#{self.class.name} finished." if TEST_LOGGING
|
39
|
-
end
|
40
|
-
|
41
|
-
def test01
|
42
|
-
types = []
|
43
|
-
types.push(SQLType.new(SQLType::BIGINT))
|
44
|
-
types.push(SQLType.new(SQLType::VARCHAR, 1000))
|
45
|
-
types.push(SQLType.new(SQLType::DECIMAL, nil, 10))
|
46
|
-
types.push(SQLType.new(SQLType::NUMERIC, nil, 5, 3))
|
47
|
-
types.push(SQLType.new(SQLType::BLOB, nil, nil, nil, 1))
|
48
|
-
|
49
|
-
assert(types[0] == types[0])
|
50
|
-
assert(!(types[0] == types[1]))
|
51
|
-
assert(types[1] == SQLType.new(SQLType::VARCHAR, 1000))
|
52
|
-
|
53
|
-
assert(types[0].type == SQLType::BIGINT)
|
54
|
-
assert(types[0].length == nil)
|
55
|
-
assert(types[0].precision == nil)
|
56
|
-
assert(types[0].scale == nil)
|
57
|
-
assert(types[0].subtype == nil)
|
58
|
-
|
59
|
-
assert(types[1].type == SQLType::VARCHAR)
|
60
|
-
assert(types[1].length == 1000)
|
61
|
-
assert(types[1].precision == nil)
|
62
|
-
assert(types[1].scale == nil)
|
63
|
-
assert(types[1].subtype == nil)
|
64
|
-
|
65
|
-
assert(types[2].type == SQLType::DECIMAL)
|
66
|
-
assert(types[2].length == nil)
|
67
|
-
assert(types[2].precision == 10)
|
68
|
-
assert(types[2].scale == nil)
|
69
|
-
assert(types[2].subtype == nil)
|
70
|
-
|
71
|
-
assert(types[3].type == SQLType::NUMERIC)
|
72
|
-
assert(types[3].length == nil)
|
73
|
-
assert(types[3].precision == 5)
|
74
|
-
assert(types[3].scale == 3)
|
75
|
-
assert(types[3].subtype == nil)
|
76
|
-
|
77
|
-
assert(types[4].type == SQLType::BLOB)
|
78
|
-
assert(types[4].length == nil)
|
79
|
-
assert(types[4].precision == nil)
|
80
|
-
assert(types[4].scale == nil)
|
81
|
-
assert(types[4].subtype == 1)
|
82
|
-
end
|
83
|
-
|
84
|
-
def test02
|
85
|
-
types = SQLType.for_table("all_types", @connection)
|
86
|
-
|
87
|
-
assert(types['COL01'] == SQLType.new(SQLType::BIGINT))
|
88
|
-
assert(types['COL02'] == SQLType.new(SQLType::BLOB, nil, nil, nil, 0))
|
89
|
-
assert(types['COL03'] == SQLType.new(SQLType::CHAR, 100))
|
90
|
-
assert(types['COL04'] == SQLType.new(SQLType::DATE))
|
91
|
-
assert(types['COL05'] == SQLType.new(SQLType::DECIMAL, nil, 5, 2))
|
92
|
-
assert(types['COL06'] == SQLType.new(SQLType::DOUBLE))
|
93
|
-
assert(types['COL07'] == SQLType.new(SQLType::FLOAT))
|
94
|
-
assert(types['COL08'] == SQLType.new(SQLType::INTEGER))
|
95
|
-
assert(types['COL09'] == SQLType.new(SQLType::NUMERIC, nil, 10, 3))
|
96
|
-
assert(types['COL10'] == SQLType.new(SQLType::SMALLINT))
|
97
|
-
assert(types['COL11'] == SQLType.new(SQLType::TIME))
|
98
|
-
assert(types['COL12'] == SQLType.new(SQLType::TIMESTAMP))
|
99
|
-
assert(types['COL13'] == SQLType.new(SQLType::VARCHAR, 23))
|
100
|
-
end
|
101
|
-
end
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'TestSetup'
|
4
|
+
require 'test/unit'
|
5
|
+
require 'rubygems'
|
6
|
+
require 'fireruby'
|
7
|
+
|
8
|
+
include FireRuby
|
9
|
+
|
10
|
+
class SQLTypeTest < Test::Unit::TestCase
|
11
|
+
CURDIR = "#{Dir.getwd}"
|
12
|
+
DB_FILE = "#{CURDIR}#{File::SEPARATOR}sql_type_test.fdb"
|
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 all_types (col01 bigint, col02 blob, "\
|
25
|
+
"col03 char(100), col04 date, col05 decimal(5,2), "\
|
26
|
+
"col06 double precision, col07 float, col08 integer, "\
|
27
|
+
"col09 numeric(10,3), col10 smallint, col11 time, "\
|
28
|
+
"col12 timestamp, col13 varchar(23))")
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def teardown
|
33
|
+
@connection.close if @connection != nil && @connection.open?
|
34
|
+
|
35
|
+
if File::exist?(DB_FILE)
|
36
|
+
Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
|
37
|
+
end
|
38
|
+
puts "#{self.class.name} finished." if TEST_LOGGING
|
39
|
+
end
|
40
|
+
|
41
|
+
def test01
|
42
|
+
types = []
|
43
|
+
types.push(SQLType.new(SQLType::BIGINT))
|
44
|
+
types.push(SQLType.new(SQLType::VARCHAR, 1000))
|
45
|
+
types.push(SQLType.new(SQLType::DECIMAL, nil, 10))
|
46
|
+
types.push(SQLType.new(SQLType::NUMERIC, nil, 5, 3))
|
47
|
+
types.push(SQLType.new(SQLType::BLOB, nil, nil, nil, 1))
|
48
|
+
|
49
|
+
assert(types[0] == types[0])
|
50
|
+
assert(!(types[0] == types[1]))
|
51
|
+
assert(types[1] == SQLType.new(SQLType::VARCHAR, 1000))
|
52
|
+
|
53
|
+
assert(types[0].type == SQLType::BIGINT)
|
54
|
+
assert(types[0].length == nil)
|
55
|
+
assert(types[0].precision == nil)
|
56
|
+
assert(types[0].scale == nil)
|
57
|
+
assert(types[0].subtype == nil)
|
58
|
+
|
59
|
+
assert(types[1].type == SQLType::VARCHAR)
|
60
|
+
assert(types[1].length == 1000)
|
61
|
+
assert(types[1].precision == nil)
|
62
|
+
assert(types[1].scale == nil)
|
63
|
+
assert(types[1].subtype == nil)
|
64
|
+
|
65
|
+
assert(types[2].type == SQLType::DECIMAL)
|
66
|
+
assert(types[2].length == nil)
|
67
|
+
assert(types[2].precision == 10)
|
68
|
+
assert(types[2].scale == nil)
|
69
|
+
assert(types[2].subtype == nil)
|
70
|
+
|
71
|
+
assert(types[3].type == SQLType::NUMERIC)
|
72
|
+
assert(types[3].length == nil)
|
73
|
+
assert(types[3].precision == 5)
|
74
|
+
assert(types[3].scale == 3)
|
75
|
+
assert(types[3].subtype == nil)
|
76
|
+
|
77
|
+
assert(types[4].type == SQLType::BLOB)
|
78
|
+
assert(types[4].length == nil)
|
79
|
+
assert(types[4].precision == nil)
|
80
|
+
assert(types[4].scale == nil)
|
81
|
+
assert(types[4].subtype == 1)
|
82
|
+
end
|
83
|
+
|
84
|
+
def test02
|
85
|
+
types = SQLType.for_table("all_types", @connection)
|
86
|
+
|
87
|
+
assert(types['COL01'] == SQLType.new(SQLType::BIGINT))
|
88
|
+
assert(types['COL02'] == SQLType.new(SQLType::BLOB, nil, nil, nil, 0))
|
89
|
+
assert(types['COL03'] == SQLType.new(SQLType::CHAR, 100))
|
90
|
+
assert(types['COL04'] == SQLType.new(SQLType::DATE))
|
91
|
+
assert(types['COL05'] == SQLType.new(SQLType::DECIMAL, nil, 5, 2))
|
92
|
+
assert(types['COL06'] == SQLType.new(SQLType::DOUBLE))
|
93
|
+
assert(types['COL07'] == SQLType.new(SQLType::FLOAT))
|
94
|
+
assert(types['COL08'] == SQLType.new(SQLType::INTEGER))
|
95
|
+
assert(types['COL09'] == SQLType.new(SQLType::NUMERIC, nil, 10, 3))
|
96
|
+
assert(types['COL10'] == SQLType.new(SQLType::SMALLINT))
|
97
|
+
assert(types['COL11'] == SQLType.new(SQLType::TIME))
|
98
|
+
assert(types['COL12'] == SQLType.new(SQLType::TIMESTAMP))
|
99
|
+
assert(types['COL13'] == SQLType.new(SQLType::VARCHAR, 23))
|
100
|
+
end
|
101
|
+
end
|