cipstringtests.cpp 6.9 KB

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