TestTPRealloc.cxx
上传用户:xfwatch
上传日期:2020-12-14
资源大小:872k
文件大小:11k
源码类别:

中间件编程

开发平台:

Java

  1. /*
  2.  * JBoss, Home of Professional Open Source
  3.  * Copyright 2008, Red Hat, Inc., and others contributors as indicated
  4.  * by the @authors tag. All rights reserved.
  5.  * See the copyright.txt in the distribution for a
  6.  * full listing of individual contributors.
  7.  * This copyrighted material is made available to anyone wishing to use,
  8.  * modify, copy, or redistribute it subject to the terms and conditions
  9.  * of the GNU Lesser General Public License, v. 2.1.
  10.  * This program is distributed in the hope that it will be useful, but WITHOUT A
  11.  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  12.  * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
  13.  * You should have received a copy of the GNU Lesser General Public License,
  14.  * v.2.1 along with this distribution; if not, write to the Free Software
  15.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  16.  * MA  02110-1301, USA.
  17.  */
  18. #include "TestAssert.h"
  19. #include "BaseTest.h"
  20. #include "xatmi.h"
  21. #include "XATMITestSuite.h"
  22. #include "TestTPRealloc.h"
  23. #include "malloc.h"
  24. void TestTPRealloc::setUp() {
  25. userlogc((char*) "TestTPRealloc::setUp");
  26. m_allocated = NULL;
  27. m_nonallocated = NULL;
  28. BaseTest::setUp();
  29. // Do local work
  30. }
  31. void TestTPRealloc::tearDown() {
  32. userlogc((char*) "TestTPRealloc::tearDown");
  33. if (m_allocated) {
  34. // Do local work
  35. ::tpfree( m_allocated);
  36. m_allocated = NULL;
  37. }
  38. if (m_nonallocated != NULL) {
  39. free( m_nonallocated);
  40. m_nonallocated = NULL;
  41. }
  42. BaseTest::tearDown();
  43. }
  44. // X_OCTET
  45. void TestTPRealloc::test_tprealloc_negative_x_octet() {
  46. userlogc("test_tprealloc_negative_x_octet");
  47. m_allocated = tpalloc((char*) "X_OCTET", NULL, 10);
  48. BT_ASSERT(m_allocated != NULL);
  49. ::tprealloc(m_allocated, -1);
  50. BT_ASSERT(tperrno == TPEINVAL);
  51. }
  52. // THIS DOES NOT WORK AS YOU CANNOT REALLOC A ZERO BUFFER AS IT CANT BE FOUND
  53. void TestTPRealloc::test_tprealloc_zero_x_octet() {
  54. userlogc("test_tprealloc_zero_x_octet");
  55. m_allocated = tpalloc((char*) "X_OCTET", NULL, 10);
  56. BT_ASSERT(m_allocated != NULL);
  57. ::tprealloc(m_allocated, 0);
  58. BT_ASSERT(tperrno == TPEINVAL);
  59. char* type = (char*) malloc(8);
  60. char* subtype = (char*) malloc(16);
  61. int toTest = ::tptypes(m_allocated, type, subtype);
  62. BT_ASSERT(strncmp(type, "X_OCTET", 8) == 0);
  63. BT_ASSERT(strcmp(subtype, "") == 0);
  64. free(type);
  65. free(subtype);
  66. BT_ASSERT(tperrno == 0);
  67. BT_ASSERT(toTest == 10);
  68. }
  69. void TestTPRealloc::test_tprealloc_larger_x_octet() {
  70. userlogc("test_tprealloc_larger_x_octet");
  71. m_allocated = tpalloc((char*) "X_OCTET", NULL, 10);
  72. BT_ASSERT(m_allocated != NULL);
  73. m_allocated = ::tprealloc(m_allocated, 20);
  74. BT_ASSERT(tperrno == 0);
  75. char* type = (char*) malloc(8);
  76. char* subtype = (char*) malloc(16);
  77. int toTest = ::tptypes(m_allocated, type, subtype);
  78. BT_ASSERT(strncmp(type, "X_OCTET", 8) == 0);
  79. BT_ASSERT(strcmp(subtype, "") == 0);
  80. free(type);
  81. free(subtype);
  82. BT_ASSERT(tperrno == 0);
  83. BT_ASSERT(toTest == 20);
  84. }
  85. void TestTPRealloc::test_tprealloc_smaller_x_octet() {
  86. userlogc("test_tprealloc_smaller_x_octet");
  87. m_allocated = tpalloc((char*) "X_OCTET", NULL, 10);
  88. BT_ASSERT(m_allocated != NULL);
  89. m_allocated = ::tprealloc(m_allocated, 5);
  90. BT_ASSERT(tperrno == 0);
  91. char* type = (char*) malloc(8);
  92. char* subtype = (char*) malloc(16);
  93. int toTest = ::tptypes(m_allocated, type, subtype);
  94. BT_ASSERT(strncmp(type, "X_OCTET", 8) == 0);
  95. BT_ASSERT(strcmp(subtype, "") == 0);
  96. free(type);
  97. free(subtype);
  98. BT_ASSERT(tperrno == 0);
  99. BT_ASSERT(toTest == 5);
  100. }
  101. void TestTPRealloc::test_tprealloc_samesize_x_octet() {
  102. userlogc("test_tprealloc_samesize_x_octet");
  103. m_allocated = tpalloc((char*) "X_OCTET", NULL, 10);
  104. BT_ASSERT(m_allocated != NULL);
  105. m_allocated = ::tprealloc(m_allocated, 10);
  106. BT_ASSERT(tperrno == 0);
  107. char* type = (char*) malloc(8);
  108. char* subtype = (char*) malloc(16);
  109. int toTest = ::tptypes(m_allocated, type, subtype);
  110. BT_ASSERT(strncmp(type, "X_OCTET", 8) == 0);
  111. BT_ASSERT(strcmp(subtype, "") == 0);
  112. free(type);
  113. free(subtype);
  114. BT_ASSERT(tperrno == 0);
  115. BT_ASSERT(toTest == 10);
  116. }
  117. void TestTPRealloc::test_tprealloc_multi_x_octet() {
  118. userlogc("test_tprealloc_multi_x_octet");
  119. m_allocated = tpalloc((char*) "X_OCTET", NULL, 10);
  120. BT_ASSERT(m_allocated != NULL);
  121. for (int i = 32; i <= 128; i++) {
  122. m_allocated = ::tprealloc(m_allocated, i);
  123. BT_ASSERT(tperrno == 0);
  124. char* type = (char*) malloc(8);
  125. char* subtype = (char*) malloc(16);
  126. int toTest = ::tptypes(m_allocated, type, subtype);
  127. BT_ASSERT(strncmp(type, "X_OCTET", 8) == 0);
  128. BT_ASSERT(strcmp(subtype, "") == 0);
  129. free(type);
  130. free(subtype);
  131. BT_ASSERT(tperrno == 0);
  132. BT_ASSERT(toTest == i);
  133. }
  134. }
  135. // 8.2
  136. void TestTPRealloc::test_tprealloc_nonbuffer() {
  137. userlogc("test_tprealloc_nonbuffer");
  138. m_nonallocated = (char*) malloc(10);
  139. char* toFree = m_nonallocated;
  140. m_nonallocated = ::tprealloc(m_nonallocated, 10);
  141. BT_ASSERT(tperrno == TPEINVAL);
  142. free(toFree);
  143. }
  144. void TestTPRealloc::test_tprealloc_null() {
  145. userlogc("test_tprealloc_null");
  146. m_nonallocated = ::tprealloc(NULL, 10);
  147. BT_ASSERT(tperrno == TPEINVAL);
  148. }
  149. // X_COMMON
  150. void TestTPRealloc::test_tprealloc_negative_x_common() {
  151. userlogc("test_tprealloc_negative_x_common");
  152. m_allocated = tpalloc((char*) "X_COMMON", (char*) "deposit", 0);
  153. BT_ASSERT(m_allocated != NULL);
  154. ::tprealloc(m_allocated, -1);
  155. BT_ASSERT(tperrno == TPEINVAL);
  156. }
  157. void TestTPRealloc::test_tprealloc_zero_x_common() {
  158. userlogc("test_tprealloc_zero_x_common");
  159. m_allocated = tpalloc((char*) "X_COMMON", (char*) "deposit", 0);
  160. BT_ASSERT(m_allocated != NULL);
  161. ::tprealloc(m_allocated, 0);
  162. BT_ASSERT(tperrno == TPEINVAL);
  163. char* type = (char*) malloc(8);
  164. char* subtype = (char*) malloc(16);
  165. int toTest = ::tptypes(m_allocated, type, subtype);
  166. BT_ASSERT(strncmp(type, "X_COMMON", 8) == 0);
  167. BT_ASSERT(strcmp(subtype, "deposit") == 0);
  168. free(type);
  169. free(subtype);
  170. BT_ASSERT(tperrno == 0);
  171. BT_ASSERT(toTest == sizeof(DEPOSIT));
  172. }
  173. void TestTPRealloc::test_tprealloc_larger_x_common() {
  174. userlogc("test_tprealloc_larger_x_common");
  175. m_allocated = tpalloc((char*) "X_COMMON", (char*) "deposit", 0);
  176. BT_ASSERT(m_allocated != NULL);
  177. ::tprealloc(m_allocated, 3027);
  178. BT_ASSERT(tperrno == TPEINVAL);
  179. char* type = (char*) malloc(8);
  180. char* subtype = (char*) malloc(16);
  181. int toTest = ::tptypes(m_allocated, type, subtype);
  182. BT_ASSERT(strncmp(type, "X_COMMON", 8) == 0);
  183. BT_ASSERT(strcmp(subtype, "deposit") == 0);
  184. free(type);
  185. free(subtype);
  186. BT_ASSERT(tperrno == 0);
  187. BT_ASSERT(toTest == sizeof(DEPOSIT));
  188. }
  189. void TestTPRealloc::test_tprealloc_smaller_x_common() {
  190. userlogc("test_tprealloc_smaller_x_common");
  191. m_allocated = tpalloc((char*) "X_COMMON", (char*) "deposit", 0);
  192. BT_ASSERT(m_allocated != NULL);
  193. ::tprealloc(m_allocated, 512);
  194. BT_ASSERT(tperrno == TPEINVAL);
  195. char* type = (char*) malloc(8);
  196. char* subtype = (char*) malloc(16);
  197. int toTest = ::tptypes(m_allocated, type, subtype);
  198. BT_ASSERT(strncmp(type, "X_COMMON", 8) == 0);
  199. BT_ASSERT(strcmp(subtype, "deposit") == 0);
  200. free(type);
  201. free(subtype);
  202. BT_ASSERT(tperrno == 0);
  203. BT_ASSERT(toTest == sizeof(DEPOSIT));
  204. }
  205. void TestTPRealloc::test_tprealloc_samesize_x_common() {
  206. userlogc("test_tprealloc_samesize_x_common");
  207. m_allocated = tpalloc((char*) "X_COMMON", (char*) "deposit", 0);
  208. BT_ASSERT(m_allocated != NULL);
  209. ::tprealloc(m_allocated, 2048);
  210. BT_ASSERT(tperrno == TPEINVAL);
  211. char* type = (char*) malloc(8);
  212. char* subtype = (char*) malloc(16);
  213. int toTest = ::tptypes(m_allocated, type, subtype);
  214. BT_ASSERT(strncmp(type, "X_COMMON", 8) == 0);
  215. BT_ASSERT(strcmp(subtype, "deposit") == 0);
  216. free(type);
  217. free(subtype);
  218. BT_ASSERT(tperrno == 0);
  219. BT_ASSERT(toTest == sizeof(DEPOSIT));
  220. }
  221. void TestTPRealloc::test_tprealloc_multi_x_common() {
  222. userlogc("test_tprealloc_multi_x_common");
  223. m_allocated = tpalloc((char*) "X_COMMON", (char*) "deposit", 0);
  224. BT_ASSERT(m_allocated != NULL);
  225. for (int i = 1024; i <= 1124; i++) {
  226. ::tprealloc(m_allocated, i);
  227. BT_ASSERT(tperrno == TPEINVAL);
  228. char* type = (char*) malloc(8);
  229. char* subtype = (char*) malloc(16);
  230. int toTest = ::tptypes(m_allocated, type, subtype);
  231. BT_ASSERT(strncmp(type, "X_COMMON", 8) == 0);
  232. BT_ASSERT(strcmp(subtype, "deposit") == 0);
  233. free(type);
  234. free(subtype);
  235. BT_ASSERT(tperrno == 0);
  236. BT_ASSERT(toTest == sizeof(DEPOSIT));
  237. }
  238. }
  239. // X_C_TYPE
  240. void TestTPRealloc::test_tprealloc_negative_x_c_type() {
  241. userlogc("test_tprealloc_negative_x_c_type");
  242. m_allocated = tpalloc((char*) "X_C_TYPE", (char*) "acct_info", 0);
  243. BT_ASSERT(m_allocated != NULL);
  244. ::tprealloc(m_allocated, -1);
  245. BT_ASSERT(tperrno == TPEINVAL);
  246. }
  247. void TestTPRealloc::test_tprealloc_zero_x_c_type() {
  248. userlogc("test_tprealloc_zero_x_c_type");
  249. m_allocated = tpalloc((char*) "X_C_TYPE", (char*) "acct_info", 0);
  250. BT_ASSERT(m_allocated != NULL);
  251. ::tprealloc(m_allocated, 0);
  252. BT_ASSERT(tperrno == TPEINVAL);
  253. char* type = (char*) malloc(8);
  254. char* subtype = (char*) malloc(16);
  255. int toTest = ::tptypes(m_allocated, type, subtype);
  256. BT_ASSERT(strncmp(type, "X_C_TYPE", 8) == 0);
  257. BT_ASSERT(strcmp(subtype, "acct_info") == 0);
  258. free(type);
  259. free(subtype);
  260. BT_ASSERT(tperrno == 0);
  261. BT_ASSERT(toTest == sizeof(ACCT_INFO));
  262. }
  263. void TestTPRealloc::test_tprealloc_larger_x_c_type() {
  264. userlogc("test_tprealloc_larger_x_c_type");
  265. m_allocated = tpalloc((char*) "X_C_TYPE", (char*) "acct_info", 0);
  266. BT_ASSERT(m_allocated != NULL);
  267. ::tprealloc(m_allocated, 3072);
  268. BT_ASSERT(tperrno == TPEINVAL);
  269. char* type = (char*) malloc(8);
  270. char* subtype = (char*) malloc(16);
  271. int toTest = ::tptypes(m_allocated, type, subtype);
  272. BT_ASSERT(strncmp(type, "X_C_TYPE", 8) == 0);
  273. BT_ASSERT(strcmp(subtype, "acct_info") == 0);
  274. free(type);
  275. free(subtype);
  276. BT_ASSERT(tperrno == 0);
  277. BT_ASSERT(toTest == sizeof(ACCT_INFO));
  278. }
  279. void TestTPRealloc::test_tprealloc_smaller_x_c_type() {
  280. userlogc("test_tprealloc_smaller_x_c_type");
  281. m_allocated = tpalloc((char*) "X_C_TYPE", (char*) "acct_info", 0);
  282. BT_ASSERT(m_allocated != NULL);
  283. ::tprealloc(m_allocated, 512);
  284. BT_ASSERT(tperrno == TPEINVAL);
  285. char* type = (char*) malloc(8);
  286. char* subtype = (char*) malloc(16);
  287. int toTest = ::tptypes(m_allocated, type, subtype);
  288. BT_ASSERT(strncmp(type, "X_C_TYPE", 8) == 0);
  289. BT_ASSERT(strcmp(subtype, "acct_info") == 0);
  290. free(type);
  291. free(subtype);
  292. BT_ASSERT(tperrno == 0);
  293. BT_ASSERT(toTest == sizeof(ACCT_INFO));
  294. }
  295. void TestTPRealloc::test_tprealloc_samesize_x_c_type() {
  296. userlogc("test_tprealloc_samesize_x_c_type");
  297. m_allocated = tpalloc((char*) "X_C_TYPE", (char*) "acct_info", 0);
  298. BT_ASSERT(m_allocated != NULL);
  299. ::tprealloc(m_allocated, 2048);
  300. BT_ASSERT(tperrno == TPEINVAL);
  301. char* type = (char*) malloc(8);
  302. char* subtype = (char*) malloc(16);
  303. int toTest = ::tptypes(m_allocated, type, subtype);
  304. BT_ASSERT(strncmp(type, "X_C_TYPE", 8) == 0);
  305. BT_ASSERT(strcmp(subtype, "acct_info") == 0);
  306. free(type);
  307. free(subtype);
  308. BT_ASSERT(tperrno == 0);
  309. BT_ASSERT(toTest == sizeof(ACCT_INFO));
  310. }
  311. void TestTPRealloc::test_tprealloc_multi_x_c_type() {
  312. userlogc("test_tprealloc_multi_x_c_type");
  313. m_allocated = tpalloc((char*) "X_C_TYPE", (char*) "acct_info", 0);
  314. BT_ASSERT(m_allocated != NULL);
  315. for (int i = 1024; i <= 1124; i++) {
  316. ::tprealloc(m_allocated, i);
  317. BT_ASSERT(tperrno == TPEINVAL);
  318. char* type = (char*) malloc(8);
  319. char* subtype = (char*) malloc(16);
  320. int toTest = ::tptypes(m_allocated, type, subtype);
  321. BT_ASSERT(strncmp(type, "X_C_TYPE", 8) == 0);
  322. BT_ASSERT(strcmp(subtype, "acct_info") == 0);
  323. free(type);
  324. free(subtype);
  325. BT_ASSERT(tperrno == 0);
  326. BT_ASSERT(toTest == sizeof(ACCT_INFO));
  327. }
  328. }