Răsfoiți Sursa

Increases code coverage

Signed-off-by: Martin Melik Merkumians <melik-merkumians@acin.tuwien.ac.at>
Martin Melik Merkumians 5 ani în urmă
părinte
comite
d84091ed8a

+ 31 - 26
source/src/enet_encap/endianconv.c

@@ -26,9 +26,9 @@ OpenerEndianess g_opener_platform_endianess = kOpenerEndianessUnknown;
  *   @param buffer pointer where data should be reed.
  *   @return EIP_UINT8 data value
  */
-EipUint8 GetSintFromMessage(const EipUint8 **const buffer) {
-  const unsigned char *const buffer_address = (unsigned char *) *buffer;
-  EipUint8 data = buffer_address[0];
+CipSint GetSintFromMessage(const CipOctet **const buffer) {
+  const CipOctet *buffer_address = (unsigned char *) *buffer;
+  CipSint data = buffer_address[0];
   *buffer += 1;
   return data;
 }
@@ -54,7 +54,7 @@ CipUsint GetUsintFromMessage(const CipOctet **const buffer_address) {
  *   @param buffer pointer where data should be reed.
  *   @return EIP_UINT16 data value
  */
-EipUint16 GetIntFromMessage(const EipUint8 **const buffer) {
+CipInt GetIntFromMessage(const CipOctet **const buffer) {
   const unsigned char *const buffer_address = (unsigned char *) *buffer;
   EipUint16 data = buffer_address[0] | buffer_address[1] << 8;
   *buffer += 2;
@@ -80,7 +80,7 @@ CipWord GetWordFromMessage(const CipOctet **const buffer_address) {
  *   @param buffer pointer where data should be reed.
  *   @return EIP_UNÍT32 value
  */
-EipUint32 GetDintFromMessage(const EipUint8 **const buffer) {
+CipDint GetDintFromMessage(const CipOctet **const buffer) {
   const unsigned char *p = (unsigned char *) *buffer;
   EipUint32 data = p[0] | p[1] << 8 | p[2] << 16 | p[3] << 24;
   *buffer += 4;
@@ -90,7 +90,15 @@ EipUint32 GetDintFromMessage(const EipUint8 **const buffer) {
 CipUdint GetUdintFromMessage(const CipOctet **const buffer_address) {
   const CipOctet *buffer = *buffer_address;
   CipUdint data = buffer[0] | buffer[1] << 8 | buffer[2] << 16 | buffer[3] <<
-                  24;
+    24;
+  *buffer_address += 4;
+  return data;
+}
+
+CipUdint GetDwordFromMessage(const CipOctet **const buffer_address) {
+  const CipOctet *buffer = *buffer_address;
+  CipDword data = buffer[0] | buffer[1] << 8 | buffer[2] << 16 | buffer[3] <<
+    24;
   *buffer_address += 4;
   return data;
 }
@@ -145,21 +153,18 @@ void AddDintToMessage(const EipUint32 data,
  */
 EipUint64 GetLintFromMessage(const EipUint8 **const buffer) {
   const EipUint8 *buffer_address = *buffer;
-  EipUint64 data = ( ( ( (EipUint64) buffer_address[0] ) << 56 )
-                     & 0xFF00000000000000LL )
-                   + ( ( ( (EipUint64) buffer_address[1] ) << 48 ) &
-                       0x00FF000000000000LL )
-                   + ( ( ( (EipUint64) buffer_address[2] ) << 40 ) &
-                       0x0000FF0000000000LL )
-                   + ( ( ( (EipUint64) buffer_address[3] ) << 32 ) &
-                       0x000000FF00000000LL )
-                   + ( ( ( (EipUint64) buffer_address[4] ) << 24 ) &
-                       0x00000000FF000000 )
-                   + ( ( ( (EipUint64) buffer_address[5] ) << 16 ) &
-                       0x0000000000FF0000 )
-                   + ( ( ( (EipUint64) buffer_address[6] ) << 8 ) &
-                       0x000000000000FF00 )
-                   + ( ( (EipUint64) buffer_address[7] ) & 0x00000000000000FF );
+  EipUint64 data =
+    ( ( ( (EipUint64) buffer_address[0] ) << 56 ) & 0xFF00000000000000LL ) +
+    ( ( ( (EipUint64) buffer_address[1] ) << 48 ) & 0x00FF000000000000LL )
+    + ( ( ( (EipUint64) buffer_address[2] ) << 40 ) &
+        0x0000FF0000000000LL ) +
+    ( ( ( (EipUint64) buffer_address[3] ) << 32 ) & 0x000000FF00000000LL )
+    + ( ( ( (EipUint64) buffer_address[4] ) << 24 ) &
+        0x00000000FF000000 ) +
+    ( ( ( (EipUint64) buffer_address[5] ) << 16 ) & 0x0000000000FF0000 )
+    + ( ( ( (EipUint64) buffer_address[6] ) << 8 ) &
+        0x000000000000FF00 ) +
+    ( ( (EipUint64) buffer_address[7] ) & 0x00000000000000FF );
   *buffer += 8;
   return data;
 }
@@ -187,13 +192,13 @@ void AddLintToMessage(const EipUint64 data,
 void EncapsulateIpAddress(EipUint16 port,
                           EipUint32 address,
                           ENIPMessage *const outgoing_message) {
-  if (kOpENerEndianessLittle == g_opener_platform_endianess) {
+  if(kOpENerEndianessLittle == g_opener_platform_endianess) {
     AddIntToMessage(htons(AF_INET), outgoing_message);
     AddIntToMessage(port, outgoing_message);
     AddDintToMessage(address, outgoing_message);
 
   } else {
-    if (kOpENerEndianessBig == g_opener_platform_endianess) {
+    if(kOpENerEndianessBig == g_opener_platform_endianess) {
 
       AddIntToMessage(htons(AF_INET), outgoing_message);
 
@@ -208,7 +213,7 @@ void EncapsulateIpAddress(EipUint16 port,
     } else {
       fprintf(stderr,
               "No endianess detected! Probably the DetermineEndianess function was not executed!");
-      exit (EXIT_FAILURE);
+      exit(EXIT_FAILURE);
     }
   }
 }
@@ -221,8 +226,8 @@ void EncapsulateIpAddress(EipUint16 port,
  */
 void DetermineEndianess() {
   int i = 1;
-  char *p = (char *) &i;
-  if (p[0] == 1) {
+  const char *const p = (char *) &i;
+  if(p[0] == 1) {
     g_opener_platform_endianess = kOpENerEndianessLittle;
   } else {
     g_opener_platform_endianess = kOpENerEndianessBig;

+ 5 - 3
source/src/enet_encap/endianconv.h

@@ -24,7 +24,7 @@ typedef enum {
  *   @param buffer pointer where data should be reed.
  *   @return EIP_UINT8 data value
  */
-EipUint8 GetSintFromMessage(const EipUint8 **const buffer);
+CipSint GetSintFromMessage(const CipOctet **const buffer);
 
 CipByte GetByteFromMessage(const CipOctet **const buffer_address);
 
@@ -36,7 +36,7 @@ CipUsint GetUsintFromMessage(const CipOctet **const buffer_address);
  * @param buffer Pointer to the network buffer array. This pointer will be incremented by 2!
  * @return Extracted 16 bit integer value
  */
-EipUint16 GetIntFromMessage(const EipUint8 **const buffer);
+CipInt GetIntFromMessage(const CipOctet **const buffer);
 
 CipUint GetUintFromMessage(const CipOctet **const buffer_address);
 
@@ -48,10 +48,12 @@ CipWord GetWordFromMessage(const CipOctet **const buffer_address);
  * @param buffer pointer to the network buffer array. This pointer will be incremented by 4!
  * @return Extracted 32 bit integer value
  */
-EipUint32 GetDintFromMessage(const EipUint8 **const buffer);
+CipDint GetDintFromMessage(const CipOctet **const buffer);
 
 CipUdint GetUdintFromMessage(const CipOctet **const buffer_address);
 
+CipUdint GetDwordFromMessage(const CipOctet **const buffer_address);
+
 /** @ingroup ENCAP
  *
  * @brief converts UINT8 data from host to little endian an writes it to buffer.

+ 76 - 16
source/tests/enet_encap/endianconvtest.cpp

@@ -19,44 +19,104 @@ extern "C" {
 
 }
 
-TEST_GROUP(EndianConversion) {
+TEST_GROUP (EndianConversion) {
 
 };
 
 TEST(EndianConversion, GetSintFromMessage) {
-  const EipUint8 test_message[] = { 8 };
-  const EipUint8 *message_pointer = test_message;
-  const EipUint8 **const message = &message_pointer;
-  EipUint16 returned_value = GetSintFromMessage(message);
+  const CipOctet test_message[] = {8};
+  const CipOctet *message_pointer = test_message;
+  const CipOctet **const message = &message_pointer;
+  CipSint returned_value = GetSintFromMessage(message);
+
+  LONGS_EQUAL(8, returned_value);
+  POINTERS_EQUAL(test_message + 1, *message);
+}
+
+TEST(EndianConversion, GetUsintFromMessage) {
+  const CipOctet test_message[] = {8};
+  const CipOctet *message_pointer = test_message;
+  const CipOctet **const message = &message_pointer;
+  CipUsint returned_value = GetUsintFromMessage(message);
+
+  LONGS_EQUAL(8, returned_value);
+  POINTERS_EQUAL(test_message + 1, *message);
+}
+
+TEST(EndianConversion, GetByteFromMessage) {
+  const CipOctet test_message[] = {8};
+  const CipOctet *message_pointer = test_message;
+  const CipOctet **const message = &message_pointer;
+  CipByte returned_value = GetByteFromMessage(message);
 
   LONGS_EQUAL(8, returned_value);
   POINTERS_EQUAL(test_message + 1, *message);
 }
 
 TEST(EndianConversion, GetIntFromMessage) {
-  const EipUint8 test_message[] = { 8, 60 };
-  const EipUint8 *message_pointer = test_message;
-  const EipUint8 **const message = &message_pointer;
-  EipUint16 returned_value = GetIntFromMessage(message);
+  const CipOctet test_message[] = {8, 60};
+  const CipOctet *message_pointer = test_message;
+  const CipOctet **const message = &message_pointer;
+  CipInt returned_value = GetIntFromMessage(message);
+
+  LONGS_EQUAL(15368, returned_value);
+  POINTERS_EQUAL(test_message + 2, *message);
+}
+
+TEST(EndianConversion, GetUintFromMessage) {
+  const CipOctet test_message[] = {8, 60};
+  const CipOctet *message_pointer = test_message;
+  const CipOctet **const message = &message_pointer;
+  CipUint returned_value = GetUintFromMessage(message);
+
+  LONGS_EQUAL(15368, returned_value);
+  POINTERS_EQUAL(test_message + 2, *message);
+}
+
+TEST(EndianConversion, GetWordFromMessage) {
+  const CipOctet test_message[] = {8, 60};
+  const CipOctet *message_pointer = test_message;
+  const CipOctet **const message = &message_pointer;
+  CipWord returned_value = GetWordFromMessage(message);
 
   LONGS_EQUAL(15368, returned_value);
   POINTERS_EQUAL(test_message + 2, *message);
 }
 
 TEST(EndianConversion, GetDintFromMessage) {
-  const EipUint8 test_message[] = { 28, 53, 41, 37 };
-  const EipUint8 *message_pointer = test_message;
-  const EipUint8 **const message = &message_pointer;
-  EipUint32 returned_value = GetDintFromMessage(message);
+  const CipOctet test_message[] = {28, 53, 41, 37};
+  const CipOctet *message_pointer = test_message;
+  const CipOctet **const message = &message_pointer;
+  CipDint returned_value = GetDintFromMessage(message);
+
+  LONGS_EQUAL(623457564, returned_value);
+  POINTERS_EQUAL(test_message + 4, *message);
+}
+
+TEST(EndianConversion, GetUdintFromMessage) {
+  const CipOctet test_message[] = {28, 53, 41, 37};
+  const CipOctet *message_pointer = test_message;
+  const CipOctet **const message = &message_pointer;
+  CipUdint returned_value = GetDintFromMessage(message);
+
+  LONGS_EQUAL(623457564, returned_value);
+  POINTERS_EQUAL(test_message + 4, *message);
+}
+
+TEST(EndianConversion, GetDwordFromMessage) {
+  const CipOctet test_message[] = {28, 53, 41, 37};
+  const CipOctet *message_pointer = test_message;
+  const CipOctet **const message = &message_pointer;
+  CipDword returned_value = GetDwordFromMessage(message);
 
   LONGS_EQUAL(623457564, returned_value);
   POINTERS_EQUAL(test_message + 4, *message);
 }
 
 TEST(EndianConversion, GetLintFromMessage) {
-  const EipUint8 test_message[] = { 81, 126, 166, 15, 70, 97, 208, 236 };
-  const EipUint8 *message_pointer = test_message;
-  const EipUint8 **const message = &message_pointer;
+  const CipOctet test_message[] = {81, 126, 166, 15, 70, 97, 208, 236};
+  const CipOctet *message_pointer = test_message;
+  const CipOctet **const message = &message_pointer;
   EipUint64 returned_value = GetLintFromMessage(message);
 
   LONGS_EQUAL(5872313548673241324, returned_value);