transactd 1.0.1

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.
Files changed (218) hide show
  1. checksums.yaml +7 -0
  2. data/BUILD_UNIX-JA +174 -0
  3. data/BUILD_WIN-JA +256 -0
  4. data/CMakeLists.txt +96 -0
  5. data/COPYING +339 -0
  6. data/README +406 -0
  7. data/README-JA +424 -0
  8. data/bin/common/tdclc_32_1_0.dll +0 -0
  9. data/bin/common/tdclc_64_1_0.dll +0 -0
  10. data/build/common/check_for_link_iconv.cmake +73 -0
  11. data/build/common/copyifgreater.cmd +30 -0
  12. data/build/common/copyifgreater.js +290 -0
  13. data/build/common/get_boost_libs.cmake +106 -0
  14. data/build/common/get_ruby_path.cmake +115 -0
  15. data/build/common/options.cmake +127 -0
  16. data/build/common/smart_install.cmake +263 -0
  17. data/build/common/system.cmake +122 -0
  18. data/build/common/transactd.rc.in +52 -0
  19. data/build/common/transactd_cl_common.cmake +101 -0
  20. data/build/common/transactd_cl_output.cmake +93 -0
  21. data/build/common/transactd_common.cmake +237 -0
  22. data/build/common/transactd_required.cmake +28 -0
  23. data/build/swig/ruby/generate.cmake.in +35 -0
  24. data/build/swig/ruby/generate.cmd.in +19 -0
  25. data/build/swig/ruby/ruby.swg +101 -0
  26. data/build/swig/tdcl.i +188 -0
  27. data/build/tdclc/BUILDNUMBER.txt +1 -0
  28. data/build/tdclc/CMakeLists.txt +170 -0
  29. data/build/tdclc/tdclc_32.cbproj +181 -0
  30. data/build/tdclc/tdclc_64.cbproj +205 -0
  31. data/build/tdclcpp/BUILDNUMBER.txt +1 -0
  32. data/build/tdclcpp/CMakeLists.txt +142 -0
  33. data/build/tdclcpp/tdclcpp_bcb_32.cbproj +239 -0
  34. data/build/tdclcpp/tdclcpp_bcb_64.cbproj +304 -0
  35. data/build/tdclrb/BUILDNUMBER.txt +1 -0
  36. data/build/tdclrb/CMakeLists.txt +258 -0
  37. data/build/tdclrb/GEM_VERSION +3 -0
  38. data/build/tdclrb/bldgem/extconf.rb +123 -0
  39. data/build/tdclrb/gem/INSTALLLOG.win32 +9 -0
  40. data/build/tdclrb/gem/Makefile.win32-VS +65 -0
  41. data/build/tdclrb/gem/Makefile.win32-prebuilt +48 -0
  42. data/build/tdclrb/gem/detect.rb +31 -0
  43. data/build/tdclrb/gem/helper.rb +113 -0
  44. data/build/tdclrb/gem/transactd.rb +22 -0
  45. data/build/tdclrb/gem_output.cmake +44 -0
  46. data/source/bzs/db/IBlobBuffer.h +51 -0
  47. data/source/bzs/db/blobBuffer.h +177 -0
  48. data/source/bzs/db/blobStructs.h +85 -0
  49. data/source/bzs/db/engine/mysql/IReadRecords.h +52 -0
  50. data/source/bzs/db/engine/mysql/bookmark.h +195 -0
  51. data/source/bzs/db/engine/mysql/database.cpp +1882 -0
  52. data/source/bzs/db/engine/mysql/database.h +465 -0
  53. data/source/bzs/db/engine/mysql/dbManager.cpp +303 -0
  54. data/source/bzs/db/engine/mysql/dbManager.h +143 -0
  55. data/source/bzs/db/engine/mysql/errorMessage.cpp +75 -0
  56. data/source/bzs/db/engine/mysql/errorMessage.h +43 -0
  57. data/source/bzs/db/engine/mysql/fieldAccess.h +158 -0
  58. data/source/bzs/db/engine/mysql/mydebuglog.cpp +349 -0
  59. data/source/bzs/db/engine/mysql/mydebuglog.h +89 -0
  60. data/source/bzs/db/engine/mysql/mysqlInternal.h +171 -0
  61. data/source/bzs/db/engine/mysql/mysqlThd.cpp +169 -0
  62. data/source/bzs/db/engine/mysql/mysqlThd.h +35 -0
  63. data/source/bzs/db/engine/mysql/percentageKey.h +260 -0
  64. data/source/bzs/db/protocol/ICommandExecuter.h +49 -0
  65. data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +689 -0
  66. data/source/bzs/db/protocol/hs/hsCommandExecuter.h +228 -0
  67. data/source/bzs/db/protocol/tdap/btrDate.cpp +437 -0
  68. data/source/bzs/db/protocol/tdap/btrDate.h +227 -0
  69. data/source/bzs/db/protocol/tdap/client/bulkInsert.h +127 -0
  70. data/source/bzs/db/protocol/tdap/client/client.cpp +106 -0
  71. data/source/bzs/db/protocol/tdap/client/client.h +292 -0
  72. data/source/bzs/db/protocol/tdap/client/connMgr.cpp +144 -0
  73. data/source/bzs/db/protocol/tdap/client/connMgr.h +82 -0
  74. data/source/bzs/db/protocol/tdap/client/database.cpp +863 -0
  75. data/source/bzs/db/protocol/tdap/client/database.h +118 -0
  76. data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +100 -0
  77. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +1640 -0
  78. data/source/bzs/db/protocol/tdap/client/dbDef.h +135 -0
  79. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +434 -0
  80. data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +92 -0
  81. data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +98 -0
  82. data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +174 -0
  83. data/source/bzs/db/protocol/tdap/client/fieldDDF.h +91 -0
  84. data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +140 -0
  85. data/source/bzs/db/protocol/tdap/client/fileDDF.h +86 -0
  86. data/source/bzs/db/protocol/tdap/client/filter.cpp +527 -0
  87. data/source/bzs/db/protocol/tdap/client/filter.h +154 -0
  88. data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +137 -0
  89. data/source/bzs/db/protocol/tdap/client/indexDDF.h +84 -0
  90. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +724 -0
  91. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +123 -0
  92. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +899 -0
  93. data/source/bzs/db/protocol/tdap/client/nsTable.h +199 -0
  94. data/source/bzs/db/protocol/tdap/client/request.h +198 -0
  95. data/source/bzs/db/protocol/tdap/client/sharedData.cpp +58 -0
  96. data/source/bzs/db/protocol/tdap/client/sharedData.h +56 -0
  97. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +574 -0
  98. data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +53 -0
  99. data/source/bzs/db/protocol/tdap/client/stringConverter.h +627 -0
  100. data/source/bzs/db/protocol/tdap/client/table.cpp +2613 -0
  101. data/source/bzs/db/protocol/tdap/client/table.h +221 -0
  102. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +1096 -0
  103. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +179 -0
  104. data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +40 -0
  105. data/source/bzs/db/protocol/tdap/client/trnsctcl.def +11 -0
  106. data/source/bzs/db/protocol/tdap/myDateTime.cpp +500 -0
  107. data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +184 -0
  108. data/source/bzs/db/protocol/tdap/mysql/characterset.h +60 -0
  109. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +284 -0
  110. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +53 -0
  111. data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +383 -0
  112. data/source/bzs/db/protocol/tdap/mysql/debuglog.h +106 -0
  113. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +680 -0
  114. data/source/bzs/db/protocol/tdap/mysql/request.h +202 -0
  115. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1020 -0
  116. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +141 -0
  117. data/source/bzs/db/protocol/tdap/tdapRequest.h +190 -0
  118. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +295 -0
  119. data/source/bzs/db/protocol/tdap/tdapSchema.h +558 -0
  120. data/source/bzs/db/protocol/tdap/tdapcapi.h +423 -0
  121. data/source/bzs/db/transactd/appBuilderImple.h +55 -0
  122. data/source/bzs/db/transactd/appModule.cpp +183 -0
  123. data/source/bzs/db/transactd/appModule.h +80 -0
  124. data/source/bzs/db/transactd/connManager.cpp +201 -0
  125. data/source/bzs/db/transactd/connManager.h +60 -0
  126. data/source/bzs/db/transactd/connectionRecord.h +69 -0
  127. data/source/bzs/db/transactd/transactd.cpp +325 -0
  128. data/source/bzs/env/compiler.h +135 -0
  129. data/source/bzs/env/crosscompile.cpp +130 -0
  130. data/source/bzs/env/crosscompile.h +150 -0
  131. data/source/bzs/env/fileopen.h +36 -0
  132. data/source/bzs/env/mbcswchrLinux.cpp +40 -0
  133. data/source/bzs/env/mbcswchrLinux.h +88 -0
  134. data/source/bzs/env/tstring.h +183 -0
  135. data/source/bzs/example/changeSchema.cpp +117 -0
  136. data/source/bzs/example/changeSchema_c.cpp +78 -0
  137. data/source/bzs/example/connection_pool_c.cpp +171 -0
  138. data/source/bzs/example/createDatabase.cpp +305 -0
  139. data/source/bzs/example/createDatabase_c.cpp +202 -0
  140. data/source/bzs/example/deleteRecords.cpp +87 -0
  141. data/source/bzs/example/deleteRecords_c.cpp +57 -0
  142. data/source/bzs/example/dropDatabase.cpp +59 -0
  143. data/source/bzs/example/dropDatabase_c.cpp +34 -0
  144. data/source/bzs/example/insertRecords.cpp +212 -0
  145. data/source/bzs/example/insertRecords_c.cpp +153 -0
  146. data/source/bzs/example/readRecords.cpp +141 -0
  147. data/source/bzs/example/readRecords_c.cpp +107 -0
  148. data/source/bzs/example/updateRecords.cpp +99 -0
  149. data/source/bzs/example/updateRecords_c.cpp +71 -0
  150. data/source/bzs/example/update_with_transaction.cpp +104 -0
  151. data/source/bzs/example/update_with_transaction_c.cpp +80 -0
  152. data/source/bzs/netsvc/client/tcpClient.cpp +226 -0
  153. data/source/bzs/netsvc/client/tcpClient.h +489 -0
  154. data/source/bzs/netsvc/server/IAppModule.h +94 -0
  155. data/source/bzs/netsvc/server/iserver.h +65 -0
  156. data/source/bzs/netsvc/server/serverCpt.cpp +522 -0
  157. data/source/bzs/netsvc/server/serverCpt.h +88 -0
  158. data/source/bzs/netsvc/server/serverPipe.cpp +705 -0
  159. data/source/bzs/netsvc/server/serverPipe.h +96 -0
  160. data/source/bzs/netsvc/server/serverTpool.cpp +416 -0
  161. data/source/bzs/netsvc/server/serverTpool.h +84 -0
  162. data/source/bzs/rtl/benchmark.cpp +96 -0
  163. data/source/bzs/rtl/benchmark.h +65 -0
  164. data/source/bzs/rtl/datetime.cpp +375 -0
  165. data/source/bzs/rtl/datetime.h +53 -0
  166. data/source/bzs/rtl/debuglog.cpp +106 -0
  167. data/source/bzs/rtl/debuglog.h +97 -0
  168. data/source/bzs/rtl/exception.h +116 -0
  169. data/source/bzs/rtl/stl_uty.cpp +35 -0
  170. data/source/bzs/rtl/stl_uty.h +29 -0
  171. data/source/bzs/rtl/stringBuffers.cpp +101 -0
  172. data/source/bzs/rtl/stringBuffers.h +58 -0
  173. data/source/bzs/rtl/strtrim.cpp +135 -0
  174. data/source/bzs/rtl/strtrim.h +46 -0
  175. data/source/bzs/test/tdclatl/bench_tdclatl.js +445 -0
  176. data/source/bzs/test/tdclrb/bench_tdclcpp.rb +375 -0
  177. data/source/bzs/test/tdclrb/prepare.rb +226 -0
  178. data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +172 -0
  179. data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +208 -0
  180. data/source/bzs/test/tdclrb/transactd_spec.rb +1536 -0
  181. data/source/bzs/test/transactdBench/transactdBench.cpp +430 -0
  182. data/source/bzs/test/transactdBench/transactdBench2.cpp +342 -0
  183. data/source/bzs/test/trdclengn/test_trdclengn.cpp +2030 -0
  184. data/source/global/tdclatl/Database.cpp +503 -0
  185. data/source/global/tdclatl/Database.h +139 -0
  186. data/source/global/tdclatl/DbDef.cpp +242 -0
  187. data/source/global/tdclatl/DbDef.h +79 -0
  188. data/source/global/tdclatl/Field.cpp +92 -0
  189. data/source/global/tdclatl/Field.h +59 -0
  190. data/source/global/tdclatl/FieldDef.cpp +238 -0
  191. data/source/global/tdclatl/FieldDef.h +87 -0
  192. data/source/global/tdclatl/Flags.cpp +111 -0
  193. data/source/global/tdclatl/Flags.h +55 -0
  194. data/source/global/tdclatl/KeyDef.cpp +51 -0
  195. data/source/global/tdclatl/KeyDef.h +55 -0
  196. data/source/global/tdclatl/KeySegment.cpp +55 -0
  197. data/source/global/tdclatl/Table.cpp +600 -0
  198. data/source/global/tdclatl/Table.h +144 -0
  199. data/source/global/tdclatl/TableDef.cpp +291 -0
  200. data/source/global/tdclatl/TableDef.h +86 -0
  201. data/source/global/tdclatl/TdVersion.cpp +74 -0
  202. data/source/global/tdclatl/TdVersion.h +54 -0
  203. data/source/global/tdclatl/_IDatabaseEvents_CP.h +113 -0
  204. data/source/global/tdclatl/dllmain.cpp +30 -0
  205. data/source/global/tdclatl/dllmain.h +27 -0
  206. data/source/global/tdclatl/keySegment.h +57 -0
  207. data/source/global/tdclatl/resource.h +0 -0
  208. data/source/global/tdclatl/stdafx.cpp +2 -0
  209. data/source/global/tdclatl/stdafx.h +25 -0
  210. data/source/global/tdclatl/targetver.h +4 -0
  211. data/source/global/tdclatl/tdclatl.cpp +68 -0
  212. data/source/global/tdclatl/tdclatl.def +10 -0
  213. data/source/global/tdclatl/tdclatl.idl +1035 -0
  214. data/source/linux/charsetConvert.h +112 -0
  215. data/source/linux/linuxTypes.h +33 -0
  216. data/source/linux/tchar.h +428 -0
  217. data/transactd.gemspec +97 -0
  218. metadata +267 -0
