transactd 3.5.0-x86-mswin32-100 → 3.6.0-x86-mswin32-100
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.
- checksums.yaml +4 -4
- data/bin/2.0/transactd.so +0 -0
- data/bin/2.1/transactd.so +0 -0
- data/bin/2.2/transactd.so +0 -0
- data/bin/2.3/transactd.so +0 -0
- data/bin/common/{tdclc_32_3_5.dll → tdclc_32_3_6.dll} +0 -0
- data/bin/common/tdclcpp_vc100_32mr_3_6.dll +0 -0
- data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +40 -4
- data/source/bzs/test/tdclrb/transactd_fetch_spec.rb +785 -0
- data/source/bzs/test/tdclrb/transactd_pool_spec.rb +21 -1
- data/source/bzs/test/tdclrb/transactd_setget_spec.rb +450 -0
- data/source/bzs/test/tdclrb/transactd_spec.rb +14 -2
- data/source/bzs/test/tdclrb/transactd_v3_spec.rb +1192 -11
- data/transactd.gemspec +1 -1
- metadata +7 -5
- data/bin/common/tdclcpp_vc100_32mr_3_5.dll +0 -0
@@ -21,7 +21,7 @@
|
|
21
21
|
require 'transactd'
|
22
22
|
require 'thwait'
|
23
23
|
|
24
|
-
Transactd::
|
24
|
+
Transactd::setFieldValueMode(Transactd::FIELD_VALUE_MODE_VALUE)
|
25
25
|
|
26
26
|
def getEnv(valuename)
|
27
27
|
return ENV[valuename] if ENV[valuename] != nil
|
@@ -46,10 +46,22 @@ BDFNAME = '?dbfile=' + SCHEMANAME + '.bdf'
|
|
46
46
|
URL = PROTOCOL + '://' + USERPART + HOSTNAME + '/' + DBNAME + BDFNAME + PASSPART
|
47
47
|
TABLENAME = 'user'
|
48
48
|
|
49
|
+
def getMode(mode)
|
50
|
+
mode += 128 if mode <= -128
|
51
|
+
mode += 64 if mode <= -64
|
52
|
+
mode += 32 if mode <= -32
|
53
|
+
mode += 16 if mode <= -16
|
54
|
+
return mode
|
55
|
+
end
|
56
|
+
|
49
57
|
describe Transactd, 'pool' do
|
50
58
|
it 'create ConnectParams' do
|
51
59
|
cp = Transactd::ConnectParams.new(URL)
|
52
60
|
expect(cp.uri()).to eq URL
|
61
|
+
cp.setMode(Transactd::TD_OPEN_NORMAL)
|
62
|
+
expect(getMode(cp.mode)).to eq Transactd::TD_OPEN_NORMAL
|
63
|
+
cp.setMode(Transactd::TD_OPEN_READONLY)
|
64
|
+
expect(getMode(cp.mode)).to eq Transactd::TD_OPEN_READONLY
|
53
65
|
cp = Transactd::ConnectParams.new(PROTOCOL, HOSTNAME, DBNAME, SCHEMANAME, USERNAME, PASSWORD)
|
54
66
|
expect(cp.uri()).to eq URL
|
55
67
|
end
|
@@ -57,8 +69,11 @@ describe Transactd, 'pool' do
|
|
57
69
|
it 'use connections' do
|
58
70
|
Transactd::PooledDbManager::setMaxConnections(3)
|
59
71
|
cp = Transactd::ConnectParams.new(URL)
|
72
|
+
cp.setMode(Transactd::TD_OPEN_READONLY)
|
73
|
+
expect(getMode(cp.mode)).to eq Transactd::TD_OPEN_READONLY
|
60
74
|
expect(cp.uri()).to eq URL
|
61
75
|
dbm1 = Transactd::PooledDbManager.new(cp)
|
76
|
+
expect(getMode(dbm1.mode)).to eq Transactd::TD_OPEN_READONLY
|
62
77
|
dbm2 = Transactd::PooledDbManager.new(cp)
|
63
78
|
dbm3 = Transactd::PooledDbManager.new(cp)
|
64
79
|
dbm1.unUse()
|
@@ -73,13 +88,17 @@ describe Transactd, 'pool' do
|
|
73
88
|
dbm3.unUse()
|
74
89
|
dbm4.unUse()
|
75
90
|
dbm5.unUse()
|
91
|
+
dbm1.reset(30)
|
76
92
|
end
|
77
93
|
|
78
94
|
it 'connect to table' do
|
79
95
|
Transactd::PooledDbManager::setMaxConnections(3)
|
80
96
|
cp = Transactd::ConnectParams.new(URL)
|
97
|
+
cp.setMode(Transactd::TD_OPEN_NORMAL)
|
98
|
+
expect(getMode(cp.mode)).to eq Transactd::TD_OPEN_NORMAL
|
81
99
|
expect(cp.uri()).to eq URL
|
82
100
|
dbm = Transactd::PooledDbManager.new(cp)
|
101
|
+
expect(getMode(dbm.mode)).to eq Transactd::TD_OPEN_NORMAL
|
83
102
|
atu = Transactd::ActiveTable.new(dbm, 'user')
|
84
103
|
q = Transactd::Query.new()
|
85
104
|
atu.alias('名前', 'name')
|
@@ -93,6 +112,7 @@ describe Transactd, 'pool' do
|
|
93
112
|
expect(rs[0][2]).to eq 1
|
94
113
|
atu.release()
|
95
114
|
dbm.unUse()
|
115
|
+
dbm.reset(30)
|
96
116
|
end
|
97
117
|
|
98
118
|
it 'can be used in MultiThreads' do
|
@@ -0,0 +1,450 @@
|
|
1
|
+
# coding : utf-8
|
2
|
+
=begin ============================================================
|
3
|
+
Copyright (C) 2015 BizStation Corp All rights reserved.
|
4
|
+
|
5
|
+
This program is free software; you can redistribute it and/or
|
6
|
+
modify it under the terms of the GNU General Public License
|
7
|
+
as published by the Free Software Foundation; either version 2
|
8
|
+
of the License, or (at your option) any later version.
|
9
|
+
|
10
|
+
This program is distributed in the hope that it will be useful,
|
11
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
GNU General Public License for more details.
|
14
|
+
|
15
|
+
You should have received a copy of the GNU General Public License
|
16
|
+
along with this program; if not, write to the Free Software
|
17
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
18
|
+
02111-1307, USA.
|
19
|
+
===================================================================
|
20
|
+
=end
|
21
|
+
require 'transactd'
|
22
|
+
|
23
|
+
def getEnv(valuename)
|
24
|
+
return ENV[valuename] if ENV[valuename] != nil
|
25
|
+
return ''
|
26
|
+
end
|
27
|
+
|
28
|
+
def getHost()
|
29
|
+
hostname = getEnv('TRANSACTD_RSPEC_HOST')
|
30
|
+
hostname = '127.0.0.1/' if hostname == ''
|
31
|
+
hostname = hostname + '/' unless (hostname =~ /\/$/)
|
32
|
+
return hostname
|
33
|
+
end
|
34
|
+
|
35
|
+
INT_VALUE = 10
|
36
|
+
INT_VALUE_AS_DBL = 10.0
|
37
|
+
INT_VALUE_AS_STR = '10'
|
38
|
+
INT_NULL = 0
|
39
|
+
INT_NULL_AS_DBL = 0.0
|
40
|
+
INT_NULL_AS_STR = '0'
|
41
|
+
|
42
|
+
STR_VALUE = 'テスト'
|
43
|
+
STR_NULL = ''
|
44
|
+
STR_VALUE_AS_BIN = ["e38386e382b9e38388"].pack('H*')
|
45
|
+
|
46
|
+
BIN_VALUE = ["e38386e382b900e38388"].pack('H*')
|
47
|
+
BIN_VALUE_AS_STR = 'テス' # cut off after 0x00
|
48
|
+
BIN_NULL = ''
|
49
|
+
|
50
|
+
SJIS_VALUE = STR_VALUE.encode("Shift_JIS")
|
51
|
+
SJIS_NULL = STR_NULL.encode("Shift_JIS")
|
52
|
+
|
53
|
+
SJIS_BIN_VALUE = ["83658358008367"].pack('H*')
|
54
|
+
SJIS_BIN_VALUE_AS_STR = BIN_VALUE_AS_STR.encode("Shift_JIS") # cut off after 0x00
|
55
|
+
SJIS_BIN_NULL = BIN_NULL.encode("Shift_JIS")
|
56
|
+
|
57
|
+
FI_numNotNull = 1
|
58
|
+
FI_numNullable = 2
|
59
|
+
FI_strNotNull = 3
|
60
|
+
FI_strNullable = 4
|
61
|
+
FI_binNotNull = 5
|
62
|
+
FI_binNullable = 6
|
63
|
+
FI_binSJISNotNull = 7
|
64
|
+
FI_binSJISNullable = 8
|
65
|
+
|
66
|
+
HOSTNAME = getHost()
|
67
|
+
USERNAME = getEnv('TRANSACTD_RSPEC_USER')
|
68
|
+
USERPART = USERNAME == '' ? '' : USERNAME + '@'
|
69
|
+
PASSWORD = getEnv('TRANSACTD_RSPEC_PASS')
|
70
|
+
PASSPART = PASSWORD == '' ? '' : '&pwd=' + PASSWORD
|
71
|
+
DBNAME = 'testsetget'
|
72
|
+
TABLENAME = 'setget'
|
73
|
+
URL = 'tdap://' + USERPART + HOSTNAME + DBNAME + '?dbfile=transactd_schema' + PASSPART
|
74
|
+
|
75
|
+
def createTable(db)
|
76
|
+
dbdef = db.dbDef()
|
77
|
+
td = Transactd::Tabledef.new()
|
78
|
+
td.charsetIndex = Transactd::CHARSET_UTF8
|
79
|
+
td.setTableName(TABLENAME)
|
80
|
+
td.setFileName(TABLENAME + '.dat')
|
81
|
+
table_id = 1
|
82
|
+
td.id = table_id
|
83
|
+
td.pageSize = 2048
|
84
|
+
dbdef.insertTable(td)
|
85
|
+
expect(dbdef.stat()).to eq 0
|
86
|
+
# 0: id
|
87
|
+
fd = dbdef.insertField(table_id, 0)
|
88
|
+
fd.setName('id')
|
89
|
+
fd.type = Transactd::Ft_autoinc
|
90
|
+
fd.len = 4
|
91
|
+
fd.setNullable(false)
|
92
|
+
# 1: numNotNull
|
93
|
+
fd = dbdef.insertField(table_id, FI_numNotNull)
|
94
|
+
fd.setName('numNotNull')
|
95
|
+
fd.type = Transactd::Ft_integer
|
96
|
+
fd.len = 1
|
97
|
+
fd.setNullable(false)
|
98
|
+
# 2: numNullable
|
99
|
+
fd = dbdef.insertField(table_id, FI_numNullable)
|
100
|
+
fd.setName('numNullable')
|
101
|
+
fd.type = Transactd::Ft_integer
|
102
|
+
fd.len = 1
|
103
|
+
fd.setNullable(true)
|
104
|
+
# 3: strNotNull
|
105
|
+
fd = dbdef.insertField(table_id, FI_strNotNull)
|
106
|
+
fd.setName('strNotNull')
|
107
|
+
fd.type = Transactd::Ft_myvarchar
|
108
|
+
fd.setLenByCharnum(40)
|
109
|
+
fd.setNullable(false)
|
110
|
+
# 4: strNullable
|
111
|
+
fd = dbdef.insertField(table_id, FI_strNullable)
|
112
|
+
fd.setName('strNullable')
|
113
|
+
fd.type = Transactd::Ft_myvarchar
|
114
|
+
fd.setLenByCharnum(40)
|
115
|
+
fd.setNullable(true)
|
116
|
+
# 5: binNotNull
|
117
|
+
fd = dbdef.insertField(table_id, FI_binNotNull)
|
118
|
+
fd.setName('binNotNull')
|
119
|
+
fd.type = Transactd::Ft_myblob
|
120
|
+
fd.len = 9
|
121
|
+
fd.setNullable(false)
|
122
|
+
fd.setCharsetIndex(Transactd::charsetIndex("binary"))
|
123
|
+
# 6: binNullable
|
124
|
+
fd = dbdef.insertField(table_id, FI_binNullable)
|
125
|
+
fd.setName('binNullable')
|
126
|
+
fd.type = Transactd::Ft_myblob
|
127
|
+
fd.len = 9
|
128
|
+
fd.setNullable(true)
|
129
|
+
fd.setCharsetIndex(Transactd::charsetIndex("binary"))
|
130
|
+
# 7: binSJISNotNull
|
131
|
+
fd = dbdef.insertField(table_id, FI_binSJISNotNull)
|
132
|
+
fd.setName('binSJISNotNull')
|
133
|
+
fd.type = Transactd::Ft_myblob
|
134
|
+
fd.len = 9
|
135
|
+
fd.setNullable(false)
|
136
|
+
fd.setCharsetIndex(Transactd::charsetIndex("cp932"))
|
137
|
+
# 8: binSJISNullable
|
138
|
+
fd = dbdef.insertField(table_id, FI_binSJISNullable)
|
139
|
+
fd.setName('binSJISNullable')
|
140
|
+
fd.type = Transactd::Ft_myblob
|
141
|
+
fd.len = 9
|
142
|
+
fd.setNullable(true)
|
143
|
+
fd.setCharsetIndex(Transactd::charsetIndex("cp932"))
|
144
|
+
# primary key
|
145
|
+
kd = dbdef.insertKey(table_id, 0)
|
146
|
+
kd.segment(0).fieldNum = 0
|
147
|
+
kd.segment(0).flags.bit8 = 1
|
148
|
+
kd.segment(0).flags.bit1 = 1
|
149
|
+
kd.segmentCount = 1
|
150
|
+
td.primaryKeyNum = 0
|
151
|
+
# save schema
|
152
|
+
dbdef.updateTableDef(table_id)
|
153
|
+
expect(dbdef.stat()).to eq 0
|
154
|
+
# open table
|
155
|
+
tb = db.openTable(TABLENAME)
|
156
|
+
# insert test data
|
157
|
+
# id:1
|
158
|
+
tb.clearBuffer()
|
159
|
+
tb.setFV(FI_numNotNull, INT_VALUE)
|
160
|
+
tb.setFV(FI_strNotNull, STR_VALUE)
|
161
|
+
tb.setFV(FI_binNotNull, BIN_VALUE, BIN_VALUE.length)
|
162
|
+
tb.setFV(FI_binSJISNotNull, STR_VALUE)
|
163
|
+
tb.insert()
|
164
|
+
expect(tb.stat()).to eq 0
|
165
|
+
# id:2
|
166
|
+
tb.clearBuffer()
|
167
|
+
tb.setFV(FI_numNotNull, INT_VALUE)
|
168
|
+
tb.setFV(FI_numNullable, INT_VALUE)
|
169
|
+
tb.setFV(FI_strNotNull, STR_VALUE)
|
170
|
+
tb.setFV(FI_strNullable, BIN_VALUE)
|
171
|
+
tb.setFV(FI_binNotNull, STR_VALUE)
|
172
|
+
tb.setFV(FI_binNullable, BIN_VALUE, BIN_VALUE.length)
|
173
|
+
tb.setFV(FI_binSJISNotNull, STR_VALUE)
|
174
|
+
tb.setFV(FI_binSJISNullable, SJIS_BIN_VALUE, SJIS_BIN_VALUE.length)
|
175
|
+
tb.insert()
|
176
|
+
expect(tb.stat()).to eq 0
|
177
|
+
tb.close
|
178
|
+
end
|
179
|
+
|
180
|
+
def createDatabase
|
181
|
+
db = Transactd::Database.new()
|
182
|
+
db.open(URL, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
|
183
|
+
if db.stat() != Transactd::ERROR_NO_DATABASE
|
184
|
+
expect(db.stat()).to eq 0
|
185
|
+
db.drop()
|
186
|
+
expect(db.stat()).to eq 0
|
187
|
+
end
|
188
|
+
db.create(URL)
|
189
|
+
expect(db.stat()).to eq 0
|
190
|
+
db.open(URL, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
|
191
|
+
expect(db.stat()).to eq 0
|
192
|
+
createTable(db)
|
193
|
+
db.close
|
194
|
+
end
|
195
|
+
|
196
|
+
def testTableGetFVX(tb)
|
197
|
+
tb.seekFirst()
|
198
|
+
expect(tb.stat()).to eq 0
|
199
|
+
# numNotNull
|
200
|
+
expect(tb.getFVNull(FI_numNotNull)).to be false
|
201
|
+
expect( tb.getFVint(FI_numNotNull)).to eq INT_VALUE
|
202
|
+
expect( tb.getFV64(FI_numNotNull)).to eq INT_VALUE
|
203
|
+
expect( tb.getFVdbl(FI_numNotNull)).to eq INT_VALUE_AS_DBL
|
204
|
+
expect( tb.getFVstr(FI_numNotNull)).to eq INT_VALUE_AS_STR
|
205
|
+
# numNullable
|
206
|
+
expect(tb.getFVNull(FI_numNullable)).to be true
|
207
|
+
expect( tb.getFVint(FI_numNullable)).to eq INT_NULL
|
208
|
+
expect( tb.getFV64(FI_numNullable)).to eq INT_NULL
|
209
|
+
expect( tb.getFVdbl(FI_numNullable)).to eq INT_NULL_AS_DBL
|
210
|
+
expect( tb.getFVstr(FI_numNullable)).to eq INT_NULL_AS_STR
|
211
|
+
# strNotNull
|
212
|
+
expect(tb.getFVNull(FI_strNotNull)).to be false
|
213
|
+
expect( tb.getFVstr(FI_strNotNull)).to eq STR_VALUE
|
214
|
+
bin = tb.getFVbin(FI_strNotNull)
|
215
|
+
expect(bin.encoding).to eq Encoding::ASCII_8BIT
|
216
|
+
expect(bin.force_encoding("utf-8")).to eq STR_VALUE
|
217
|
+
# strNullable
|
218
|
+
expect(tb.getFVNull(FI_strNullable)).to be true
|
219
|
+
expect( tb.getFVstr(FI_strNullable)).to eq STR_NULL
|
220
|
+
bin = tb.getFVbin(FI_strNullable)
|
221
|
+
expect(bin.encoding).to eq Encoding::ASCII_8BIT
|
222
|
+
expect(bin.force_encoding("utf-8")).to eq STR_NULL
|
223
|
+
# binNotNull
|
224
|
+
expect(tb.getFVNull(FI_binNotNull)).to be false
|
225
|
+
expect( tb.getFVstr(FI_binNotNull)).to eq BIN_VALUE_AS_STR
|
226
|
+
bin = tb.getFVbin(FI_binNotNull)
|
227
|
+
expect(bin.encoding).to eq Encoding::ASCII_8BIT
|
228
|
+
expect(bin).to eq BIN_VALUE
|
229
|
+
# binNullable
|
230
|
+
expect(tb.getFVNull(FI_binNullable)).to be true
|
231
|
+
expect( tb.getFVstr(FI_binNullable)).to eq BIN_NULL
|
232
|
+
bin = tb.getFVbin(FI_binNullable)
|
233
|
+
expect(bin.encoding).to eq Encoding::ASCII_8BIT
|
234
|
+
expect(bin).to eq BIN_NULL
|
235
|
+
# binSJISNotNull
|
236
|
+
expect(tb.getFVNull(FI_binSJISNotNull)).to be false
|
237
|
+
expect( tb.getFVstr(FI_binSJISNotNull)).to eq STR_VALUE # getFVstr converts value to utf_8 from shift_jis.
|
238
|
+
bin = tb.getFVbin(FI_binSJISNotNull) # getFVbin does not convert encoding.
|
239
|
+
expect(bin.encoding).to eq Encoding::ASCII_8BIT
|
240
|
+
expect(bin.force_encoding("Shift_JIS")).to eq SJIS_VALUE
|
241
|
+
# binSJISNotNull
|
242
|
+
expect(tb.getFVNull(FI_binSJISNullable)).to be true
|
243
|
+
expect( tb.getFVstr(FI_binSJISNullable)).to eq STR_NULL
|
244
|
+
bin = tb.getFVbin(FI_binSJISNullable)
|
245
|
+
expect(bin.encoding).to eq Encoding::ASCII_8BIT
|
246
|
+
expect(bin.force_encoding("Shift_JIS")).to eq STR_NULL
|
247
|
+
end
|
248
|
+
|
249
|
+
def testTableSetFV(tb)
|
250
|
+
tb.seekFirst()
|
251
|
+
expect(tb.stat()).to eq 0
|
252
|
+
# SET VALUE AS BINARY
|
253
|
+
# setFV does not convert the values if length parameter is passed.
|
254
|
+
tb.setFV(FI_binSJISNotNull, SJIS_BIN_VALUE, SJIS_BIN_VALUE.length) # SJIS_BIN_VALUE will not be converted.
|
255
|
+
str = tb.getFVstr(FI_binSJISNotNull) # getFVstr converts value to utf_8 from shift_jis.
|
256
|
+
expect(str.encoding).to eq Encoding::UTF_8
|
257
|
+
expect(str).to eq BIN_VALUE_AS_STR # the string value will end with null (0x00) character.
|
258
|
+
bin = tb.getFVbin(FI_binSJISNotNull) # getFVbin does not convert encoding.
|
259
|
+
expect(bin.encoding).to eq Encoding::ASCII_8BIT
|
260
|
+
expect(bin).to eq SJIS_BIN_VALUE # the binary value can contain null (0x00) characters.
|
261
|
+
# SET VALUE AS STRING
|
262
|
+
# setFV converts the values if length parameter is not passed.
|
263
|
+
tb.setFV(FI_binSJISNotNull, BIN_VALUE) # BIN_VALUE will be converted to Shift_JIS from utf_8.
|
264
|
+
str = tb.getFVstr(FI_binSJISNotNull) # getFVstr converts value to utf_8 from shift_jis.
|
265
|
+
expect(str.encoding).to eq Encoding::UTF_8
|
266
|
+
expect(str).to eq BIN_VALUE_AS_STR # the string value will end with null (0x00) character.
|
267
|
+
bin = tb.getFVbin(FI_binSJISNotNull) # getFVbin does not convert encoding.
|
268
|
+
expect(bin.encoding).to eq Encoding::ASCII_8BIT
|
269
|
+
expect(bin.force_encoding("Shift_JIS")).to eq SJIS_BIN_VALUE_AS_STR
|
270
|
+
# the value end with null (0x00) character on setFV (because it regarded as string).
|
271
|
+
end
|
272
|
+
|
273
|
+
def testTableGetMethods_CheckArrayValue(arr)
|
274
|
+
# string values
|
275
|
+
expect(arr[FI_strNotNull].encoding).to eq Encoding::UTF_8
|
276
|
+
expect(arr[FI_strNotNull]).to eq STR_VALUE
|
277
|
+
expect(arr[FI_strNullable].encoding).to eq Encoding::UTF_8
|
278
|
+
expect(arr[FI_strNullable]).to eq BIN_VALUE_AS_STR # cut by null
|
279
|
+
# binary values
|
280
|
+
expect(arr[FI_binNotNull].encoding).to eq Encoding::ASCII_8BIT
|
281
|
+
expect(arr[FI_binNotNull]).to eq STR_VALUE_AS_BIN
|
282
|
+
expect(arr[FI_binNullable].encoding).to eq Encoding::ASCII_8BIT
|
283
|
+
expect(arr[FI_binNullable]).to eq BIN_VALUE
|
284
|
+
# shift_jis string in binary field (automatically converted into utf_8)
|
285
|
+
expect(arr[FI_binSJISNotNull].encoding).to eq Encoding::UTF_8
|
286
|
+
expect(arr[FI_binSJISNotNull]).to eq STR_VALUE
|
287
|
+
expect(arr[FI_binSJISNullable].encoding).to eq Encoding::UTF_8
|
288
|
+
expect(arr[FI_binSJISNullable]).to eq BIN_VALUE_AS_STR # cut by null
|
289
|
+
end
|
290
|
+
|
291
|
+
def testTableGetMethods_CheckObjValue(obj)
|
292
|
+
# string values
|
293
|
+
expect(obj.strNotNull.encoding).to eq Encoding::UTF_8
|
294
|
+
expect(obj.strNotNull).to eq STR_VALUE
|
295
|
+
expect(obj.strNullable.encoding).to eq Encoding::UTF_8
|
296
|
+
expect(obj.strNullable).to eq BIN_VALUE_AS_STR # cut by null
|
297
|
+
# binary values
|
298
|
+
expect(obj.binNotNull.encoding).to eq Encoding::ASCII_8BIT
|
299
|
+
expect(obj.binNotNull).to eq STR_VALUE_AS_BIN
|
300
|
+
expect(obj.binNullable.encoding).to eq Encoding::ASCII_8BIT
|
301
|
+
expect(obj.binNullable).to eq BIN_VALUE
|
302
|
+
# shift_jis string in binary field (automatically converted into utf_8)
|
303
|
+
expect(obj.binSJISNotNull.encoding).to eq Encoding::UTF_8
|
304
|
+
expect(obj.binSJISNotNull).to eq STR_VALUE
|
305
|
+
expect(obj.binSJISNullable.encoding).to eq Encoding::UTF_8
|
306
|
+
expect(obj.binSJISNullable).to eq BIN_VALUE_AS_STR # cut by null
|
307
|
+
end
|
308
|
+
|
309
|
+
def testTableGetMethods(tb)
|
310
|
+
tb.setKeyNum(0)
|
311
|
+
expect(tb.stat()).to eq 0
|
312
|
+
tb.seekFirst()
|
313
|
+
expect(tb.stat()).to eq 0
|
314
|
+
tb.seekNext()
|
315
|
+
expect(tb.stat()).to eq 0
|
316
|
+
Transactd::set_field_value_mode(Transactd::FIELD_VALUE_MODE_VALUE)
|
317
|
+
# get values as array
|
318
|
+
tb.fetchMode = Transactd::FETCH_VAL_NUM
|
319
|
+
testTableGetMethods_CheckArrayValue(tb.fields)
|
320
|
+
# get values as obj
|
321
|
+
tb.fetchMode = Transactd::FETCH_OBJ
|
322
|
+
testTableGetMethods_CheckObjValue(tb.fields)
|
323
|
+
# findAll
|
324
|
+
q = Transactd::Query.new()
|
325
|
+
tb.clearBuffer()
|
326
|
+
expect(tb.stat()).to eq 0
|
327
|
+
tb.setQuery(q)
|
328
|
+
expect(tb.stat()).to eq 0
|
329
|
+
# get values as array
|
330
|
+
tb.seekFirst()
|
331
|
+
expect(tb.stat()).to eq 0
|
332
|
+
tb.fetchMode = Transactd::FETCH_VAL_NUM
|
333
|
+
arr = tb.findAll
|
334
|
+
expect(arr.length).to eq 2
|
335
|
+
testTableGetMethods_CheckArrayValue(arr[1])
|
336
|
+
# get values as obj
|
337
|
+
tb.seekFirst()
|
338
|
+
expect(tb.stat()).to eq 0
|
339
|
+
tb.fetchMode = Transactd::FETCH_OBJ
|
340
|
+
arr = tb.findAll
|
341
|
+
expect(arr.length).to eq 2
|
342
|
+
testTableGetMethods_CheckObjValue(arr[1])
|
343
|
+
end
|
344
|
+
|
345
|
+
def testField(tb)
|
346
|
+
tb.setKeyNum(0)
|
347
|
+
expect(tb.stat()).to eq 0
|
348
|
+
tb.seekFirst()
|
349
|
+
expect(tb.stat()).to eq 0
|
350
|
+
tb.seekNext()
|
351
|
+
expect(tb.stat()).to eq 0
|
352
|
+
Transactd::field_value_mode = Transactd::FIELD_VALUE_MODE_VALUE
|
353
|
+
tb.fetchMode = Transactd::FETCH_RECORD_INTO
|
354
|
+
rec = tb.fields
|
355
|
+
# get with []
|
356
|
+
testTableGetMethods_CheckArrayValue(rec)
|
357
|
+
# set with []=
|
358
|
+
rec[FI_strNotNull] = STR_VALUE
|
359
|
+
expect(rec[FI_strNotNull].encoding).to eq Encoding::UTF_8
|
360
|
+
expect(rec[FI_strNotNull]).to eq STR_VALUE
|
361
|
+
rec[FI_strNullable] = STR_VALUE_AS_BIN
|
362
|
+
expect(rec[FI_strNullable].encoding).to eq Encoding::UTF_8
|
363
|
+
expect(rec[FI_strNullable]).to eq STR_VALUE
|
364
|
+
rec[FI_binNotNull] = BIN_VALUE
|
365
|
+
expect(rec[FI_binNotNull].encoding).to eq Encoding::ASCII_8BIT
|
366
|
+
expect(rec[FI_binNotNull]).to eq BIN_VALUE
|
367
|
+
rec[FI_binNullable] = STR_VALUE
|
368
|
+
expect(rec[FI_binNullable].encoding).to eq Encoding::ASCII_8BIT
|
369
|
+
expect(rec[FI_binNullable]).to eq STR_VALUE_AS_BIN
|
370
|
+
rec[FI_binSJISNotNull] = STR_VALUE
|
371
|
+
expect(rec[FI_binSJISNotNull].encoding).to eq Encoding::UTF_8
|
372
|
+
expect(rec[FI_binSJISNotNull]).to eq STR_VALUE
|
373
|
+
rec[FI_binSJISNullable] = STR_VALUE
|
374
|
+
expect(rec[FI_binSJISNullable].encoding).to eq Encoding::UTF_8
|
375
|
+
expect(rec[FI_binSJISNullable]).to eq STR_VALUE
|
376
|
+
# set with set_value_by_object(obj)
|
377
|
+
tb.fetchMode = Transactd::FETCH_OBJ
|
378
|
+
obj = tb.fields
|
379
|
+
obj.strNotNull = STR_VALUE
|
380
|
+
obj.strNullable = BIN_VALUE
|
381
|
+
obj.binNotNull = STR_VALUE
|
382
|
+
obj.binNullable = BIN_VALUE
|
383
|
+
obj.binSJISNotNull = STR_VALUE
|
384
|
+
obj.binSJISNullable = BIN_VALUE
|
385
|
+
tb.clearBuffer
|
386
|
+
rec.set_value_by_object(obj)
|
387
|
+
testTableGetMethods_CheckArrayValue(rec)
|
388
|
+
end
|
389
|
+
|
390
|
+
def testRecordset(rs)
|
391
|
+
expect(rs.size).to eq 2
|
392
|
+
# get with [] as array
|
393
|
+
rs.fetchMode = Transactd::FETCH_VAL_NUM
|
394
|
+
testTableGetMethods_CheckArrayValue(rs[1])
|
395
|
+
# get with [] as obj
|
396
|
+
rs.fetchMode = Transactd::FETCH_OBJ
|
397
|
+
testTableGetMethods_CheckObjValue(rs[1])
|
398
|
+
# get with to_a as array
|
399
|
+
rs.fetchMode = Transactd::FETCH_VAL_NUM
|
400
|
+
arr = rs.to_a
|
401
|
+
expect(arr.length).to eq 2
|
402
|
+
testTableGetMethods_CheckArrayValue(arr[1])
|
403
|
+
# get with to_a as obj
|
404
|
+
rs.fetchMode = Transactd::FETCH_OBJ
|
405
|
+
arr = rs.to_a
|
406
|
+
expect(arr.length).to eq 2
|
407
|
+
testTableGetMethods_CheckObjValue(arr[1])
|
408
|
+
end
|
409
|
+
|
410
|
+
describe Transactd, 'set get values' do
|
411
|
+
it 'prepare database and table' do
|
412
|
+
createDatabase
|
413
|
+
end
|
414
|
+
|
415
|
+
it 'get values from table' do
|
416
|
+
db = Transactd::Database.new()
|
417
|
+
db.open(URL, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
|
418
|
+
expect(db.stat()).to eq 0
|
419
|
+
tb = db.openTable(TABLENAME)
|
420
|
+
expect(db.stat()).to eq 0
|
421
|
+
testTableGetFVX(tb)
|
422
|
+
testTableSetFV(tb)
|
423
|
+
testTableGetMethods(tb)
|
424
|
+
tb.close
|
425
|
+
db.close
|
426
|
+
end
|
427
|
+
|
428
|
+
it 'get/set values from/to record' do
|
429
|
+
db = Transactd::Database.new()
|
430
|
+
db.open(URL, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
|
431
|
+
expect(db.stat()).to eq 0
|
432
|
+
tb = db.openTable(TABLENAME)
|
433
|
+
expect(db.stat()).to eq 0
|
434
|
+
testField(tb)
|
435
|
+
tb.close
|
436
|
+
db.close
|
437
|
+
end
|
438
|
+
|
439
|
+
it 'get values from recordset' do
|
440
|
+
db = Transactd::Database.new()
|
441
|
+
db.open(URL, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
|
442
|
+
expect(db.stat()).to eq 0
|
443
|
+
at = Transactd::ActiveTable.new(db, TABLENAME)
|
444
|
+
q = Transactd::Query.new()
|
445
|
+
rs = at.index(0).keyValue(1).read(q)
|
446
|
+
at.release
|
447
|
+
testRecordset(rs)
|
448
|
+
db.close
|
449
|
+
end
|
450
|
+
end
|