Przeglądaj źródła

Adds tests for connection object

Signed-off-by: Martin Melik Merkumians <melik-merkumians@acin.tuwien.ac.at>
Martin Melik Merkumians 8 lat temu
rodzic
commit
00cd61dd5a

+ 1 - 1
source/src/cip/CMakeLists.txt

@@ -12,6 +12,6 @@ opener_common_includes()
 #######################################
 opener_platform_support("INCLUDES")
 
-set( CIP_SRC appcontype.c cipassembly.c cipclass3connection.c cipcommon.c cipconnectionmanager.c ciperror.h cipethernetlink.c cipidentity.c cipioconnection.c cipmessagerouter.c ciptcpipinterface.c ciptypes.h cipepath.h cipepath.c cipelectronickey.h cipelectronickey.c cipqos.c )
+set( CIP_SRC appcontype.c cipassembly.c cipclass3connection.c cipcommon.c cipconnectionobject.c cipconnectionmanager.c ciperror.h cipethernetlink.c cipidentity.c cipioconnection.c cipmessagerouter.c ciptcpipinterface.c ciptypes.h cipepath.h cipepath.c cipelectronickey.h cipelectronickey.c cipqos.c )
 
 add_library( CIP ${CIP_SRC} )

+ 4 - 4
source/src/cip/cipconnectionobject.c

@@ -6,7 +6,7 @@
 
 #include "cipconnectionobject.h"
 
-#define CIP_CONNECTION_OBJECT_STATE_NON_EXISTANT 0U
+#define CIP_CONNECTION_OBJECT_STATE_NON_EXISTENT 0U
 #define CIP_CONNECTION_OBJECT_STATE_CONFIGURING 1U
 #define CIP_CONNECTION_OBJECT_STATE_WAITING_FOR_CONNECTION_ID 2U
 #define CIP_CONNECTION_OBJECT_STATE_ESTABLISHED 3U