@@ -0,0 +1,172 @@
1
+ # coding : utf-8
2
+ =begin ============================================================
3
+ Copyright (C) 2013 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
+ describe Transactd, 'datetime' do
24
+ it 'get BtrDate' do
25
+ i_nowdate = Transactd::getNowDate() # get today as integer
26
+ s_i_nowdate = Transactd::btrdtoa(i_nowdate)
27
+ s_i_nowdate2 = Transactd::btrdtoa(i_nowdate, true)
28
+ #p i_nowdate
29
+ #p s_i_nowdate + ' ' + s_i_nowdate.encoding.to_s
30
+ #p s_i_nowdate2 + ' ' + s_i_nowdate2.encoding.to_s
31
+ nowdate = Transactd::BtrDate.new()
32
+ nowdate.i = i_nowdate # get today as BtrDate
33
+ s_nowdate = Transactd::btrdtoa(nowdate)
34
+ s_nowdate2 = Transactd::btrdtoa(nowdate, true)
35
+ cs_nowdate = Transactd::c_str(nowdate)
36
+ #p nowdate
37
+ #p s_nowdate + ' ' + s_nowdate.encoding.to_s
38
+ #p s_nowdate2 + ' ' + s_nowdate2.encoding.to_s
39
+ #p cs_nowdate + ' ' + cs_nowdate.encoding.to_s
40
+ expect(s_i_nowdate).to eq s_nowdate
41
+ expect(s_i_nowdate2).to eq s_nowdate2
42
+ expect(cs_nowdate).to eq s_nowdate
43
+ end
44
+
45
+ it 'get BtrTime' do
46
+ i_nowtime = Transactd::getNowTime() # get now time as integer
47
+ s_i_nowtime = Transactd::btrttoa(i_nowtime)
48
+ s_i_nowtime2 = Transactd::btrttoa(i_nowtime, true)
49
+ #p i_nowtime
50
+ #p s_i_nowtime + ' ' + s_i_nowtime.encoding.to_s
51
+ #p s_i_nowtime2 + ' ' + s_i_nowtime2.encoding.to_s
52
+ nowtime = Transactd::BtrTime.new()
53
+ nowtime.i = i_nowtime # get now time as BtrTime
54
+ s_nowtime = Transactd::btrttoa(nowtime)
55
+ s_nowtime2 = Transactd::btrttoa(nowtime, true)
56
+ cs_nowtime = Transactd::c_str(nowtime)
57
+ #p nowtime
58
+ #p s_nowtime + ' ' + s_nowtime.encoding.to_s
59
+ #p s_nowtime2 + ' ' + s_nowtime2.encoding.to_s
60
+ #p cs_nowtime + ' ' + cs_nowtime.encoding.to_s
61
+ expect(s_i_nowtime).to eq s_nowtime
62
+ expect(s_i_nowtime2).to eq s_nowtime2
63
+ expect(cs_nowtime).to eq s_nowtime
64
+ end
65
+
66
+ it 'get BtrDateTime' do
67
+ date = Transactd::atobtrd('2012-08-22')
68
+ s_date = Transactd::btrdtoa(date)
69
+ expect(s_date).to eq '2012/08/22'
70
+ #p date
71
+ #p s_date + ' ' + s_date.encoding.to_s
72
+ time = Transactd::atobtrt('15:37:00')
73
+ s_time = Transactd::btrttoa(time)
74
+ expect(s_time).to eq '15:37:00'
75
+ #p time
76
+ #p s_time + ' ' + s_time.encoding.to_s
77
+ datetime = Transactd::atobtrs('2012-08-22 15:37:00')
78
+ s_datetime = Transactd::btrstoa(datetime)
79
+ s_datetime2 = Transactd::btrstoa(datetime, true)
80
+ expect(s_datetime).to eq '2012/08/22 15:37:00'
81
+ expect(s_datetime2).to eq '2012-08-22T15:37:00'
82
+ #p datetime
83
+ #p s_datetime + ' ' + s_datetime.encoding.to_s
84
+ #p s_datetime2 + ' ' + s_datetime2.encoding.to_s
85
+ s_datetime_d = Transactd::btrdtoa(datetime.date)
86
+ s_datetime_t = Transactd::btrttoa(datetime.time)
87
+ expect(s_datetime_d + ' ' + s_datetime_t).to eq '2012/08/22 15:37:00'
88
+ #p s_datetime_d + ' ' + s_datetime_t
89
+ end
90
+
91
+ it 'get Bdate' do
92
+ date = Transactd::atobtrd('2012-08-22')
93
+ bdate = Transactd::Bdate.new(date.i)
94
+ bdate2 = Transactd::Bdate.new(Transactd::btrdtoa(date))
95
+ #p bdate,bdate2
96
+ btrdate = bdate.btr_date()
97
+ btrdate2 = bdate2.btr_date()
98
+ #p btrdate, btrdate2
99
+ s_bdate = bdate.c_str()
100
+ s_bdate2 = bdate2.c_str()
101
+ expect(s_bdate).to eq s_bdate2
102
+ #p s_bdate + ' ' + s_bdate.encoding.to_s
103
+ #p s_bdate2 + ' ' + s_bdate2.encoding.to_s
104
+ expect(bdate.year()).to eq 2012
105
+ expect(bdate.month()).to eq 8
106
+ expect(bdate.date()).to eq 22
107
+ expect(bdate.year_str()).to eq '2012'
108
+ expect(bdate.month_str()).to eq '8'
109
+ expect(bdate.date_str()).to eq '22'
110
+ #p bdate.year(), bdate.month(), bdate.date()
111
+ #p bdate.year_str(), bdate.month_str(), bdate.date_str()
112
+ end
113
+
114
+ it 'get BtrTimeStamp from string' do
115
+ date = Transactd::atobtrd('2012-08-22')
116
+ time = Transactd::atobtrt('15:37:00')
117
+ btrts = Transactd::BtrTimeStamp.new('2012-08-22 15:37:00')
118
+ btrts2 = Transactd::BtrTimeStamp.new(date, time)
119
+ s_btrts = btrts.toString()
120
+ s_btrts2 = btrts2.toString()
121
+ #p btrts, btrts2
122
+ #p s_btrts, s_btrts2
123
+ expect(s_btrts).to eq s_btrts2
124
+ expect(s_btrts).to eq '2012/08/22 15:37:00'
125
+ end
126
+
127
+ it 'get BtrTimeStamp from BtrDate and BtrTime' do
128
+ i_nowdate = Transactd::getNowDate()
129
+ nowdate = Transactd::BtrDate.new()
130
+ nowdate.i = i_nowdate
131
+ i_nowtime = Transactd::getNowTime()
132
+ nowtime = Transactd::BtrTime.new()
133
+ nowtime.i = i_nowtime
134
+ nowdatetime = Transactd::BtrTimeStamp.new(nowdate, nowtime)
135
+ s_nowdate = Transactd::btrdtoa(nowdate)
136
+ s_nowtime = Transactd::btrttoa(nowtime)
137
+ s_nowdatetime = nowdatetime.toString()
138
+ expect(s_nowdatetime).to eq s_nowdate + ' ' + s_nowtime
139
+ #p nowdatetime
140
+ #p s_nowdatetime + ' ' + s_nowdatetime.encoding.to_s()
141
+ #p s_nowdate + ' ' + s_nowtime
142
+ end
143
+
144
+ it 'get last year' do
145
+ i_nowdate = Transactd::getNowDate()
146
+ nowdate = Transactd::BtrDate.new()
147
+ nowdate.i = i_nowdate
148
+ nowyear_yy = nowdate.yy
149
+ i_nowtime = Transactd::getNowTime()
150
+ nowtime = Transactd::BtrTime.new()
151
+ nowtime.i = i_nowtime
152
+ nowdatetime = Transactd::BtrTimeStamp.new(nowdate, nowtime)
153
+ s_nowdatetime = nowdatetime.toString()
154
+ lastyear = nowdate
155
+ lastyear.yy = lastyear.yy - 1
156
+ lastyear_yy = lastyear.yy
157
+ s_lastyear = Transactd::btrdtoa(lastyear)
158
+ lastyeardatetime = Transactd::BtrTimeStamp.new(lastyear, nowtime)
159
+ s_lastyeardatetime = lastyeardatetime.toString()
160
+ expect(nowyear_yy - 1).to eq lastyear_yy
161
+ expect(s_nowdatetime.sub(nowyear_yy.to_s, lastyear_yy.to_s)).to eq s_lastyeardatetime
162
+ #p lastyeardatetime
163
+ #p s_lastyear + ' ' + s_lastyear.encoding.to_s()
164
+ #p s_lastyeardatetime + ' ' + s_lastyeardatetime.encoding.to_s()
165
+ end
166
+
167
+ it 'get typename' do
168
+ typename = Transactd::getTypeName(Transactd::Ft_integer)
169
+ #p typename + ' ' + typename.encoding.to_s
170
+ expect(typename).to eq 'Integer'
171
+ end
172
+ end
@@ -0,0 +1,208 @@
1
+ # coding : utf-8
2
+ =begin ============================================================
3
+ Copyright (C) 2013 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
+ IS_WINDOWS = (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/)
25
+
26
+ def getHost()
27
+ hostname = '127.0.0.1/'
28
+ if (ENV['TRANSACTD_RSPEC_HOST'] != nil && ENV['TRANSACTD_RSPEC_HOST'] != '')
29
+ hostname = ENV['TRANSACTD_RSPEC_HOST']
30
+ end
31
+ hostname = hostname + '/' unless (hostname =~ /\/$/)
32
+ return hostname
33
+ end
34
+
35
+ HOSTNAME = getHost()
36
+ URL = 'tdap://' + HOSTNAME + 'test?dbfile=test.bdf'
37
+ URL_KANJI = 'tdap://' + HOSTNAME + 'テスト?dbfile=構成.bdf'
38
+ FDI_ID = 0
39
+ FDN_ID = '番号'.encode('UTF-8')
40
+ FDI_NAME = 1
41
+ FDN_NAME = '名前'.encode('UTF-8')
42
+
43
+
44
+ TYPE_SCHEMA_BDF = 0
45
+
46
+ def testDropDatabase(db, url)
47
+ db.open(url)
48
+ expect(db.stat()).to eq 0
49
+ db.drop()
50
+ expect(db.stat()).to eq 0
51
+ end
52
+
53
+ def testCreateDatabase(db, url)
54
+ db.create(url)
55
+ if db.stat() == Transactd::STATUS_TABLE_EXISTS_ERROR
56
+ testDropDatabase(db, url)
57
+ db.create(url)
58
+ end
59
+ expect(db.stat()).to eq 0
60
+ end
61
+
62
+ def testOpenDatabase(db, url)
63
+ db.open(url, TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
64
+ expect(db.stat()).to eq 0
65
+ end
66
+
67
+ def testCreateTable(db, tableid, tablename)
68
+ dbdef = db.dbDef()
69
+ expect(dbdef).not_to be nil
70
+ td = Transactd::Tabledef.new()
71
+ ### Set table schema codepage to UTF-8
72
+ # - codepage for field NAME and tableNAME
73
+ td.schemaCodePage = Transactd::CP_UTF8
74
+ td.setTableName(tablename.encode('UTF-8'))
75
+ td.setFileName((tablename + '.dat').encode('UTF-8'))
76
+ ### Set table default charaset index
77
+ # - default charset for field VALUE
78
+ td.charsetIndex = Transactd::charsetIndex(Transactd::CP_UTF8)
79
+ ###
80
+ td.id = tableid
81
+ td.pageSize = 2048
82
+ dbdef.insertTable(td)
83
+ expect(dbdef.stat()).to eq 0
84
+ fd = dbdef.insertField(tableid, FDI_ID)
85
+ fd.setName(FDN_ID)
86
+ fd.type = Transactd::Ft_integer
87
+ fd.len = 4
88
+ dbdef.updateTableDef(tableid)
89
+ expect(dbdef.stat()).to eq 0
90
+ fd = dbdef.insertField(tableid, FDI_NAME)
91
+ fd.setName(FDN_NAME)
92
+ fd.type = Transactd::Ft_zstring
93
+ fd.len = 33
94
+ ### Set field charset index
95
+ # - charset for each field VALUE
96
+ # fd.setCharsetIndex(Transactd::charsetIndex(Transactd::CP_UTF8))
97
+ dbdef.updateTableDef(tableid)
98
+ expect(dbdef.stat()).to eq 0
99
+ kd = dbdef.insertKey(tableid, 0)
100
+ kd.segment(0).fieldNum = 0
101
+ kd.segment(0).flags.bit8 = 1
102
+ kd.segment(0).flags.bit1 = 1
103
+ kd.segmentCount = 1
104
+ dbdef.updateTableDef(tableid)
105
+ expect(dbdef.stat()).to eq 0
106
+ end
107
+
108
+ def testOpenTable(db, tablename)
109
+ tb = db.openTable(tablename.encode('UTF-8'))
110
+ expect(db.stat()).to eq 0
111
+ return tb
112
+ end
113
+
114
+ def testInsert(db, tablename)
115
+ tb = testOpenTable(db, tablename)
116
+ expect(tb).not_to be nil
117
+ tb.clearBuffer()
118
+ tb.setFV(FDN_ID, 1)
119
+ tb.setFV(FDN_NAME, '小坂'.encode('UTF-8'))
120
+ tb.insert()
121
+ expect(tb.stat()).to eq 0
122
+ tb.clearBuffer()
123
+ tb.setFV(FDN_ID, 2)
124
+ tb.setFV(FDN_NAME, '矢口'.encode('UTF-8'))
125
+ tb.insert()
126
+ expect(tb.stat()).to eq 0
127
+ tb.clearBuffer()
128
+ tb.setFV(FDN_ID, 3)
129
+ tb.setFV(FDN_NAME, 'ビズステーション'.encode('UTF-8'))
130
+ tb.insert()
131
+ expect(tb.stat()).to eq 0
132
+ tb.close()
133
+ end
134
+
135
+ def testGetEqual(db, tablename)
136
+ tb = testOpenTable(db, tablename)
137
+ expect(tb).not_to be nil
138
+ tb.clearBuffer()
139
+ tb.setFV(FDN_ID, 1)
140
+ tb.seek()
141
+ expect(tb.getFVstr(FDN_NAME)).to eq '小坂'.encode('UTF-8')
142
+ tb.close()
143
+ end
144
+
145
+ def testFind(db, tablename)
146
+ tb = testOpenTable(db, tablename)
147
+ expect(tb).not_to be nil
148
+ tb.setKeyNum(0)
149
+ tb.clearBuffer()
150
+ tb.setFilter('番号 >= 1 and 番号 < 3'.encode('UTF-8'), 1, 0)
151
+ tb.setFV(FDN_ID, 1)
152
+ tb.find(Transactd::Table::FindForword)
153
+ expect(tb.stat()).to eq 0
154
+ expect(tb.getFVint(FDN_ID)).to eq 1
155
+ expect(tb.getFVstr(FDN_NAME)).to eq '小坂'.encode('UTF-8')
156
+ tb.findNext(true)
157
+ expect(tb.stat()).to eq 0
158
+ expect(tb.getFVint(FDN_ID)).to eq 2
159
+ expect(tb.getFVstr(FDN_NAME)).to eq '矢口'.encode('UTF-8')
160
+ tb.findNext(true)
161
+ expect(tb.stat()).to eq Transactd::STATUS_EOF
162
+ tb.close()
163
+ end
164
+
165
+ def testWhole(db, tableid, tablename, url)
166
+ tablename = tablename.encode('UTF-8') # table name must be UTF-8
167
+ testOpenDatabase(db, url)
168
+ testCreateTable(db, tableid, tablename)
169
+ testOpenTable(db, tablename)
170
+ testInsert(db, tablename)
171
+ testGetEqual(db, tablename)
172
+ testFind(db, tablename)
173
+ end
174
+
175
+
176
+ describe Transactd do
177
+ before :each do
178
+ @db = Transactd::Database.createObject()
179
+ end
180
+ after :each do
181
+ @db.close()
182
+ @db = nil
183
+ end
184
+
185
+ it 'create database' do
186
+ testCreateDatabase(@db, URL.encode('UTF-8'))
187
+ end
188
+
189
+ it 'table which has kanji-named field' do
190
+ testWhole(@db, 1, 'kanji-field', URL.encode('UTF-8'))
191
+ end
192
+
193
+ it 'kanji-named table' do
194
+ testWhole(@db, 2, '漢字テーブル', URL)
195
+ end
196
+
197
+ it 'create kanji-named database' do
198
+ testCreateDatabase(@db, URL_KANJI.encode('UTF-8')) # URL must be UTF-8
199
+ end
200
+
201
+ it 'table which has kanji-named field' do
202
+ testWhole(@db, 1, 'kanji-field', URL_KANJI.encode('UTF-8'))
203
+ end
204
+
205
+ it 'kanji-named table' do
206
+ testWhole(@db, 2, '漢字テーブル', URL_KANJI.encode('UTF-8'))
207
+ end
208
+ end