transactd 1.1.2 → 1.2.0

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 (73) hide show
  1. checksums.yaml +4 -4
  2. data/CMakeLists.txt +37 -4
  3. data/bin/common/tdclc_32_1_2.dll +0 -0
  4. data/bin/common/tdclc_64_1_2.dll +0 -0
  5. data/build/common/transactd_cl_common.cmake +0 -1
  6. data/build/common/transactd_common.cmake +26 -6
  7. data/build/swig/php/generate.cmake.in +58 -0
  8. data/build/swig/php/generate.cmd.in +41 -0
  9. data/build/swig/php/php.swg +155 -0
  10. data/build/swig/ruby/ruby.swg +38 -0
  11. data/build/swig/tdcl.i +133 -3
  12. data/build/tdclc/CMakeLists.txt +4 -1
  13. data/build/tdclc/tdclc_32.cbproj +1 -1
  14. data/build/tdclc/tdclc_64.cbproj +1 -1
  15. data/build/tdclcpp/CMakeLists.txt +1 -1
  16. data/build/tdclcpp/tdclcpp_bcb_32.cbproj +1 -4
  17. data/build/tdclcpp/tdclcpp_bcb_64.cbproj +0 -3
  18. data/build/tdclrb/CMakeLists.txt +1 -1
  19. data/build/tdclrb/GEM_VERSION +2 -2
  20. data/source/bzs/db/engine/mysql/IReadRecords.h +1 -1
  21. data/source/bzs/db/engine/mysql/bookmark.h +3 -3
  22. data/source/bzs/db/engine/mysql/database.cpp +95 -19
  23. data/source/bzs/db/engine/mysql/database.h +6 -6
  24. data/source/bzs/db/engine/mysql/mysqlInternal.h +43 -1
  25. data/source/bzs/db/engine/mysql/mysqlThd.cpp +10 -8
  26. data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +1 -1
  27. data/source/bzs/db/protocol/tdap/btrDate.h +2 -2
  28. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +15 -8
  29. data/source/bzs/db/protocol/tdap/client/dbDef.h +2 -2
  30. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +4 -0
  31. data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +0 -5
  32. data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +0 -4
  33. data/source/bzs/db/protocol/tdap/client/filter.cpp +0 -484
  34. data/source/bzs/db/protocol/tdap/client/filter.h +696 -84
  35. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +13 -3
  36. data/source/bzs/db/protocol/tdap/client/nsTable.h +12 -6
  37. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +2 -1
  38. data/source/bzs/db/protocol/tdap/client/stringConverter.h +1 -0
  39. data/source/bzs/db/protocol/tdap/client/table.cpp +519 -75
  40. data/source/bzs/db/protocol/tdap/client/table.h +49 -7
  41. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +145 -124
  42. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +39 -0
  43. data/source/bzs/db/protocol/tdap/client/trdormapi.h +872 -0
  44. data/source/bzs/db/protocol/tdap/myDateTime.cpp +8 -8
  45. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +7 -9
  46. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +406 -195
  47. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +64 -13
  48. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +2 -1
  49. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +35 -3
  50. data/source/bzs/db/protocol/tdap/tdapSchema.h +11 -3
  51. data/source/bzs/db/protocol/tdap/tdapcapi.h +63 -53
  52. data/source/bzs/env/crosscompile.h +8 -3
  53. data/source/bzs/example/connection_pool_c.cpp +1 -7
  54. data/source/bzs/example/useORM.cpp +585 -0
  55. data/source/bzs/rtl/exception.h +6 -0
  56. data/source/bzs/test/tdclatl/bench_tdclatl.js +12 -7
  57. data/source/bzs/test/tdclphp/transactd_Test.php +1845 -0
  58. data/source/bzs/test/tdclphp/transactd_blob_Test.php +325 -0
  59. data/source/bzs/test/tdclphp/transactd_datetime_Test.php +183 -0
  60. data/source/bzs/test/tdclphp/transactd_kanjischema_Test.php +212 -0
  61. data/source/bzs/test/tdclrb/transactd_blob_spec.rb +332 -0
  62. data/source/bzs/test/tdclrb/transactd_spec.rb +256 -1
  63. data/source/bzs/test/trdclengn/test_blob.cpp +327 -0
  64. data/source/bzs/test/trdclengn/test_trdclengn.cpp +485 -5
  65. data/source/global/tdclatl/QueryBase.cpp +231 -0
  66. data/source/global/tdclatl/QueryBase.h +96 -0
  67. data/source/global/tdclatl/Table.cpp +24 -0
  68. data/source/global/tdclatl/Table.h +2 -1
  69. data/source/global/tdclatl/resource.h +0 -0
  70. data/source/global/tdclatl/tdclatl.idl +88 -2
  71. metadata +16 -3
  72. data/bin/common/tdclc_32_1_1.dll +0 -0
  73. data/bin/common/tdclc_64_1_1.dll +0 -0