@@ -17,8 +17,8 @@
 ConnectionObjectState GetConnectionObjectState(
   const CipConnectionObject *const connection_object) {
   switch(connection_object->state) {
-    case CIP_CONNECTION_OBJECT_STATE_NON_EXISTANT: return
-        kConnectionObjectStateNonExistant; break;
+    case CIP_CONNECTION_OBJECT_STATE_NON_EXISTENT: return
+        kConnectionObjectStateNonExistent; break;
     case CIP_CONNECTION_OBJECT_STATE_CONFIGURING: return
         kConnectionObjectStateConfiguring; break;
     case CIP_CONNECTION_OBJECT_STATE_WAITING_FOR_CONNECTION_ID: return
@@ -28,7 +28,7 @@ ConnectionObjectState GetConnectionObjectState(
     case CIP_CONNECTION_OBJECT_STATE_TIMEOUT: return
         kConnectionObjectStateTimedOut; break;
     case CIP_CONNECTION_OBJECT_STATE_DEFERRED_DELETE: return
-        kConnectionStateDeferredDelete; break;
+        kConnectionObjectStateDeferredDelete; break;
     case CIP_CONNECTION_OBJECT_STATE_CLOSING: return
         kConnectionObjectStateClosing; break;
     default: return kConnectionObjectStateInvalid;

+ 5 - 1
source/src/cip/cipconnectionobject.h

@@ -8,12 +8,13 @@
 #define SRC_CIP_CIPCONNECTIONOBJECT_H_
 
 #include "typedefs.h"
+#include "ciptypes.h"
 
 #define CIP_CONNECTION_OBJECT_CODE 0x05
 
 typedef enum {
   kConnectionObjectStateInvalid = -1,
-  kConnectionObjectStateNonExistant = 0,
+  kConnectionObjectStateNonExistent = 0,
   kConnectionObjectStateConfiguring,
   kConnectionObjectStateWaitingForConnectionID,
   kConnectionObjectStateEstablished,
@@ -23,6 +24,7 @@ typedef enum {
 } ConnectionObjectState;
 
 typedef enum {
+  kConnectionObjectInstanceTypeInvalid = -1,
   kConnectionObjectInstanceTypeExplicitMessaging = 0,
   kConnectionObjectInstanceTypeIO,
   kConnectionObjectInstanceTypeCipBridged
@@ -34,12 +36,14 @@ typedef enum {
 } ConnectionObjectTransportClassTriggerDirection;
 
 typedef enum {
+  kConnectionObjectTransportClassTriggerProductionTriggerInvalid = -1,
   kConnectionObjectTransportClassTriggerProductionTriggerCyclic = 0,
   kConnectionObjectTransportClassTriggerProductionTriggerChangeOfState,
   kConnectionObjectTransportClassTriggerProductionTriggerApplicationObject
 } ConnectionObjectTransportClassTriggerProductionTrigger;
 
 typedef enum {
+  kConnectionObjectTransportClassTriggerTransportClassInvalid = -1,
   kConnectionObjectTransportClassTriggerTransportClass0 = 0,
   kConnectionObjectTransportClassTriggerTransportClass1,
   kConnectionObjectTransportClassTriggerTransportClass2,

+ 1 - 0
source/tests/OpENerTests.h

@@ -6,5 +6,6 @@ IMPORT_TEST_GROUP(EndianConversion);
 IMPORT_TEST_GROUP(CipEpath);
 IMPORT_TEST_GROUP(CipElectronicKey);
 IMPORT_TEST_GROUP(CipConnectionManager);
+IMPORT_TEST_GROUP(CipConnectionObject);
 IMPORT_TEST_GROUP(SocketTimer);
 IMPORT_TEST_GROUP(DoublyLinkedList);

+ 1 - 1
source/tests/cip/CMakeLists.txt

@@ -8,7 +8,7 @@ opener_common_includes()
 #######################################
 opener_platform_support("INCLUDES")
 
-set( CipTestSrc cipepathtest.cpp cipelectronickeytest.cpp cipconnectionmanagertest.cpp )
+set( CipTestSrc cipepathtest.cpp cipelectronickeytest.cpp cipconnectionmanagertest.cpp cipconnectionobjecttest.cpp )
 
 include_directories( ${SRC_DIR}/cip )
 

+ 64 - 0
source/tests/cip/cipconnectionobjecttest.cpp

@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2017, Rockwell Automation, Inc.
+ * All rights reserved.
+ *
+ ******************************************************************************/
+
+#include <CppUTest/TestHarness.h>
+#include <stdint.h>
+#include <string.h>
+
+extern "C" {
+
+#include "cipconnectionobject.h"
+
+}
+
+TEST_GROUP(CipConnectionObject) {
+
+};
+
+TEST(CipConnectionObject, StateNonExistent) {
+	CipConnectionObject connection_object = { 0 };
+	connection_object.state = 0;
+	ConnectionObjectState state = GetConnectionObjectState(&connection_object);
+	CHECK_EQUAL(kConnectionObjectStateNonExistent, state);
+}
+
+TEST(CipConnectionObject, StateConfiguring) {
+	CipConnectionObject connection_object = { 0 };
+	connection_object.state = 1;
+	ConnectionObjectState state = GetConnectionObjectState(&connection_object);
+	CHECK_EQUAL(kConnectionObjectStateConfiguring, state);
+}
+TEST(CipConnectionObject, StateWaitingForConnectionID) {
+	CipConnectionObject connection_object = { 0 };
+	connection_object.state = 2;
+	ConnectionObjectState state = GetConnectionObjectState(&connection_object);
+	CHECK_EQUAL(kConnectionObjectStateWaitingForConnectionID, state);
+}
+TEST(CipConnectionObject, StateEstablished) {
+	CipConnectionObject connection_object = { 0 };
+	connection_object.state = 3;
+	ConnectionObjectState state = GetConnectionObjectState(&connection_object);
+	CHECK_EQUAL(kConnectionObjectStateEstablished, state);
+}
+TEST(CipConnectionObject, StateTimedOut) {
+	CipConnectionObject connection_object = { 0 };
+	connection_object.state = 4;
+	ConnectionObjectState state = GetConnectionObjectState(&connection_object);
+	CHECK_EQUAL(kConnectionObjectStateTimedOut, state);
+}
+TEST(CipConnectionObject, StateDeferredDelete) {
+	CipConnectionObject connection_object = { 0 };
+	connection_object.state = 5;
+	ConnectionObjectState state = GetConnectionObjectState(&connection_object);
+	CHECK_EQUAL(kConnectionObjectStateDeferredDelete, state);
+}
+TEST(CipConnectionObject, StateClosing) {
+	CipConnectionObject connection_object = { 0 };
+	connection_object.state = 6;
+	ConnectionObjectState state = GetConnectionObjectState(&connection_object);
+	CHECK_EQUAL(kConnectionObjectStateClosing, state);
+}
+