cipstringtests.cpp 6.4 KB

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