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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 81ba99d8028b6210967df83a90575edf669c1cf5
4
- data.tar.gz: 4dee3d005d4e97cf9a3b785cde4c46de34cebddb
3
+ metadata.gz: 5e1f784449abf50bb8c1bfa0957283a00f8d4600
4
+ data.tar.gz: b340100d7034ab744751b07138c34f9dcb31808f
5
5
  SHA512:
6
- metadata.gz: 346af1c3ed9c93b1c22309630b5b99caa48ca3c31c6d0f9c3bb267b4233a5870dcd725f859b135c6dc5612817790a49a64fd28197f0ac3f5087a017c48e00d03
7
- data.tar.gz: 032201f53edff1a812bab845a0ebc4a8b77bcbe1ad4943df7359cbb960465638ee665aed43a051e5cbd43e11b6c23339c86dfbcf688eac3d38b730a0051716dc
6
+ metadata.gz: a5087302871111abe520e05e50de559bf7627dce6e78099057f795e3e69445470b8f22ce06784815d7b23f5c12020eae0de22c5b20547eb7a823b5cd6ff9dc2c
7
+ data.tar.gz: ca8ef8451029d95b90e1ec09f551d18a514d856488d122980e4e0af4eb207acc68e230f50f2a7e0376b06161ab034524b8749c6eca49459081c0c53a4393ce02
data/bin/2.0/transactd.so CHANGED
Binary file
data/bin/2.1/transactd.so CHANGED
Binary file
data/bin/2.2/transactd.so CHANGED
Binary file
data/bin/2.3/transactd.so CHANGED
Binary file
@@ -20,6 +20,14 @@
20
20
  =end
21
21
  require 'transactd'
22
22
 
23
+ def hhnnssuu2i(hh, nn, ss, uu)
24
+ uu + ss * 256 + nn * 256**2 + hh * 256**3
25
+ end
26
+
27
+ def yymmdd2i(yy, mm, dd)
28
+ dd + mm * 256 + yy * 256**2
29
+ end
30
+
23
31
  describe Transactd, 'datetime' do
24
32
  it 'get BtrDate' do
25
33
  i_nowdate = Transactd::getNowDate() # get today as integer
@@ -28,8 +36,8 @@ describe Transactd, 'datetime' do
28
36
  #p i_nowdate
29
37
  #p s_i_nowdate + ' ' + s_i_nowdate.encoding.to_s
30
38
  #p s_i_nowdate2 + ' ' + s_i_nowdate2.encoding.to_s
31
- nowdate = Transactd::BtrDate.new()
32
- nowdate.i = i_nowdate # get today as BtrDate
39
+ nowdate = Transactd::BtrDate.new() # get today as BtrDate
40
+ nowdate.i = i_nowdate
33
41
  s_nowdate = Transactd::btrdtoa(nowdate)
34
42
  s_nowdate2 = Transactd::btrdtoa(nowdate, true)
35
43
  #p nowdate
@@ -37,6 +45,19 @@ describe Transactd, 'datetime' do
37
45
  #p s_nowdate2 + ' ' + s_nowdate2.encoding.to_s
38
46
  expect(s_i_nowdate).to eq s_nowdate
39
47
  expect(s_i_nowdate2).to eq s_nowdate2
48
+ expect(nowdate.yy.class).to eq Fixnum
49
+ expect(nowdate.mm.class).to eq Fixnum
50
+ expect(nowdate.dd.class).to eq Fixnum
51
+ expect("#{format('%04d', nowdate.yy)}/#{format('%02d', nowdate.mm)}/#{format('%02d', nowdate.dd)}").to eq s_nowdate
52
+ expect("#{format('%04d', nowdate.yy)}-#{format('%02d', nowdate.mm)}-#{format('%02d', nowdate.dd)}").to eq s_nowdate2
53
+ expect(i_nowdate).to eq yymmdd2i(nowdate.yy, nowdate.mm, nowdate.dd)
54
+ nowdate.yy = 2014
55
+ nowdate.mm = 8
56
+ nowdate.dd = 15
57
+ expect(nowdate.yy).to eq 2014
58
+ expect(nowdate.mm).to eq 8
59
+ expect(nowdate.dd).to eq 15
60
+ expect(nowdate.i).to eq yymmdd2i(2014, 8, 15)
40
61
  end
41
62
 
42
63
  it 'get BtrTime' do
@@ -44,12 +65,27 @@ describe Transactd, 'datetime' do
44
65
  s_i_nowtime = Transactd::btrttoa(i_nowtime)
45
66
  #p i_nowtime
46
67
  #p s_i_nowtime + ' ' + s_i_nowtime.encoding.to_s
47
- nowtime = Transactd::BtrTime.new()
48
- nowtime.i = i_nowtime # get now time as BtrTime
68
+ nowtime = Transactd::BtrTime.new() # get now time as BtrTime
69
+ nowtime.i = i_nowtime
49
70
  s_nowtime = Transactd::btrttoa(nowtime)
50
71
  #p nowtime
51
72
  #p s_nowtime + ' ' + s_nowtime.encoding.to_s
52
73
  expect(s_i_nowtime).to eq s_nowtime