@@ -0,0 +1,325 @@
1
+ <?php
2
+ /* ================================================================
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
+ mb_internal_encoding('UTF-8');
21
+
22
+ require_once("transactd.php");
23
+
24
+ define("HOSTNAME", "localhost/");
25
+ define("URL", "tdap://" . HOSTNAME . "test_blob?dbfile=test.bdf");
26
+ define("TABLENAME", "comments");
27
+ define("FDI_ID", 0);
28
+ define("FDI_USER_ID", 1);
29
+ define("FDI_BODY", 2);
30
+ define("FDI_IMAGE", 3);
31
+
32
+ define("TYPE_SCHEMA_BDF", 0);
33
+
34
+ class transactdBlobTest extends PHPUnit_Framework_TestCase
35
+ {
36
+ private function getDbObj()
37
+ {
38
+ return database::createObject();
39
+ }
40
+ private function deleteDbObj($db)
41
+ {
42
+ $db->close();
43
+ $db = NULL;
44
+ }
45
+ private function dropDatabase($db, $url)
46
+ {
47
+ $db->open($url);
48
+ $this->assertEquals($db->stat(), 0);
49
+ $db->drop();
50
+ $this->assertEquals($db->stat(), 0);
51
+ }
52
+ private function createDatabase($db, $url)
53
+ {
54
+ $db->create($url);
55
+ if ($db->stat() == transactd::STATUS_TABLE_EXISTS_ERROR)
56
+ {
57
+ $this->dropDatabase($db, $url);
58
+ $db->create($url);
59
+ }
60
+ $this->assertEquals($db->stat(), 0);
61
+ }
62
+ private function openDatabase($db, $url)
63
+ {
64
+ $db->open($url, TYPE_SCHEMA_BDF, transactd::TD_OPEN_NORMAL);
65
+ $this->assertEquals($db->stat(), 0);
66
+ }
67
+ private function createTable($db, $tableid, $tablename)
68
+ {
69
+ $dbdef = $db->dbDef();
70
+ $this->assertNotEquals($dbdef, NULL);
71
+ $td = new tabledef();
72
+ // Set table schema codepage to UTF-8
73
+ // - codepage for field NAME and tableNAME
74
+ $td->schemaCodePage = transactd::CP_UTF8;
75
+ $td->setTableName($tablename);
76
+ $td->setFileName($tablename . '.dat');
77
+ // Set table default charaset index
78
+ // - default charset for field VALUE
79
+ $td->charsetIndex = transactd::charsetIndex(transactd::CP_UTF8);
80
+ //
81
+ $td->id = $tableid;
82
+ $td->pageSize = 2048;
83
+ $dbdef->insertTable($td);
84
+ $this->assertEquals($dbdef->stat(), 0);
85
+ // id
86
+ $fd = $dbdef->insertField($tableid, FDI_ID);
87
+ $fd->setName('id');
88
+ $fd->type = transactd::ft_autoinc;
89
+ $fd->len = 4;
90
+ $dbdef->updateTableDef($tableid);
91
+ $this->assertEquals($dbdef->stat(), 0);
92
+ // user_id
93
+ $fd = $dbdef->insertField($tableid, FDI_USER_ID);
94
+ $fd->setName('user_id');
95
+ $fd->type = transactd::ft_integer;
96
+ $fd->len = 4;
97
+ $dbdef->updateTableDef($tableid);
98
+ $this->assertEquals($dbdef->stat(), 0);
99
+ // body
100
+ $fd = $dbdef->insertField($tableid, FDI_BODY);
101
+ $fd->setName('body');
102
+ $fd->type = transactd::ft_mytext;
103
+ $fd->len = 10; // 9:TYNYTEXT 10:TEXT 11:MIDIUMTEXT 12:LONGTEXT
104
+ $dbdef->updateTableDef($tableid);
105
+ $this->assertEquals($dbdef->stat(), 0);
106
+ // image
107
+ $fd = $dbdef->insertField($tableid, FDI_IMAGE);
108
+ $fd->setName('image');
109
+ $fd->type = transactd::ft_myblob;
110
+ $fd->len = 10; // 9:TYNYBLOB 10:BLOB 11:MIDIUMBLOB 12:LONGBLOB
111
+ $dbdef->updateTableDef($tableid);
112
+ $this->assertEquals($dbdef->stat(), 0);
113
+ // key
114
+ $kd = $dbdef->insertKey($tableid, 0);
115
+ $kd->segment(0)->fieldNum = 0;
116
+ $kd->segment(0)->flags->bit8 = 1;
117
+ $kd->segment(0)->flags->bit1 = 1;
118
+ $kd->segmentCount = 1;
119
+ $dbdef->updateTableDef($tableid);
120
+ $this->assertEquals($dbdef->stat(), 0);
121
+ }
122
+ private function openTable($db, $tablename)
123
+ {
124
+ $tb = $db->openTable($tablename);
125
+ $this->assertEquals($db->stat(), 0);
126
+ return $tb;
127
+ }
128
+ private function getTestBinary() {
129
+ $image_base64 = 'R0lGODdhEAAQAKEBAGZmZv///5mZmczMzCwAAAAAEAAQAAACRowzIgA6BxebTMAgG60nW5NM1kAZikGFHAmgYvYgJpW12FfTyLpJjz+IVSSXR4IlQCoUgCCG8ds0D5xZT3TJYS8IZiMJKQAAOw==';
130
+ return base64_decode($image_base64);
131
+ }
132
+
133
+ public function testCreate()
134
+ {
135
+ $db = $this->getDbObj();
136
+ $this->createDatabase($db, URL);
137
+ $this->openDatabase($db, URL);
138
+ $this->createTable($db, 1, TABLENAME);
139
+ $tb = $this->openTable($db, TABLENAME);
140
+ $tb->close();
141
+ $this->deleteDbObj($db);
142
+ }
143
+ public function testInsert()
144
+ {
145
+ $image = $this->getTestBinary();
146
+ $db = $this->getDbObj();
147
+ $this->openDatabase($db, URL);
148
+ $tb = $this->openTable($db, TABLENAME);
149
+ $this->assertNotEquals($tb, NULL);
150
+ // 1
151
+ $tb->clearBuffer();
152
+ $tb->setFV(FDI_USER_ID, 1);
153
+ $tb->setFV(FDI_BODY, "1\ntest\nテスト\n\nあいうえおあいうえお");
154
+ $tb->setFV(FDI_IMAGE, $image, strlen($image));
155
+ $tb->insert();
156
+ $this->assertEquals($tb->stat(), 0);
157
+ // 2
158
+ $tb->clearBuffer();
159
+ $tb->setFV('user_id', 1);
160
+ $tb->setFV('body', "2\ntest\nテスト\n\nあいうえおあいうえお");
161
+ $str = "2\ntest\nテスト\n\nあいうえおあいうえお";
162
+ $tb->setFV('image', $str, strlen($str));
163
+ $tb->insert();
164
+ $this->assertEquals($tb->stat(), 0);
165
+ // 3
166
+ $tb->clearBuffer();
167
+ $tb->setFV(FDI_USER_ID, 2);
168
+ $tb->setFV(FDI_BODY, "3\ntest\nテスト\n\nあいうえおあいうえお");
169
+ $str = "3\ntest\nテスト\n\nあいうえおあいうえお";
170
+ $tb->setFV(FDI_IMAGE, $str, strlen($str));
171
+ $tb->insert();
172
+ $this->assertEquals($tb->stat(), 0);
173
+ // close
174
+ $tb->close();
175
+ $this->deleteDbObj($db);
176
+ }
177
+ public function testSeek()
178
+ {
179
+ $db = $this->getDbObj();
180
+ $this->openDatabase($db, URL);
181
+ $tb = $this->openTable($db, TABLENAME);
182
+ $this->assertNotEquals($tb, NULL);
183
+ // 1
184
+ $tb->clearBuffer();
185
+ $tb->setFV(FDI_ID, 1);
186
+ $tb->seek();
187
+ $this->assertEquals($tb->getFVint(FDI_ID), 1);
188
+ $this->assertEquals($tb->getFVint(FDI_USER_ID), 1);
189
+ $this->assertEquals($tb->getFVstr(FDI_BODY), "1\ntest\nテスト\n\nあいうえおあいうえお");
190
+ $image = $this->getTestBinary();
191
+ $this->assertEquals($tb->getFVbin(FDI_IMAGE), $image);
192
+ // 2
193
+ $tb->seekNext();
194
+ $this->assertEquals($tb->getFVint(FDI_ID), 2);
195
+ $this->assertEquals($tb->getFVint(FDI_USER_ID), 1);
196
+ $this->assertEquals($tb->getFVstr(FDI_BODY), "2\ntest\nテスト\n\nあいうえおあいうえお");
197
+ $this->assertEquals($tb->getFVbin(FDI_IMAGE), "2\ntest\nテスト\n\nあいうえおあいうえお");
198
+ // 3
199
+ $tb->seekNext();
200
+ $this->assertEquals($tb->getFVint(FDI_ID), 3);
201
+ $this->assertEquals($tb->getFVint(FDI_USER_ID), 2);
202
+ $this->assertEquals($tb->getFVstr(FDI_BODY), "3\ntest\nテスト\n\nあいうえおあいうえお");
203
+ $this->assertEquals($tb->getFVbin(FDI_IMAGE), "3\ntest\nテスト\n\nあいうえおあいうえお");
204
+ // 2
205
+ $tb->seekPrev();
206
+ $this->assertEquals($tb->getFVint(FDI_ID), 2);
207
+ $this->assertEquals($tb->getFVint(FDI_USER_ID), 1);
208
+ $this->assertEquals($tb->getFVstr(FDI_BODY), "2\ntest\nテスト\n\nあいうえおあいうえお");
209
+ $this->assertEquals($tb->getFVbin(FDI_IMAGE), "2\ntest\nテスト\n\nあいうえおあいうえお");
210
+ // close
211
+ $tb->close();
212
+ $this->deleteDbObj($db);
213
+ }
214
+ public function testFind()
215
+ {
216
+ $db = $this->getDbObj();
217
+ $this->openDatabase($db, URL);
218
+ $tb = $this->openTable($db, TABLENAME);
219
+ $this->assertNotEquals($tb, NULL);
220
+ // 1
221
+ $tb->setKeyNum(0);
222
+ $tb->clearBuffer();
223
+ $tb->setFilter('id >= 1 and id < 3', 1, 0);
224
+ $this->assertEquals($tb->stat(), 0);
225
+ $tb->setFV(FDI_ID, 1);
226
+ $tb->find(table::findForword);
227
+ $this->assertEquals($tb->stat(), 0);
228
+ $this->assertEquals($tb->getFVint(FDI_ID), 1);
229
+ $this->assertEquals($tb->getFVint(FDI_USER_ID), 1);
230
+ $this->assertEquals($tb->getFVstr(FDI_BODY), "1\ntest\nテスト\n\nあいうえおあいうえお");
231
+ // 2
232
+ $tb->findNext(true);
233
+ $this->assertEquals($tb->stat(), 0);
234
+ $this->assertEquals($tb->getFVint(FDI_ID), 2);
235
+ $this->assertEquals($tb->getFVint(FDI_USER_ID), 1);
236
+ $this->assertEquals($tb->getFVstr(FDI_BODY), "2\ntest\nテスト\n\nあいうえおあいうえお");
237
+ // 3... but not found because filtered
238
+ $tb->findNext(true);
239
+ $this->assertEquals($tb->stat(), transactd::STATUS_EOF);
240
+ // 2... but changing seek-direction is not allowed
241
+ $tb->findPrev(true);
242
+ $this->assertEquals($tb->stat(), transactd::STATUS_PROGRAM_ERROR);
243
+ // close
244
+ $tb->close();
245
+ $this->deleteDbObj($db);
246
+ }
247
+ public function testUpdate()
248
+ {
249
+ $db = $this->getDbObj();
250
+ $this->openDatabase($db, URL);
251
+ $tb = $this->openTable($db, TABLENAME);
252
+ $this->assertNotEquals($tb, NULL);
253
+ // select 1
254
+ $tb->clearBuffer();
255
+ $tb->setFV(FDI_ID, 1);
256
+ $tb->seek();
257
+ $this->assertEquals($tb->getFVint(FDI_ID), 1);
258
+ $this->assertEquals($tb->getFVint(FDI_USER_ID), 1);
259
+ $this->assertEquals($tb->getFVstr(FDI_BODY), "1\ntest\nテスト\n\nあいうえおあいうえお");
260
+ // update
261
+ $tb->setFV(FDI_BODY, "1\nテスト\ntest\n\nABCDEFG");
262
+ $tb->update();
263
+ $this->assertEquals($tb->stat(), 0);
264
+ // select 2
265
+ $tb->seekNext();
266
+ $this->assertEquals($tb->getFVint(FDI_ID), 2);
267
+ $this->assertEquals($tb->getFVint(FDI_USER_ID), 1);
268
+ $this->assertEquals($tb->getFVstr(FDI_BODY), "2\ntest\nテスト\n\nあいうえおあいうえお");
269
+ // update
270
+ $tb->setFV(FDI_BODY, "2\nテスト\ntest\n\nABCDEFG");
271
+ $tb->update();
272
+ $this->assertEquals($tb->stat(), 0);
273
+ // check 1
274
+ $tb->seekPrev();
275
+ $this->assertEquals($tb->getFVint(FDI_ID), 1);
276
+ $this->assertEquals($tb->getFVint(FDI_USER_ID), 1);
277
+ $this->assertEquals($tb->getFVstr(FDI_BODY), "1\nテスト\ntest\n\nABCDEFG");
278
+ // check 2
279
+ $tb->seekNext();
280
+ $this->assertEquals($tb->getFVint(FDI_ID), 2);
281
+ $this->assertEquals($tb->getFVint(FDI_USER_ID), 1);
282
+ $this->assertEquals($tb->getFVstr(FDI_BODY), "2\nテスト\ntest\n\nABCDEFG");
283
+ // close
284
+ $tb->close();
285
+ $this->deleteDbObj($db);
286
+ }
287
+ public function testDelete()
288
+ {
289
+ $db = $this->getDbObj();
290
+ $this->openDatabase($db, URL);
291
+ $tb = $this->openTable($db, TABLENAME);
292
+ $this->assertNotEquals($tb, NULL);
293
+ // delete 2
294
+ $tb->clearBuffer();
295
+ $tb->setFV(FDI_ID, 2);
296
+ $tb->seek();
297
+ $this->assertEquals($tb->stat(), 0);
298
+ $tb->del();
299
+ $this->assertEquals($tb->stat(), 0);
300
+ // select 1
301
+ $tb->clearBuffer();
302
+ $tb->setFV(FDI_ID, 1);
303
+ $tb->seek();
304
+ $this->assertEquals($tb->getFVint(FDI_ID), 1);
305
+ $this->assertEquals($tb->getFVint(FDI_USER_ID), 1);
306
+ $this->assertEquals($tb->getFVstr(FDI_BODY), "1\nテスト\ntest\n\nABCDEFG");
307
+ // next is 3
308
+ $tb->seekNext();
309
+ $this->assertEquals($tb->getFVint(FDI_ID), 3);
310
+ $this->assertEquals($tb->getFVint(FDI_USER_ID), 2);
311
+ $this->assertEquals($tb->getFVstr(FDI_BODY), "3\ntest\nテスト\n\nあいうえおあいうえお");
312
+ // eof
313
+ $tb->seekNext();
314
+ $this->assertEquals($tb->stat(), transactd::STATUS_EOF);
315
+ // close
316
+ $tb->close();
317
+ $this->deleteDbObj($db);
318
+ }
319
+ public function testDrop()
320
+ {
321
+ $db = $this->getDbObj();
322
+ $this->dropDatabase($db, URL);
323
+ $this->deleteDbObj($db);
324
+ }
325
+ }
@@ -0,0 +1,183 @@
1
+ <?php
2
+ /* ================================================================
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
+ mb_internal_encoding('UTF-8');
21
+
22
+ require_once("transactd.php");
23
+
24
+ class transactdDatetimeTest extends PHPUnit_Framework_TestCase
25
+ {
26
+ public function testGetBtrdate()
27
+ {
28
+ $i_nowdate = transactd::getNowDate(); // get today as integer
29
+ $s_i_nowdate = transactd::btrdtoa($i_nowdate);
30
+ $s_i_nowdate2 = transactd::btrdtoa($i_nowdate, true);
31
+ //print_r($i_nowdate);
32
+ //print_r($s_i_nowdate);
33
+ //print_r($s_i_nowdate2);
34
+ $nowdate = new btrDate();
35
+ $nowdate->i = $i_nowdate; // get today as BtrDate
36
+ $s_nowdate = transactd::btrdtoa($nowdate);
37
+ $s_nowdate2 = transactd::btrdtoa($nowdate, true);
38
+ $cs_nowdate = transactd::c_str($nowdate);
39
+ //print_r($nowdate);
40
+ //print_r($s_nowdate);
41
+ //print_r($s_nowdate2);
42
+ //print_r($cs_nowdate);
43
+ $this->assertEquals($s_i_nowdate, $s_nowdate);
44
+ $this->assertEquals($s_i_nowdate2, $s_nowdate2);
45
+ $this->assertEquals($cs_nowdate, $s_nowdate);
46
+ }
47
+ public function testGetBtrtime()
48
+ {
49
+ $i_nowtime = transactd::getNowTime(); // get now time as integer
50
+ $s_i_nowtime = transactd::btrttoa($i_nowtime);
51
+ $s_i_nowtime2 = transactd::btrttoa($i_nowtime, true);
52
+ //print_r($i_nowtime);
53
+ //print_r($s_i_nowtime);
54
+ //print_r($s_i_nowtime2);
55
+ $nowtime = new btrTime();
56
+ $nowtime->i = $i_nowtime; // get now time as BtrTime
57
+ $s_nowtime = transactd::btrttoa($nowtime);
58
+ $s_nowtime2 = transactd::btrttoa($nowtime, true);
59
+ $cs_nowtime = transactd::c_str($nowtime);
60
+ //print_r($nowtime);
61
+ //print_r($s_nowtime);
62
+ //print_r($s_nowtime2);
63
+ //print_r($cs_nowtime);
64
+ $this->assertEquals($s_i_nowtime, $s_nowtime);
65
+ $this->assertEquals($s_i_nowtime2, $s_nowtime2);
66
+ $this->assertEquals($cs_nowtime, $s_nowtime);
67
+ }
68
+ public function testGetBtrdatetime()
69
+ {
70
+ $d = transactd::atobtrd("2012-08-22");
71
+ //print_r($d);
72
+ $s_date = transactd::btrdtoa($d);
73
+ $this->assertEquals($s_date, '2012/08/22');
74
+ //print_r($s_date);
75
+ $t = transactd::atobtrt("15:37:00");
76
+ $s_time = transactd::btrttoa($t);
77
+ $this->assertEquals($s_time, '15:37:00');
78
+ //print_r($t);
79
+ //print_r($s_time);
80
+ $dt = transactd::atobtrs('2012-08-22 15:37:00');
81
+ $s_datetime = transactd::btrstoa($dt);
82
+ $s_datetime2 = transactd::btrstoa($dt, true);
83
+ $this->assertEquals($s_datetime, '2012/08/22 15:37:00');
84
+ $this->assertEquals($s_datetime2, '2012-08-22T15:37:00');
85
+ //print_r($dt);
86
+ //print_r($s_datetime);
87
+ //print_r($s_datetime2);
88
+ $s_datetime_d = transactd::btrdtoa($dt->date);
89
+ $s_datetime_t = transactd::btrttoa($dt->time);
90
+ $this->assertEquals($s_datetime_d . ' ' . $s_datetime_t, '2012/08/22 15:37:00');
91
+ //print_r($s_datetime_d . ' ' . $s_datetime_t);
92
+ }
93
+ public function testGetBdate()
94
+ {
95
+ $bd = transactd::atobtrd('2012-08-22');
96
+ $bdate = new bdate($bd->i);
97
+ $bdate2 = new bdate(transactd::btrdtoa($bd));
98
+ //print_r($bdate);
99
+ //print_r($bdate2);
100
+ $btrdate = $bdate->btr_date();
101
+ $btrdate2 = $bdate2->btr_date();
102
+ //print_r($btrdate);
103
+ //print_r($btrdate2);
104
+ $s_bdate = $bdate->c_str();
105
+ $s_bdate2 = $bdate2->c_str();
106
+ $this->assertEquals($s_bdate, $s_bdate2);
107
+ //print_r($s_bdate);
108
+ //print_r($s_bdate2);
109
+ $this->assertEquals($bdate->year(), 2012);
110
+ $this->assertEquals($bdate->month(), 8);
111
+ $this->assertEquals($bdate->date(), 22);
112
+ $this->assertEquals($bdate->year_str(), '2012');
113
+ $this->assertEquals($bdate->month_str(), '8');
114
+ $this->assertEquals($bdate->date_str(), '22');
115
+ //print_r($bdate->year());
116
+ //print_r($bdate->month());
117
+ //print_r($bdate->date());
118
+ //print_r($bdate->year_str());
119
+ //print_r($bdate->month_str());
120
+ //print_r($bdate->date_str());
121
+ }
122
+ public function testGetBtrtimestampFromString()
123
+ {
124
+ $d = transactd::atobtrd('2012-08-22');
125
+ $t = transactd::atobtrt('15:37:00');
126
+ $btrts = new btrTimeStamp('2012-08-22 15:37:00');
127
+ $btrts2 = new btrTimeStamp($d, $t);
128
+ $s_btrts = $btrts->toString();
129
+ $s_btrts2 = $btrts2->toString();
130
+ //print_r($btrts);
131
+ //print_r($btrts2);
132
+ //print_r($s_btrts);
133
+ //print_r($s_btrts2);
134
+ $this->assertEquals($s_btrts, $s_btrts2);
135
+ $this->assertEquals($s_btrts, '2012/08/22 15:37:00');
136
+ }
137
+ public function testGetBtrtimestampFromBtrdateAndBtrtime()
138
+ {
139
+ $i_nowdate = transactd::getNowDate();
140
+ $nowdate = new btrDate();
141
+ $nowdate->i = $i_nowdate;
142
+ $i_nowtime = transactd::getNowTime();
143
+ $nowtime = new btrTime();
144
+ $nowtime->i = $i_nowtime;
145
+ $nowdatetime = new btrTimeStamp($nowdate, $nowtime);
146
+ $s_nowdate = transactd::btrdtoa($nowdate);
147
+ $s_nowtime = transactd::btrttoa($nowtime);
148
+ $s_nowdatetime = $nowdatetime->toString();
149
+ $this->assertEquals($s_nowdatetime, $s_nowdate . ' ' . $s_nowtime);
150
+ //print_r($nowdatetime);
151
+ //print_r($s_nowdatetime);
152
+ //print_r($s_nowdate . ' ' . $s_nowtime);
153
+ }
154
+ public function testLastYear()
155
+ {
156
+ $i_nowdate = transactd::getNowDate();
157
+ $nowdate = new btrDate();
158
+ $nowdate->i = $i_nowdate;
159
+ $nowyear_yy = $nowdate->yy;
160
+ $i_nowtime = transactd::getNowTime();
161
+ $nowtime = new btrTime();
162
+ $nowtime->i = $i_nowtime;
163
+ $nowdatetime = new btrTimeStamp($nowdate, $nowtime);
164
+ $s_nowdatetime = $nowdatetime->toString();
165
+ $lastyear = $nowdate;
166
+ $lastyear->yy = $lastyear->yy - 1;
167
+ $lastyear_yy = $lastyear->yy;
168
+ $s_lastyear = transactd::btrdtoa($lastyear);
169
+ $lastyeardatetime = new btrTimeStamp($lastyear, $nowtime);
170
+ $s_lastyeardatetime = $lastyeardatetime->toString();
171
+ $this->assertEquals($nowyear_yy - 1, $lastyear_yy);
172
+ $this->assertEquals($s_lastyeardatetime, str_replace($nowyear_yy, $lastyear_yy, $s_nowdatetime));
173
+ //print_r($lastyeardatetime);
174
+ //print_r($s_lastyear);
175
+ //print_r($s_lastyeardatetime);
176
+ }
177
+ public function testTypename()
178
+ {
179
+ $typename = transactd::getTypeName(transactd::ft_integer);
180
+ //print_r($typename);
181
+ $this->assertEquals($typename, 'Integer');
182
+ }
183
+ }