Răsfoiți Sursa

Adds unit test for CipEPath

CapXilinx 9 ani în urmă
părinte
comite
82980ed1df

+ 1 - 1
source/src/cip/cipcommon.c

@@ -751,7 +751,7 @@ int DecodePaddedEPath(CipEpath *epath, const EipUint8 **message) {
   for (number_of_decoded_elements = 0;
       number_of_decoded_elements < epath->path_size;
       number_of_decoded_elements++) {
-    if (kSegmentTypeSegmentTypeReserved == ((*message_runner) & kSegmentTypeSegmentTypeReserved)) {
+    if (kSegmentTypeReserved == ((*message_runner) & kSegmentTypeReserved)) {
       /* If invalid/reserved segment type, segment type greater than 0xE0 */
       return kEipStatusError;
     }

+ 3 - 3
source/src/cip/cipepath.c

@@ -75,7 +75,7 @@ const unsigned int kDataSegmentSubtypeANSIExtendedSymbolMessageValue = 0x11;
 SegmentType GetPathSegementType(const char *const cip_path) {
   const unsigned int kSegmentTypeMask = 0xE0;
   const unsigned int segment_type = cip_path & kSegmentTypeMask;
-  SegmentType result = kSegmentTypeSegmentTypeReserved;
+  SegmentType result = kSegmentTypeReserved;
   switch (segment_type) {
     case kSegmentTypePortSegmentMessageValue:
       result = kSegmentTypePortSegment;
@@ -99,7 +99,7 @@ SegmentType GetPathSegementType(const char *const cip_path) {
       result = kSegmentTypeDataTypeElementary;
       break;
     case kSegmentTypeSegmentTypeReservedMessageValue:
-      result = kSegmentTypeSegmentTypeReserved;
+      result = kSegmentTypeReserved;
       break;
     default:
       OPENER_ASSERT(
@@ -132,7 +132,7 @@ void SetPathSegementType(SegmentType segment_type, char *const cip_path) {
     case kSegmentTypeDataTypeElementary:
       cip_path |= kSegmentTypeDataTypeElementaryMessageValue;
       break;
-    case kSegmentTypeSegmentTypeReserved:
+    case kSegmentTypeReserved:
       cip_path |= kSegmentTypeSegmentTypeReservedMessageValue;
       break;
     default:

+ 3 - 3
source/src/cip/cipepath.h

@@ -21,11 +21,11 @@ typedef enum {
   kNetworkSegmentSubtypeExtendedNetworkSegment
 } NetworkSegmentSubtype;
 
-SegmentType GetPathSegementType(const char *const cip_path);
+SegmentType GetPathSegmentType(const char *const cip_path);
 
-void SetPathSegementType(SegmentType segment_type, char *const cip_path);
+void SetPathSegmentType(SegmentType segment_type, char *const cip_path);
 
-bool GetPathPortSegementExtendedLinkAddressSizeBit(const char *const cip_path);
+bool GetPathPortSegmentExtendedLinkAddressSizeBit(const char *const cip_path);
 
 
 #endif /* SRC_CIP_CIPEPATH_H_ */

+ 1 - 1
source/src/cip/ciptypes.h

@@ -22,7 +22,7 @@ typedef enum {
   kSegmentTypeDataSegment, /**< Data segment */
   kSegmentTypeDataTypeConstructed, /**< Data type constructed */
   kSegmentTypeDataTypeElementary, /**< Data type elementary */
-  kSegmentTypeSegmentTypeReserved
+  kSegmentTypeReserved /**< Reserved segment type */
 } SegmentType;
 
 /** @brief Port Segment flags */

+ 62 - 0
source/tests/cip/cipepathtest.cpp

@@ -17,3 +17,65 @@ extern "C" {
 TEST_GROUP(CipEpath) {
 
 };
+
+/** Segment type tests **/
+TEST(CipEpath, GetSegmentTypePortSegment) {
+  const char message[] = {0x00};
+  NetworkSegmentSubtype segment_type = GetPathSegmentType(message);
+  CHECK_EQUAL(kSegmentTypePortSegment, segment_type);
+}
+
+TEST(CipEpath, GetSegmentTypeLogicalSegment) {
+  const char message[] = {0x20};
+  NetworkSegmentSubtype segment_type = GetPathSegmentType(message);
+  CHECK_EQUAL(kSegmentTypeLogicalSegment, segment_type);
+}
+
+TEST(CipEpath, GetSegmentTypeNetworkSegment) {
+  const char message[] = {0x40};
+  NetworkSegmentSubtype segment_type = GetPathSegmentType(message);
+  CHECK_EQUAL(kSegmentTypeNetworkSegment, segment_type);
+}
+
+TEST(CipEpath, GetSegmentTypeSymbolicSegment) {
+  const char message[] = {0x60};
+  NetworkSegmentSubtype segment_type = GetPathSegmentType(message);
+  CHECK_EQUAL(kSegmentTypeSymbolicSegment, segment_type);
+}
+
+TEST(CipEpath, GetSegmentTypeDataSegment) {
+  const char message[] = {0x80};
+  NetworkSegmentSubtype segment_type = GetPathSegmentType(message);
+  CHECK_EQUAL(kSegmentTypeDataSegment, segment_type);
+}
+
+TEST(CipEpath, GetSegmentTypeDataTypeConstructed) {
+  const char message[] = {0xA0};
+  NetworkSegmentSubtype segment_type = GetPathSegmentType(message);
+  CHECK_EQUAL(kSegmentTypeDataTypeConstructed, segment_type);
+}
+
+TEST(CipEpath, GetSegmentTypeDataTypeElementary) {
+  const char message[] = {0xC0};
+  NetworkSegmentSubtype segment_type = GetPathSegmentType(message);
+  CHECK_EQUAL(kSegmentTypeDataTypeElementary, segment_type);
+}
+
+TEST(CipEpath, GetSegmentTypeReserved) {
+  const char message[] = {0xC0};
+  NetworkSegmentSubtype segment_type = GetPathSegmentType(message);
+  CHECK_EQUAL(kSegmentTypeReserved, segment_type);
+}
+
+/** Port segment tests **/
+TEST(CipEpath, PortSegmentExtendedAddressSizeTrueTest) {
+  const char message[] = {0x10};
+  bool extended_address = GetPathPortSegmentExtendedLinkAddressSizeBit(message);
+  CHECK_EQUAL(true, extended_address);
+}
+
+TEST(CipEpath, PortSegmentExtendedAddressSizeFalseTest) {
+  const char message[] = {0x00};
+  bool extended_address = GetPathPortSegmentExtendedLinkAddressSizeBit(message);
+  CHECK_EQUAL(false, extended_address);
+}