cipstringtests.cpp 6.8 KB

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