74
+ expect(nowtime.hh.class).to eq Fixnum
75
+ expect(nowtime.nn.class).to eq Fixnum
76
+ expect(nowtime.ss.class).to eq Fixnum
77
+ expect(nowtime.uu.class).to eq Fixnum
78
+ expect("#{format('%02d', nowtime.hh)}:#{format('%02d', nowtime.nn)}:#{format('%02d', nowtime.ss)}").to eq s_nowtime
79
+ expect(i_nowtime).to eq hhnnssuu2i(nowtime.hh, nowtime.nn, nowtime.ss, nowtime.uu)
80
+ nowtime.hh = 1
81
+ nowtime.nn = 2
82
+ nowtime.ss = 31
83
+ nowtime.uu = 32
84
+ expect(nowtime.hh).to eq 1
85
+ expect(nowtime.nn).to eq 2
86
+ expect(nowtime.ss).to eq 31
87
+ expect(nowtime.uu).to eq 32
88
+ expect(nowtime.i).to eq hhnnssuu2i(1, 2, 31, 32)
53
89
  end
54
90
 
55
91
  it 'get BtrDateTime' do
@@ -0,0 +1,785 @@
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
+ require 'rbconfig'
24
+
25
+ def getEnv(valuename)
26
+ return ENV[valuename] if ENV[valuename] != nil
27
+ return ''
28
+ end
29
+
30
+ def getHost()
31
+ hostname = getEnv('TRANSACTD_RSPEC_HOST')
32
+ hostname = '127.0.0.1/' if hostname == ''
33
+ hostname = hostname + '/' unless (hostname =~ /\/$/)
34
+ return hostname
35
+ end
36
+
37
+ HOSTNAME = getHost()
38
+ USERNAME = getEnv('TRANSACTD_RSPEC_USER')
39
+ USERPART = USERNAME == '' ? '' : USERNAME + '@'
40
+ PASSWORD = getEnv('TRANSACTD_RSPEC_PASS')
41
+ PASSPART = PASSWORD == '' ? '' : '&pwd=' + PASSWORD
42
+ URL = 'tdap://' + USERPART + HOSTNAME + 'test_fetch?dbfile=transactd_schema' + PASSPART
43
+ TABLENAME = 'users'
44
+
45
+ FIELDS = ['id', 'name', 'age', 'group_id'];
46
+ ALIASED_FIELDS = ['id', 'name', 'age', 'group'];
47
+
48
+ MAX_ID = 2000
49
+ CHECK_MAX_ID = 10
50
+ FETCHMODES = [Transactd::FETCH_VAL_NUM, Transactd::FETCH_VAL_ASSOC, Transactd::FETCH_VAL_BOTH,
51
+ Transactd::FETCH_OBJ, Transactd::FETCH_USR_CLASS, Transactd::FETCH_RECORD_INTO]
52
+
53
+ def dropDatabase(db)
54
+ db.drop(URL)
55
+ expect(db.stat()).to eq 0
56
+ end
57
+
58
+ def createDatabase(db)
59
+ db.create(URL)
60
+ if (db.stat() == Transactd::STATUS_TABLE_EXISTS_ERROR)
61
+ dropDatabase(db)
62
+ db.create(URL)
63
+ end
64
+ expect(db.stat()).to eq 0
65
+ end
66
+
67
+ def openDatabase(db)
68
+ return db.open(URL, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
69
+ end
70
+
71
+ def createUsersTable(db)
72
+ openDatabase(db)
73
+ dbdef = db.dbDef()
74
+ expect(dbdef).not_to eq nil
75
+ td = Transactd::Tabledef.new()
76
+ td.schemaCodePage = Transactd::CP_UTF8
77
+ td.setTableName(TABLENAME)
78
+ td.setFileName(TABLENAME)
79
+ td.charsetIndex = Transactd::CHARSET_UTF8
80
+ tableid = 1
81
+ td.id = tableid
82
+ dbdef.insertTable(td)
83
+ expect(dbdef.stat()).to eq 0
84
+ # id
85
+ fieldIndex = 0
86
+ fd = dbdef.insertField(tableid, fieldIndex)
87
+ fd.setName(FIELDS[fieldIndex])
88
+ fd.type = Transactd::Ft_integer
89
+ fd.len = 4
90
+ # name
91
+ fieldIndex += 1
92
+ fd = dbdef.insertField(tableid, fieldIndex)
93
+ fd.setName(FIELDS[fieldIndex])
94
+ fd.type = Transactd::Ft_myvarchar
95
+ fd.setLenByCharnum(60)
96
+ # age
97
+ fieldIndex += 1
98
+ fd = dbdef.insertField(tableid, fieldIndex)
99
+ fd.setName(FIELDS[fieldIndex])
100
+ fd.type = Transactd::Ft_integer
101
+ fd.len = 4
102
+ # group_id
103
+ fieldIndex += 1
104
+ fd = dbdef.insertField(tableid, fieldIndex)
105
+ fd.setName(FIELDS[fieldIndex])
106
+ fd.type = Transactd::Ft_integer
107
+ fd.len = 4
108
+ # primary key
109
+ keynum = 0
110
+ kd = dbdef.insertKey(tableid, keynum)
111
+ kd.segment(0).fieldNum = 0 # id
112
+ kd.segment(0).flags.bit8 = 1
113
+ kd.segment(0).flags.bit1 = 1
114
+ kd.segmentCount = 1
115
+ td = dbdef.tableDefs(tableid)
116
+ td.primaryKeyNum = keynum
117
+ # update
118
+ dbdef.updateTableDef(tableid)
119
+ expect(dbdef.stat()).to eq 0
120
+ end
121
+
122
+ def insertData(db)
123
+ tb = db.openTable(TABLENAME, Transactd::TD_OPEN_NORMAL)
124
+ expect(db.stat()).to eq 0
125
+ begin
126
+ db.beginTrn()
127
+ tb.clearBuffer()
128
+ for i in 1..MAX_ID
129
+ tb.setFV(0, i) # id
130
+ tb.setFV(1, i.to_s() + " user") # name
131
+ tb.setFV(2, (i % 50) + 15 + rand(15)) # age
132
+ tb.setFV(3, (i + rand(5)) % 5) # group_id
133
+ tb.insert()
134
+ end
135
+ db.endTrn()
136
+ tb.close()
137
+ rescue => e
138
+ db.abortTrn()
139
+ tb.close()
140
+ expect(true).to eq false
141
+ end
142
+ end
143
+
144
+
145
+ class UserBase
146
+ @_alias_map = {}
147
+ def self.setAlias(aliased)
148
+ @_alias_map = (aliased ? { :group => 'group_id' } : {}) # This is reverse map
149
+ self
150
+ end
151
+ def self.alias_map
152
+ return @_alias_map
153
+ end
154
+
155
+ @_nodefine_original = false
156
+ def self.set_nodefine_original(v)
157
+ @_nodefine_original = v
158
+ self
159
+ end
160
+ def self.nodefine_original
161
+ return @_nodefine_original
162
+ end
163
+ end
164
+
165
+
166
+ def openTable(db)
167
+ tb = db.openTable(TABLENAME)
168
+ expect(db.stat()).to eq 0
169
+ return tb
170
+ end
171
+
172
+ def seekId1(tb)
173
+ tb.setKeyNum(0)
174
+ expect(tb.stat()).to eq 0
175
+ tb.clearBuffer()
176
+ expect(tb.stat()).to eq 0
177
+ tb.setFV(0, 1)
178
+ expect(tb.stat()).to eq 0
179
+ tb.seek()
180
+ expect(tb.stat()).to eq 0
181
+ return tb.fields
182
+ end
183
+
184
+ def openActiveTable(db, alias_map = nil)
185
+ at = Transactd::ActiveTable.new(db, TABLENAME)
186
+ at.index(0).keyValue(0, 0)
187
+ if alias_map.is_a?(Hash)
188
+ at.resetAlias()
189
+ alias_map.each {|key, orign| at.alias(orign, key.to_s) }
190
+ else
191
+ at.alias('group_id', 'group')
192
+ end
193
+ return at
194
+ end
195
+
196
+ def getRecordSet(at)
197
+ rs = at.read(Transactd::Query.new())
198
+ expect(rs.size()).to be > 0
199
+ return rs
200
+ end
201
+
202
+ def doTestArray(rec, rec_id = 1)
203
+ expect(rec.is_a?(Array)).to eq true
204
+ expect(rec.length).to eq FIELDS.length
205
+ expect(rec[0]).to eq rec_id
206
+ expect(rec[1]).to eq "#{rec_id} user"
207
+ end
208
+
209
+ def doTestHash(rec, aliased, with_number, rec_id = 1)
210
+ expect(rec.is_a?(Hash)).to eq true
211
+ fs = aliased ? ALIASED_FIELDS : FIELDS
212
+ for name in fs
213
+ expect(rec.has_key?(name)).to eq true
214
+ end
215
+ for i in 0...fs.length
216
+ expect(rec.has_key?(i)).to eq with_number
217
+ end
218
+ expect(rec[FIELDS[0]]).to eq rec_id
219
+ expect(rec[FIELDS[1]]).to eq "#{rec_id} user"
220
+ if with_number
221
+ expect(rec[0]).to eq rec_id
222
+ expect(rec[1]).to eq "#{rec_id} user"
223
+ end
224
+ end
225
+
226
+ def doTestObject(rec, aliased, rec_id = 1)
227
+ expect(rec.is_a?(Object)).to eq true
228
+ expect(rec.is_a?(Hash)).to eq false
229
+ expect(rec.is_a?(Array)).to eq false
230
+ fs = aliased ? ALIASED_FIELDS : FIELDS
231
+ for name in fs
232
+ expect(rec.respond_to?(name)).to eq true
233
+ expect(rec.respond_to?(name + '=')).to eq true
234
+ end
235
+ expect(rec.id).to eq rec_id
236
+ expect(rec.name).to eq "#{rec_id} user"
237
+ rec.id = rec_id + 10
238
+ rec.name = "#{rec_id} user *"
239
+ expect(rec.id).to eq rec_id + 10
240
+ expect(rec.name).to eq "#{rec_id} user *"
241
+ end
242
+
243
+ def doTestClass(rec, klass)
244
+ aliased = klass.alias_map.length != 0
245
+ expect(rec.is_a?(klass)).to eq true
246
+ expect(rec.is_a?(Hash)).to eq false
247
+ expect(rec.is_a?(Array)).to eq false
248
+ expected_fields = aliased ? ALIASED_FIELDS : FIELDS
249
+ expected_fields += FIELDS unless klass.nodefine_original
250
+ expected_fields.uniq!
251
+ not_expected_fields = (ALIASED_FIELDS | FIELDS) - expected_fields
252
+ #p expected_fields
253
+ #p not_expected_fields
254
+ for name in expected_fields
255
+ expect(rec.respond_to?(name)).to eq true
256
+ expect(rec.respond_to?(name + '=')).to eq true
257
+ end
258
+ for name in not_expected_fields
259
+ expect(rec.respond_to?(name)).to eq false
260
+ expect(rec.respond_to?(name + '=')).to eq false
261
+ end
262
+ end
263
+
264
+ def doTestTable(db, klass)
265
+ # table
266
+ tb = openTable(db)
267
+ tb.fetchMode = Transactd::FETCH_USR_CLASS
268
+ tb.fetchClass = klass
269
+ if klass.alias_map.length > 0
270
+ tb.setAlias("group_id", "group")
271
+ end
272
+ rec = seekId1(tb)
273
+ doTestClass(rec, klass)
274
+ for i in 2..CHECK_MAX_ID
275
+ tb.seekNext()
276
+ expect(tb.stat()).to eq 0
277
+ rec = tb.fields()
278
+ doTestClass(rec, klass)
279
+ end
280
+ tb.close()
281
+ end
282
+
283
+ def doTestRecordset(rs, klass)
284
+ # recordset
285
+ rs.fetchClass = klass
286
+ for i in 0...CHECK_MAX_ID
287
+ rec = rs[i]
288
+ doTestClass(rec, klass)
289
+ end
290
+ end
291
+
292
+ def doTestFieldsBase(rec, aliased, rec_id = 1)
293
+ expect(rec.is_a?(Transactd::Record)).to eq true
294
+ expect(rec.is_a?(Hash)).to eq false
295
+ expect(rec.is_a?(Array)).to eq false
296
+ fs = aliased ? ALIASED_FIELDS : FIELDS
297
+ for i in 0...fs.length
298
+ expect(rec.indexByName(fs[i])).to eq i
299
+ end
300
+ expect(rec[rec.indexByName(fs[0])]).to eq rec_id
301
+ expect(rec[rec.indexByName(fs[1])]).to eq "#{rec_id} user"
302
+ end
303
+
304
+ def findAll(tb)
305
+ tb.setFilter('', 0, 0)
306
+ expect(tb.stat()).to eq 0
307
+ tb.setKeyNum(0)
308
+ expect(tb.stat()).to eq 0
309
+ tb.clearBuffer()
310
+ expect(tb.stat()).to eq 0
311
+ tb.seekFirst(0)
312
+ expect(tb.stat()).to eq 0
313
+ q = Transactd::Query.new()
314
+ q.where('id', '<=', CHECK_MAX_ID).reject(1)
315
+ tb.setQuery(q)
316
+ expect(tb.stat()).to eq 0
317
+ return tb.findAll
318
+ end
319
+
320
+ def getRecordSetForFindAll(at)
321
+ q = Transactd::Query.new()
322
+ q.where('id', '<=', CHECK_MAX_ID).reject(1)
323
+ rs = at.read(q)
324
+ expect(rs.size()).to eq CHECK_MAX_ID
325
+ return rs
326
+ end
327
+
328
+ def doTestTableArray(db, klass)
329
+ # table
330
+ tb = openTable(db)
331
+ tb.fetchMode = Transactd::FETCH_USR_CLASS
332
+ tb.fetchClass = klass
333
+ if klass.alias_map.length > 0
334
+ tb.setAlias("group_id", "group")
335
+ end
336
+ arr = findAll(tb)
337
+ expect(arr.is_a?(Array)).to eq true
338
+ expect(arr.length).to eq CHECK_MAX_ID
339
+ for i in 0...arr.length
340
+ rec = arr[i]
341
+ doTestClass(rec, klass)
342
+ end
343
+ tb.close()
344
+ end
345
+
346
+ def doTestRecordsetArray(rs, klass)
347
+ # recordset
348
+ rs.fetchClass = klass
349
+ arr = rs.to_a
350
+ expect(arr.is_a?(Array)).to eq true
351
+ expect(arr.length).to eq CHECK_MAX_ID
352
+ for i in 0...arr.length
353
+ rec = arr[i]
354
+ doTestClass(rec, klass)
355
+ end
356
+ end
357
+
358
+ describe Transactd, 'FetchMode' do
359
+ it 'create database and table' do
360
+ db = Transactd::Database.new()
361
+ createDatabase(db)
362
+ openDatabase(db)
363
+ createUsersTable(db)
364
+ insertData(db)
365
+ db.close()
366
+ end
367
+
368
+ it 'fetch with FETCH_VAL_NUM' do
369
+ Transactd::setFieldValueMode(Transactd::FIELD_VALUE_MODE_VALUE)
370
+ db = Transactd::Database.new()
371
+ openDatabase(db)
372
+ # table
373
+ tb = openTable(db)
374
+ tb.fetchMode = Transactd::FETCH_VAL_NUM
375
+ rec = seekId1(tb)
376
+ doTestArray(rec)
377
+ for i in 2..CHECK_MAX_ID
378
+ tb.seekNext()
379
+ expect(tb.stat()).to eq 0
380
+ rec = tb.fields()
381
+ doTestArray(rec, i)
382
+ end
383
+ tb.close()
384
+ # activeTable
385
+ at = openActiveTable(db)
386
+ rs = getRecordSet(at)
387
+ rs.fetchMode = Transactd::FETCH_VAL_NUM
388
+ for i in 0...CHECK_MAX_ID
389
+ rec = rs[i]
390
+ doTestArray(rec, i + 1)
391
+ end
392
+ at.release()
393
+ db.close()
394
+ end
395
+
396
+ it 'fetch with FETCH_VAL_ASSOC' do
397
+ Transactd::setFieldValueMode(Transactd::FIELD_VALUE_MODE_VALUE)
398
+ db = Transactd::Database.new()
399
+ openDatabase(db)
400
+ # table
401
+ tb = openTable(db)
402
+ tb.fetchMode = Transactd::FETCH_VAL_ASSOC
403
+ rec = seekId1(tb)
404
+ doTestHash(rec, false, false)
405
+ for i in 2..CHECK_MAX_ID
406
+ tb.seekNext()
407
+ expect(tb.stat()).to eq 0
408
+ rec = tb.fields()
409
+ doTestHash(rec, false, false, i)
410
+ end
411
+ tb.close()
412
+ # activeTable
413
+ at = openActiveTable(db)
414
+ rs = getRecordSet(at)
415
+ rs.fetchMode = Transactd::FETCH_VAL_ASSOC
416
+ for i in 0...CHECK_MAX_ID
417
+ rec = rs[i]
418
+ doTestHash(rec, true, false, i + 1)
419
+ end
420
+ at.release()
421
+ db.close()
422
+ end
423
+
424
+ it 'fetch with FETCH_VAL_BOTH' do
425
+ Transactd::setFieldValueMode(Transactd::FIELD_VALUE_MODE_VALUE)
426
+ db = Transactd::Database.new()
427
+ openDatabase(db)
428
+ # table
429
+ tb = openTable(db)
430
+ tb.fetchMode = Transactd::FETCH_VAL_BOTH
431
+ rec = seekId1(tb)
432
+ doTestHash(rec, false, true)
433
+ for i in 2..CHECK_MAX_ID
434
+ tb.seekNext()
435
+ expect(tb.stat()).to eq 0
436
+ rec = tb.fields()
437
+ doTestHash(rec, false, true, i)
438
+ end
439
+ tb.close()
440
+ # activeTable
441
+ at = openActiveTable(db)
442
+ rs = getRecordSet(at)
443
+ rs.fetchMode = Transactd::FETCH_VAL_BOTH
444
+ for i in 0...CHECK_MAX_ID
445
+ rec = rs[i]
446
+ doTestHash(rec, true, true, i + 1)
447
+ end
448
+ at.release()
449
+ db.close()
450
+ end
451
+
452
+ it 'fetch with FETCH_OBJ' do
453
+ Transactd::setFieldValueMode(Transactd::FIELD_VALUE_MODE_VALUE)
454
+ db = Transactd::Database.new()
455
+ openDatabase(db)
456
+ # table
457
+ tb = openTable(db)
458
+ tb.fetchMode = Transactd::FETCH_OBJ
459
+ rec = seekId1(tb)
460
+ doTestObject(rec, false)
461
+ for i in 2..CHECK_MAX_ID
462
+ tb.seekNext()
463
+ expect(tb.stat()).to eq 0
464
+ rec = tb.fields()
465
+ doTestObject(rec, false, i)
466
+ end
467
+ tb.close()
468
+ # activeTable
469
+ at = openActiveTable(db)
470
+ rs = getRecordSet(at)
471
+ rs.fetchMode = Transactd::FETCH_OBJ
472
+ for i in 0...CHECK_MAX_ID
473
+ rec = rs[i]
474
+ doTestObject(rec, true, i + 1)
475
+ end
476
+ at.release()
477
+ db.close()
478
+ end
479
+
480
+ it 'fetch with FETCH_USR_CLASS' do
481
+ Transactd::setFieldValueMode(Transactd::FIELD_VALUE_MODE_VALUE)
482
+ db = Transactd::Database.new()
483
+ openDatabase(db)
484
+ # receiver classes
485
+ User_NA_NUO = Class.new(UserBase).setAlias(false).set_nodefine_original(false)
486
+ User_NA__UO = Class.new(UserBase).setAlias(false).set_nodefine_original(true)
487
+ User__A_NUO = Class.new(UserBase).setAlias(true).set_nodefine_original(false)
488
+ User__A__UO = Class.new(UserBase).setAlias(true).set_nodefine_original(true)
489
+ # receiver classes are not initialized by Transactd yet
490
+ expect(User_NA_NUO.instance_variable_get(:@_accessor_initialized)).to be_nil
491
+ expect(User_NA__UO.instance_variable_get(:@_accessor_initialized)).to be_nil
492
+ expect(User__A_NUO.instance_variable_get(:@_accessor_initialized)).to be_nil
493
+ expect(User__A__UO.instance_variable_get(:@_accessor_initialized)).to be_nil
494
+ # open activeTable and not aliased recordset
495
+ at = openActiveTable(db)
496
+ rs = getRecordSet(at)
497
+ rs.fetchMode = Transactd::FETCH_USR_CLASS
498
+ at.release()
499
+ # (1) User_NA_NUO : not aliased, not nodefine_original
500
+ doTestTable(db, User_NA_NUO)
501
+ doTestRecordset(rs, User_NA_NUO)
502
+ expect(User_NA_NUO.instance_variable_get(:@_accessor_initialized)).to be true
503
+ expect(User_NA__UO.instance_variable_get(:@_accessor_initialized)).to be_nil
504
+ expect(User__A_NUO.instance_variable_get(:@_accessor_initialized)).to be_nil
505
+ expect(User__A__UO.instance_variable_get(:@_accessor_initialized)).to be_nil
506
+ # (2) User_NA__UO : not aliased, nodefine_original
507
+ doTestTable(db, User_NA__UO)
508
+ doTestRecordset(rs, User_NA__UO)
509
+ expect(User_NA_NUO.instance_variable_get(:@_accessor_initialized)).to be true
510
+ expect(User_NA__UO.instance_variable_get(:@_accessor_initialized)).to be true
511
+ expect(User__A_NUO.instance_variable_get(:@_accessor_initialized)).to be_nil
512
+ expect(User__A__UO.instance_variable_get(:@_accessor_initialized)).to be_nil
513
+ # open activeTable and aliased recordset
514
+ at = openActiveTable(db, User__A_NUO.alias_map)
515
+ rs = getRecordSet(at)
516
+ rs.fetchMode = Transactd::FETCH_USR_CLASS
517
+ at.release()
518
+
519
+ # (3) User__A_NUO : aliased, not nodefine_original
520
+ doTestTable(db, User__A_NUO)
521
+ doTestRecordset(rs, User__A_NUO)
522
+ expect(User_NA_NUO.instance_variable_get(:@_accessor_initialized)).to be true
523
+ expect(User_NA__UO.instance_variable_get(:@_accessor_initialized)).to be true
524
+ expect(User__A_NUO.instance_variable_get(:@_accessor_initialized)).to be true
525
+ expect(User__A__UO.instance_variable_get(:@_accessor_initialized)).to be_nil
526
+ # (4) User__A__UO : aliased, nodefine_original
527
+ doTestTable(db, User__A__UO)
528
+ doTestRecordset(rs, User__A__UO)
529
+ expect(User_NA_NUO.instance_variable_get(:@_accessor_initialized)).to be true
530
+ expect(User_NA__UO.instance_variable_get(:@_accessor_initialized)).to be true
531
+ expect(User__A_NUO.instance_variable_get(:@_accessor_initialized)).to be true
532
+ expect(User__A__UO.instance_variable_get(:@_accessor_initialized)).to be true
533
+ # close all
534
+ db.close()
535
+ end
536
+
537
+ it 'fetch with FETCH_RECORD_INTO' do
538
+ Transactd::setFieldValueMode(Transactd::FIELD_VALUE_MODE_VALUE)
539
+ db = Transactd::Database.new()
540
+ openDatabase(db)
541
+ # table
542
+ tb = openTable(db)
543
+ tb.fetchMode = Transactd::FETCH_RECORD_INTO
544
+ rec = seekId1(tb)
545
+ doTestFieldsBase(rec, false)
546
+ for i in 2..CHECK_MAX_ID
547
+ tb.seekNext()
548
+ expect(tb.stat()).to eq 0
549
+ rec = tb.fields()
550
+ doTestFieldsBase(rec, false, i)
551
+ end
552
+ tb.close()
553
+ # activeTable
554
+ at = openActiveTable(db)
555
+ rs = getRecordSet(at)
556
+ rs.fetchMode = Transactd::FETCH_RECORD_INTO
557
+ for i in 0...CHECK_MAX_ID
558
+ rec = rs[i]
559
+ doTestFieldsBase(rec, true, i + 1)
560
+ end
561
+ at.release()
562
+ # recordset::getRecord()
563
+ at = openActiveTable(db)
564
+ rs = getRecordSet(at)
565
+ for i in 0...CHECK_MAX_ID
566
+ rs.fetchMode = FETCHMODES[i % FETCHMODES.length]
567
+ rec = rs.getRecord(i)
568
+ doTestFieldsBase(rec, true, i + 1)
569
+ end
570
+ at.release()
571
+ db.close()
572
+ end
573
+
574
+ it 'fetch ALL with FETCH_VAL_NUM' do
575
+ Transactd::setFieldValueMode(Transactd::FIELD_VALUE_MODE_VALUE)
576
+ db = Transactd::Database.new()
577
+ openDatabase(db)
578
+ # table
579
+ tb = openTable(db)
580
+ tb.fetchMode = Transactd::FETCH_VAL_NUM
581
+ arr = findAll(tb)
582
+ expect(arr.is_a?(Array)).to eq true
583
+ expect(arr.length).to eq CHECK_MAX_ID
584
+ for i in 0...arr.length
585
+ rec = arr[i]
586
+ doTestArray(rec, i + 1)
587
+ end
588
+ tb.close()
589
+ # activeTable
590
+ at = openActiveTable(db)
591
+ rs = getRecordSetForFindAll(at)
592
+ rs.fetchMode = Transactd::FETCH_VAL_NUM
593
+ arr = rs.to_a
594
+ expect(arr.is_a?(Array)).to eq true
595
+ expect(arr.length).to eq CHECK_MAX_ID
596
+ for i in 0...arr.length
597
+ rec = arr[i]
598
+ doTestArray(rec, i + 1)
599
+ end
600
+ at.release()
601
+ db.close()
602
+ end
603
+
604
+ it 'fetch ALL with FETCH_VAL_ASSOC' do
605
+ Transactd::setFieldValueMode(Transactd::FIELD_VALUE_MODE_VALUE)
606
+ db = Transactd::Database.new()
607
+ openDatabase(db)
608
+ # table
609
+ tb = openTable(db)
610
+ tb.fetchMode = Transactd::FETCH_VAL_ASSOC
611
+ arr = findAll(tb)
612
+ expect(arr.is_a?(Array)).to eq true
613
+ expect(arr.length).to eq CHECK_MAX_ID
614
+ for i in 0...arr.length
615
+ rec = arr[i]
616
+ doTestHash(rec, false, false, i + 1)
617
+ end
618
+ tb.close()
619
+ # activeTable
620
+ at = openActiveTable(db)
621
+ rs = getRecordSetForFindAll(at)
622
+ rs.fetchMode = Transactd::FETCH_VAL_ASSOC
623
+ arr = rs.to_a
624
+ expect(arr.is_a?(Array)).to eq true
625
+ expect(arr.length).to eq CHECK_MAX_ID
626
+ for i in 0...arr.length
627
+ rec = arr[i]
628
+ doTestHash(rec, true, false, i + 1)
629
+ end
630
+ at.release()
631
+ db.close()
632
+ end
633
+
634
+ it 'fetch ALL with FETCH_VAL_BOTH' do
635
+ Transactd::setFieldValueMode(Transactd::FIELD_VALUE_MODE_VALUE)
636
+ db = Transactd::Database.new()
637
+ openDatabase(db)
638
+ # table
639
+ tb = openTable(db)
640
+ tb.fetchMode = Transactd::FETCH_VAL_BOTH
641
+ arr = findAll(tb)
642
+ expect(arr.is_a?(Array)).to eq true
643
+ expect(arr.length).to eq CHECK_MAX_ID
644
+ for i in 0...arr.length
645
+ rec = arr[i]
646
+ doTestHash(rec, false, true, i + 1)
647
+ end
648
+ tb.close()
649
+ # activeTable
650
+ at = openActiveTable(db)
651
+ rs = getRecordSetForFindAll(at)
652
+ rs.fetchMode = Transactd::FETCH_VAL_BOTH
653
+ arr = rs.to_a
654
+ expect(arr.is_a?(Array)).to eq true
655
+ expect(arr.length).to eq CHECK_MAX_ID
656
+ for i in 0...arr.length
657
+ rec = arr[i]
658
+ doTestHash(rec, true, true, i + 1)
659
+ end
660
+ at.release()
661
+ db.close()
662
+ end
663
+
664
+ it 'fetch ALL with FETCH_OBJ' do
665
+ Transactd::setFieldValueMode(Transactd::FIELD_VALUE_MODE_VALUE)
666
+ db = Transactd::Database.new()
667
+ openDatabase(db)
668
+ # table
669
+ tb = openTable(db)
670
+ tb.fetchMode = Transactd::FETCH_OBJ
671
+ arr = findAll(tb)
672
+ expect(arr.is_a?(Array)).to eq true
673
+ expect(arr.length).to eq CHECK_MAX_ID
674
+ for i in 0...arr.length
675
+ rec = arr[i]
676
+ doTestObject(rec, false, i + 1)
677
+ end
678
+ tb.close()
679
+ # activeTable
680
+ at = openActiveTable(db)
681
+ rs = getRecordSetForFindAll(at)
682
+ rs.fetchMode = Transactd::FETCH_OBJ
683
+ arr = rs.to_a
684
+ expect(arr.is_a?(Array)).to eq true
685
+ expect(arr.length).to eq CHECK_MAX_ID
686
+ for i in 0...arr.length
687
+ rec = arr[i]
688
+ doTestObject(rec, true, i + 1)
689
+ end
690
+ at.release()
691
+ db.close()
692
+ end
693
+
694
+ it 'fetch ALL with FETCH_USR_CLASS' do
695
+ Transactd::setFieldValueMode(Transactd::FIELD_VALUE_MODE_VALUE)
696
+ db = Transactd::Database.new()
697
+ openDatabase(db)
698
+ # receiver classes
699
+ AR_User_NA_NUO = Class.new(UserBase).setAlias(false).set_nodefine_original(false)
700
+ AR_User_NA__UO = Class.new(UserBase).setAlias(false).set_nodefine_original(true)
701
+ AR_User__A_NUO = Class.new(UserBase).setAlias(true).set_nodefine_original(false)
702
+ AR_User__A__UO = Class.new(UserBase).setAlias(true).set_nodefine_original(true)
703
+ # receiver classes are not initialized by Transactd yet
704
+ expect(AR_User_NA_NUO.instance_variable_get(:@_accessor_initialized)).to be_nil
705
+ expect(AR_User_NA__UO.instance_variable_get(:@_accessor_initialized)).to be_nil
706
+ expect(AR_User__A_NUO.instance_variable_get(:@_accessor_initialized)).to be_nil
707
+ expect(AR_User__A__UO.instance_variable_get(:@_accessor_initialized)).to be_nil
708
+ # open table
709
+ tb = openTable(db)
710
+ tb.fetchMode = Transactd::FETCH_USR_CLASS
711
+ # open activeTable and not aliased recordset
712
+ at = openActiveTable(db)
713
+ rs = getRecordSetForFindAll(at)
714
+ rs.fetchMode = Transactd::FETCH_USR_CLASS
715
+ at.release()
716
+ # (1) AR_User_NA_NUO : not aliased, not nodefine_original
717
+ doTestTable(db, AR_User_NA_NUO)
718
+ doTestRecordset(rs, AR_User_NA_NUO)
719
+ expect(AR_User_NA_NUO.instance_variable_get(:@_accessor_initialized)).to be true
720
+ expect(AR_User_NA__UO.instance_variable_get(:@_accessor_initialized)).to be_nil
721
+ expect(AR_User__A_NUO.instance_variable_get(:@_accessor_initialized)).to be_nil
722
+ expect(AR_User__A__UO.instance_variable_get(:@_accessor_initialized)).to be_nil
723
+ # (2) AR_User_NA__UO : not aliased, nodefine_original
724
+ doTestTable(db, AR_User_NA__UO)
725
+ doTestRecordset(rs, AR_User_NA__UO)
726
+ expect(AR_User_NA_NUO.instance_variable_get(:@_accessor_initialized)).to be true
727
+ expect(AR_User_NA__UO.instance_variable_get(:@_accessor_initialized)).to be true
728
+ expect(AR_User__A_NUO.instance_variable_get(:@_accessor_initialized)).to be_nil
729
+ expect(AR_User__A__UO.instance_variable_get(:@_accessor_initialized)).to be_nil
730
+ # open activeTable and aliased recordset
731
+ at = openActiveTable(db, AR_User__A_NUO.alias_map)
732
+ rs = getRecordSetForFindAll(at)
733
+ rs.fetchMode = Transactd::FETCH_USR_CLASS
734
+ at.release()
735
+ # (3) AR_User__A_NUO : aliased, not nodefine_original
736
+ doTestTable(db, AR_User__A_NUO)
737
+ doTestRecordset(rs, AR_User__A_NUO)
738
+ expect(AR_User_NA_NUO.instance_variable_get(:@_accessor_initialized)).to be true
739
+ expect(AR_User_NA__UO.instance_variable_get(:@_accessor_initialized)).to be true
740
+ expect(AR_User__A_NUO.instance_variable_get(:@_accessor_initialized)).to be true
741
+ expect(AR_User__A__UO.instance_variable_get(:@_accessor_initialized)).to be_nil
742
+ # (4) AR_User__A__UO : aliased, nodefine_original
743
+ doTestTable(db, AR_User__A__UO)
744
+ doTestRecordset(rs, AR_User__A__UO)
745
+ expect(AR_User_NA_NUO.instance_variable_get(:@_accessor_initialized)).to be true
746
+ expect(AR_User_NA__UO.instance_variable_get(:@_accessor_initialized)).to be true
747
+ expect(AR_User__A_NUO.instance_variable_get(:@_accessor_initialized)).to be true
748
+ expect(AR_User__A__UO.instance_variable_get(:@_accessor_initialized)).to be true
749
+ # close all
750
+ tb.close()
751
+ db.close()
752
+ end
753
+
754
+ it 'fetch ALL with FETCH_RECORD_INTO (same as FETCH_VAL_BOTH)' do
755
+ Transactd::setFieldValueMode(Transactd::FIELD_VALUE_MODE_VALUE)
756
+ db = Transactd::Database.new()
757
+ openDatabase(db)
758
+ # table
759
+ tb = openTable(db)
760
+ tb.fetchMode = Transactd::FETCH_RECORD_INTO
761
+ arr = findAll(tb)
762
+ expect(arr.is_a?(Array)).to eq true
763
+ expect(arr.length).to eq CHECK_MAX_ID
764
+ for i in 0...arr.length
765
+ rec = arr[i]
766
+ # same as FETCH_VAL_BOTH, not doTestFieldsBase(rec, false, i + 1)
767
+ doTestHash(rec, false, true, i + 1)
768
+ end
769
+ tb.close()
770
+ # activeTable
771
+ at = openActiveTable(db)
772
+ rs = getRecordSetForFindAll(at)
773
+ rs.fetchMode = Transactd::FETCH_RECORD_INTO
774
+ arr = rs.to_a
775
+ expect(arr.is_a?(Array)).to eq true
776
+ expect(arr.length).to eq CHECK_MAX_ID
777
+ for i in 0...arr.length
778
+ rec = arr[i]
779
+ # same as FETCH_VAL_BOTH, not doTestFieldsBase(rec, true, i + 1)
780
+ doTestHash(rec, true, true, i + 1)
781
+ end
782
+ at.release()
783
+ db.close()
784
+ end
785
+ end