cipstringtests.cpp 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. /*******************************************************************************
  2. * Copyright (c) 2020, Rockwell Automation, Inc.
  3. * All rights reserved.
  4. *
  5. *****************************************************I*************************/
  6. #include <CppUTest/TestHarness.h>
  7. #include <CppUTestExt/MockSupport.h>
  8. #include <stdint.h>
  9. #include <string.h>
  10. extern "C" {
  11. #include "opener_api.h"
  12. #include "cipstring.h"
  13. }
  14. TEST_GROUP (CipString) {
  15. void setup()
  16. {
  17. mock().disable();
  18. }
  19. };
  20. TEST (CipString, CipStringNClearNullPointer) {
  21. CipStringN *null_ptr = NULL;
  22. ClearCipStringN(null_ptr);
  23. };
  24. TEST (CipString, CipStringNFreeNullPointer) {
  25. CipStringN *null_ptr = NULL;
  26. FreeCipStringN(null_ptr);
  27. };
  28. TEST (CipString, ClearCipStringNWithContent) {
  29. CipStringN *string;
  30. string = (CipStringN *) CipCalloc(sizeof(CipStringN),1);
  31. string->size = 3;
  32. string->length = 10;
  33. string->string = (EipByte *) CipCalloc(10, 3);
  34. CipStringN *returned_ptr = ClearCipStringN(string);
  35. POINTERS_EQUAL(string, returned_ptr);
  36. CHECK_EQUAL(0, string->size);
  37. CHECK_EQUAL(0, string->length);
  38. POINTERS_EQUAL(NULL, string->string);
  39. FreeCipStringN(string);
  40. };
  41. TEST (CipString, FreeCipStringNWithContent) {
  42. CipStringN *string;
  43. string = (CipStringN *) CipCalloc(sizeof(CipStringN),1);
  44. string->size = 3;
  45. string->length = 10;
  46. string->string = (EipByte *) CipCalloc(10, 3);
  47. FreeCipStringN(string);
  48. };
  49. TEST (CipString, CreateStringNFromData) {
  50. const CipOctet data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
  51. CipStringN *string;
  52. string = (CipStringN *) CipCalloc(1, sizeof(CipStringN) );
  53. SetCipStringNByData(string, 4, 3, data);
  54. CHECK_EQUAL(3, string->size);
  55. CHECK_EQUAL(4, string->length);
  56. MEMCMP_EQUAL(data, string->string, sizeof(data) );
  57. FreeCipStringN(string);
  58. }
  59. TEST (CipString, CreateStringNFromCString) {
  60. const char data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0};
  61. CipStringN *string;
  62. string = (CipStringN *) CipCalloc(1, sizeof(CipStringN) );
  63. SetCipStringNByCstr(string, data, 3);
  64. CHECK_EQUAL(3, string->size);
  65. CHECK_EQUAL(4, string->length);
  66. MEMCMP_EQUAL(data, string->string, strlen(data) );
  67. FreeCipStringN(string);
  68. }
  69. /*** CipString2 ***/
  70. TEST (CipString, CipString2ClearNullPointer) {
  71. CipString2 *null_ptr = NULL;
  72. ClearCipString2(null_ptr);
  73. };
  74. TEST (CipString, CipString2FreeNullPointer) {
  75. CipString2 *null_ptr = NULL;
  76. FreeCipString2(null_ptr);
  77. };
  78. TEST (CipString, ClearCipString2WithContent) {
  79. CipString2 *string;
  80. string = (CipString2 *) CipCalloc(sizeof(CipString2),1);
  81. string->length = 10;
  82. string->string = (CipWord *) CipCalloc(10, 2);
  83. CipString2 *returned_ptr = ClearCipString2(string);
  84. POINTERS_EQUAL(string, returned_ptr);
  85. CHECK_EQUAL(0, string->length);
  86. POINTERS_EQUAL(NULL, string->string);
  87. FreeCipString2(string);
  88. };
  89. TEST (CipString, FreeCipString2WithContent) {
  90. CipString2 *string;
  91. string = (CipString2 *) CipCalloc(sizeof(CipString2),1);
  92. string->length = 10;
  93. string->string = (CipWord *) CipCalloc(10, 2);
  94. FreeCipString2(string);
  95. };
  96. TEST (CipString, CreateString2FromData) {
  97. const CipOctet data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
  98. CipString2 *string;
  99. string = (CipString2 *) CipCalloc(1, sizeof(CipString2) );
  100. SetCipString2ByData(string, 6, data);
  101. CHECK_EQUAL(6, string->length);
  102. MEMCMP_EQUAL(data, string->string, sizeof(data) );
  103. FreeCipString2(string);
  104. }
  105. TEST (CipString, CreateString2FromCString) {
  106. const char data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0};
  107. CipString2 *string;
  108. string = (CipString2 *) CipCalloc(1, sizeof(CipString2) );
  109. SetCipString2ByCstr(string, data);
  110. CHECK_EQUAL(6, string->length);
  111. MEMCMP_EQUAL(data, string->string, strlen(data) );
  112. FreeCipString2(string);
  113. }
  114. /*** CipString ***/
  115. TEST (CipString, CipStringClearNullPointer) {
  116. CipString *null_ptr = NULL;
  117. ClearCipString(null_ptr);
  118. };
  119. TEST (CipString, CipStringFreeNullPointer) {
  120. CipString *null_ptr = NULL;
  121. FreeCipString(null_ptr);
  122. };
  123. TEST (CipString, ClearCipStringWithContent) {
  124. CipString *string;
  125. string = (CipString *) CipCalloc(sizeof(CipString),1);
  126. string->length = 10;
  127. string->string = (CipByte *) CipCalloc(10, 1);
  128. CipString *returned_ptr = ClearCipString(string);
  129. POINTERS_EQUAL(string, returned_ptr);
  130. CHECK_EQUAL(0, string->length);
  131. POINTERS_EQUAL(NULL, string->string);
  132. FreeCipString(string);
  133. };
  134. TEST (CipString, FreeCipStringWithContent) {
  135. CipString *string;
  136. string = (CipString *) CipCalloc(sizeof(CipString),1);
  137. string->length = 10;
  138. string->string = (CipByte *) CipCalloc(10, 1);
  139. FreeCipString(string);
  140. };
  141. TEST (CipString, CreateStringFromData) {
  142. const CipOctet data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
  143. CipString *string;
  144. string = (CipString *) CipCalloc(1, sizeof(CipString) );
  145. SetCipStringByData(string, sizeof(data), data);
  146. CHECK_EQUAL(12, string->length);
  147. MEMCMP_EQUAL(data, string->string, sizeof(data) );
  148. FreeCipString(string);
  149. }
  150. TEST (CipString, CreateStringFromCString) {
  151. const char data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0};
  152. CipString *string;
  153. string = (CipString *) CipCalloc(1, sizeof(CipString) );
  154. SetCipStringByCstr(string, data);
  155. CHECK_EQUAL(12, string->length);
  156. MEMCMP_EQUAL(data, string->string, strlen(data) );
  157. FreeCipString(string);
  158. }
  159. /*** CipShortString ***/
  160. TEST (CipString, CipShortStringClearNullPointer) {
  161. CipShortString *null_ptr = NULL;
  162. ClearCipShortString(null_ptr);
  163. };
  164. TEST (CipString, CipShortStringFreeNullPointer) {
  165. CipShortString *null_ptr = NULL;
  166. FreeCipShortString(null_ptr);
  167. };
  168. TEST (CipString, ClearCipShortStringWithContent) {
  169. CipShortString *string;
  170. string = (CipShortString *) CipCalloc(sizeof(CipShortString),1);
  171. string->length = 10;
  172. string->string = (CipByte *) CipCalloc(10, 1);
  173. CipShortString *returned_ptr = ClearCipShortString(string);
  174. POINTERS_EQUAL(string, returned_ptr);
  175. CHECK_EQUAL(0, string->length);
  176. POINTERS_EQUAL(NULL, string->string);
  177. FreeCipShortString(string);
  178. };
  179. TEST (CipString, FreeCipShortStringWithContent) {
  180. CipShortString *string;
  181. string = (CipShortString *) CipCalloc(sizeof(CipShortString),1);
  182. string->length = 10;
  183. string->string = (CipByte *) CipCalloc(10, 1);
  184. FreeCipShortString(string);
  185. };
  186. TEST (CipString, CreateShortStringFromData) {
  187. const CipOctet data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
  188. CipShortString *string;
  189. string = (CipShortString *) CipCalloc(1, sizeof(CipShortString) );
  190. SetCipShortStringByData(string, sizeof(data), data);
  191. CHECK_EQUAL(12, string->length);
  192. MEMCMP_EQUAL(data, string->string, sizeof(data) );
  193. FreeCipShortString(string);
  194. }
  195. TEST (CipString, CreateShortStringFromCString) {
  196. const char data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0};
  197. CipShortString *string;
  198. string = (CipShortString *) CipCalloc(1, sizeof(CipShortString) );
  199. SetCipShortStringByCstr(string, data);
  200. CHECK_EQUAL(12, string->length);
  201. MEMCMP_EQUAL(data, string->string, strlen(data) );
  202. FreeCipShortString(string);
  203. }