Pārlūkot izejas kodu

cosmetic improvements to client highlevel tests

Julius Pfrommer 7 gadi atpakaļ
vecāks
revīzija
4809910eec
1 mainītis faili ar 163 papildinājumiem un 192 dzēšanām
  1. 163 192
      tests/check_client_highlevel.c

+ 163 - 192
tests/check_client_highlevel.c

@@ -61,34 +61,23 @@ static void teardown(void) {
     nl.deleteMembers(&nl);
 }
 
-START_TEST(Misc_State)
-    {
-
-        UA_ClientState state = UA_Client_getState(client);
-
-        ck_assert_uint_eq(state, UA_CLIENTSTATE_CONNECTED);
-
-    }
-END_TEST
-
-START_TEST(Misc_NamespaceGetIndex)
-    {
-        UA_UInt16 idx;
-
-        UA_String ns = UA_STRING(CUSTOM_NS);
-        UA_StatusCode retval = UA_Client_NamespaceGetIndex(client, &ns, &idx);
-        ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
-
-        ck_assert_uint_eq(idx, 2);
-
-
-        // namespace uri is case sensitive
-        ns = UA_STRING(CUSTOM_NS_UPPER);
-        retval = UA_Client_NamespaceGetIndex(client, &ns, &idx);
-        ck_assert_uint_eq(retval, UA_STATUSCODE_BADNOTFOUND);
-    }
-END_TEST
+START_TEST(Misc_State) {
+    UA_ClientState state = UA_Client_getState(client);
+    ck_assert_uint_eq(state, UA_CLIENTSTATE_CONNECTED);
+} END_TEST
+
+START_TEST(Misc_NamespaceGetIndex) {
+    UA_String ns = UA_STRING(CUSTOM_NS);
+    UA_UInt16 idx;
+    UA_StatusCode retval = UA_Client_NamespaceGetIndex(client, &ns, &idx);
+    ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
+    ck_assert_uint_eq(idx, 2);
 
+    /* namespace uri is case sensitive */
+    ns = UA_STRING(CUSTOM_NS_UPPER);
+    retval = UA_Client_NamespaceGetIndex(client, &ns, &idx);
+    ck_assert_uint_eq(retval, UA_STATUSCODE_BADNOTFOUND);
+} END_TEST
 
 UA_NodeId newReferenceTypeId;
 UA_NodeId newObjectTypeId;
@@ -99,185 +88,168 @@ UA_NodeId newVariableId;
 UA_NodeId newMethodId;
 UA_NodeId newViewId;
 
-START_TEST(Node_Add)
-    {
-        UA_StatusCode retval;
-
+START_TEST(Node_Add) {
+    UA_StatusCode retval;
 
-        // Create custom reference type 'HasSubSubType' as child of HasSubtype
-        {
-            UA_ReferenceTypeAttributes attr;
-            UA_ReferenceTypeAttributes_init(&attr);
-            attr.description = UA_LOCALIZEDTEXT("en_US", "Some HasSubSubType");
-            attr.displayName = UA_LOCALIZEDTEXT("en_US", "HasSubSubType");
-            retval = UA_Client_addReferenceTypeNode(client, UA_NODEID_NULL, UA_NODEID_NUMERIC(0, UA_NS0ID_HASSUBTYPE),
-                                                    UA_NODEID_NUMERIC(0, UA_NS0ID_HASSUBTYPE),
-                                                    UA_QUALIFIEDNAME(1, "HasSubSubType"), attr, &newReferenceTypeId);
-            ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
-        }
+    // Create custom reference type 'HasSubSubType' as child of HasSubtype
+    {
+        UA_ReferenceTypeAttributes attr;
+        UA_ReferenceTypeAttributes_init(&attr);
+        attr.description = UA_LOCALIZEDTEXT("en_US", "Some HasSubSubType");
+        attr.displayName = UA_LOCALIZEDTEXT("en_US", "HasSubSubType");
+        retval = UA_Client_addReferenceTypeNode(client, UA_NODEID_NULL,
+                                                UA_NODEID_NUMERIC(0, UA_NS0ID_HASSUBTYPE),
+                                                UA_NODEID_NUMERIC(0, UA_NS0ID_HASSUBTYPE),
+                                                UA_QUALIFIEDNAME(1, "HasSubSubType"), attr,
+                                                &newReferenceTypeId);
+        ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
+    }
 
-        // Create TestObjectType SubType within BaseObjectType
-        {
+    // Create TestObjectType SubType within BaseObjectType
+    {
+        UA_ObjectTypeAttributes attr;
+        UA_ObjectTypeAttributes_init(&attr);
+        attr.description = UA_LOCALIZEDTEXT("en_US", "Some TestObjectType");
+        attr.displayName = UA_LOCALIZEDTEXT("en_US", "TestObjectType");
+
+        retval = UA_Client_addObjectTypeNode(client, UA_NODEID_NULL,
+                                             UA_NODEID_NUMERIC(0, UA_NS0ID_BASEOBJECTTYPE),
+                                             UA_NODEID_NUMERIC(0, UA_NS0ID_HASSUBTYPE),
+                                             UA_QUALIFIEDNAME(1, "TestObjectType"), attr, &newObjectTypeId);
+        ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
+    }
 
-            UA_ObjectTypeAttributes attr;
-            UA_ObjectTypeAttributes_init(&attr);
-            attr.description = UA_LOCALIZEDTEXT("en_US", "Some TestObjectType");
-            attr.displayName = UA_LOCALIZEDTEXT("en_US", "TestObjectType");
-
-            retval = UA_Client_addObjectTypeNode(client, UA_NODEID_NULL,
-                                                 UA_NODEID_NUMERIC(0, UA_NS0ID_BASEOBJECTTYPE),
-                                                 UA_NODEID_NUMERIC(0, UA_NS0ID_HASSUBTYPE),
-                                                 UA_QUALIFIEDNAME(1, "TestObjectType"), attr, &newObjectTypeId);
-            ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
-        }
 
+    // Create Int128 DataType within Integer Datatype
+    {
+        UA_DataTypeAttributes attr;
+        UA_DataTypeAttributes_init(&attr);
+        attr.description = UA_LOCALIZEDTEXT("en_US", "Some Int128");
+        attr.displayName = UA_LOCALIZEDTEXT("en_US", "Int128");
+        retval = UA_Client_addDataTypeNode(client, UA_NODEID_NULL,
+                                           UA_NODEID_NUMERIC(0, UA_NS0ID_INTEGER),
+                                           UA_NODEID_NUMERIC(0, UA_NS0ID_HASSUBTYPE),
+                                           UA_QUALIFIEDNAME(1, "Int128"), attr, &newDataTypeId);
+        ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
+    }
 
-        // Create Int128 DataType within Integer Datatype
-        {
 
-            UA_DataTypeAttributes attr;
-            UA_DataTypeAttributes_init(&attr);
-            attr.description = UA_LOCALIZEDTEXT("en_US", "Some Int128");
-            attr.displayName = UA_LOCALIZEDTEXT("en_US", "Int128");
 
-            retval = UA_Client_addDataTypeNode(client, UA_NODEID_NULL,
-                                               UA_NODEID_NUMERIC(0, UA_NS0ID_INTEGER),
+    // Create PointType VariableType within BaseDataVariableType
+    {
+        UA_VariableTypeAttributes attr;
+        UA_VariableTypeAttributes_init(&attr);
+        attr.dataType = UA_TYPES[UA_TYPES_INT32].typeId;
+        attr.valueRank = 1; /* array with one dimension */
+        UA_UInt32 arrayDims[1] = {2};
+        attr.arrayDimensions = arrayDims;
+        attr.arrayDimensionsSize = 1;
+        attr.displayName = UA_LOCALIZEDTEXT("en_US", "PointType");
+
+        /* a matching default value is required */
+        UA_Double zero[2] = {0.0, 0.0};
+        UA_Variant_setArray(&attr.value, zero, 2, &UA_TYPES[UA_TYPES_INT32]);
+        retval = UA_Client_addVariableTypeNode(client, UA_NODEID_NULL,
+                                               UA_NODEID_NUMERIC(0, UA_NS0ID_BASEVARIABLETYPE),
                                                UA_NODEID_NUMERIC(0, UA_NS0ID_HASSUBTYPE),
-                                               UA_QUALIFIEDNAME(1, "Int128"), attr, &newDataTypeId);
-            ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
-        }
-
-
-
-        // Create PointType VariableType within BaseDataVariableType
-        {
-
-            UA_VariableTypeAttributes attr;
-            UA_VariableTypeAttributes_init(&attr);
-
-            attr.dataType = UA_TYPES[UA_TYPES_INT32].typeId;
-            attr.valueRank = 1; /* array with one dimension */
-            UA_UInt32 arrayDims[1] = {2};
-            attr.arrayDimensions = arrayDims;
-            attr.arrayDimensionsSize = 1;
-            attr.displayName = UA_LOCALIZEDTEXT("en_US", "PointType");
-
-            /* a matching default value is required */
-            UA_Double zero[2] = {0.0, 0.0};
-            UA_Variant_setArray(&attr.value, zero, 2, &UA_TYPES[UA_TYPES_INT32]);
-
-            retval = UA_Client_addVariableTypeNode(client, UA_NODEID_NULL,
-                                                   UA_NODEID_NUMERIC(0, UA_NS0ID_BASEVARIABLETYPE),
-                                                   UA_NODEID_NUMERIC(0, UA_NS0ID_HASSUBTYPE),
-                                                   UA_QUALIFIEDNAME(1, "PointType"), attr, &newVariableTypeId);
-            ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
-        }
-
-        // create Coordinates Object within ObjectsFolder
-        {
-            UA_ObjectAttributes attr;
-            UA_ObjectAttributes_init(&attr);
-            attr.description = UA_LOCALIZEDTEXT("en_US", "Some Coordinates");
-            attr.displayName = UA_LOCALIZEDTEXT("en_US", "Coordinates");
-
-            retval = UA_Client_addObjectNode(client, UA_NODEID_NULL,
-                                             UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
-                                             UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES),
-                                             UA_QUALIFIEDNAME(1, "Coordinates"),
-                                             UA_NODEID_NUMERIC(0, UA_NS0ID_FOLDERTYPE), attr, &newObjectId);
-            ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
-        }
-
-
-        // create Variable 'Top' within Coordinates Object
-        {
-            UA_VariableAttributes attr;
-            UA_VariableAttributes_init(&attr);
-            attr.description = UA_LOCALIZEDTEXT("en_US", "Top Coordinate");
-            attr.displayName = UA_LOCALIZEDTEXT("en_US", "Top");
-
-            UA_Int32 values[2] = {10, 20};
-
-            UA_Variant_setArray(&attr.value, values, 2, &UA_TYPES[UA_TYPES_INT32]);
-            attr.dataType = UA_TYPES[UA_TYPES_INT32].typeId;
-            attr.valueRank = 1; /* array with one dimension */
-            UA_UInt32 arrayDims[1] = {2};
-            attr.arrayDimensions = arrayDims;
-            attr.arrayDimensionsSize = 1;
-
-            retval = UA_Client_addVariableNode(client, UA_NODEID_NULL,
-                                               newObjectId,
-                                               UA_NODEID_NUMERIC(0, UA_NS0ID_HASPROPERTY),
-                                               UA_QUALIFIEDNAME(1, "Top"),
-                                               newVariableTypeId, attr, &newVariableId);
-            ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
-        }
-
-        // create Method 'Dummy' within Coordinates Object. Fails with BADNODECLASSINVALID
-        {
-            // creating a method from a client does not yet make much sense since the corresponding
-            // action code can not be set from the client side
-            UA_MethodAttributes attr;
-            UA_MethodAttributes_init(&attr);
-            attr.description = UA_LOCALIZEDTEXT("en_US", "Dummy method");
-            attr.displayName = UA_LOCALIZEDTEXT("en_US", "Dummy");
-            attr.executable = true;
-            attr.userExecutable = true;
-            retval = UA_Client_addMethodNode(client, UA_NODEID_NULL,
-                                             newObjectId,
-                                             UA_NODEID_NUMERIC(0, UA_NS0ID_HASORDEREDCOMPONENT),
-                                             UA_QUALIFIEDNAME(1, "Dummy"),
-                                             attr, &newMethodId);
-            ck_assert_uint_eq(retval, UA_STATUSCODE_BADNODECLASSINVALID);
-        }
-
-        // create View 'AllTopCoordinates' whithin Views Folder
-        {
-            UA_ViewAttributes attr;
-            UA_ViewAttributes_init(&attr);
-            attr.description = UA_LOCALIZEDTEXT("en_US", "List of all top coordinates");
-            attr.displayName = UA_LOCALIZEDTEXT("en_US", "AllTopCoordinates");
-
-            retval = UA_Client_addViewNode(client, UA_NODEID_NULL,
-                                           UA_NODEID_NUMERIC(0, UA_NS0ID_VIEWSFOLDER),
-                                           UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES),
-                                           UA_QUALIFIEDNAME(1, "AllTopCoordinates"),
-                                           attr, &newViewId);
-            ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
-        }
-
+                                               UA_QUALIFIEDNAME(1, "PointType"), attr, &newVariableTypeId);
+        ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
+    }
 
-        // Add 'Top' to view
-        {
+    // create Coordinates Object within ObjectsFolder
+    {
+        UA_ObjectAttributes attr;
+        UA_ObjectAttributes_init(&attr);
+        attr.description = UA_LOCALIZEDTEXT("en_US", "Some Coordinates");
+        attr.displayName = UA_LOCALIZEDTEXT("en_US", "Coordinates");
+
+        retval = UA_Client_addObjectNode(client, UA_NODEID_NULL,
+                                         UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
+                                         UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES),
+                                         UA_QUALIFIEDNAME(1, "Coordinates"),
+                                         UA_NODEID_NUMERIC(0, UA_NS0ID_FOLDERTYPE), attr, &newObjectId);
+        ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
+    }
 
-            retval = UA_Client_addReference(client, newViewId, UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES),
-                                            UA_TRUE, UA_STRING_NULL,
-                                            UA_EXPANDEDNODEID_NUMERIC(1, newObjectId.identifier.numeric),
-                                            UA_NODECLASS_VARIABLE);
 
-            ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
+    // create Variable 'Top' within Coordinates Object
+    {
+        UA_VariableAttributes attr;
+        UA_VariableAttributes_init(&attr);
+        attr.description = UA_LOCALIZEDTEXT("en_US", "Top Coordinate");
+        attr.displayName = UA_LOCALIZEDTEXT("en_US", "Top");
+
+        UA_Int32 values[2] = {10, 20};
+
+        UA_Variant_setArray(&attr.value, values, 2, &UA_TYPES[UA_TYPES_INT32]);
+        attr.dataType = UA_TYPES[UA_TYPES_INT32].typeId;
+        attr.valueRank = 1; /* array with one dimension */
+        UA_UInt32 arrayDims[1] = {2};
+        attr.arrayDimensions = arrayDims;
+        attr.arrayDimensionsSize = 1;
+
+        retval = UA_Client_addVariableNode(client, UA_NODEID_NULL,
+                                           newObjectId,
+                                           UA_NODEID_NUMERIC(0, UA_NS0ID_HASPROPERTY),
+                                           UA_QUALIFIEDNAME(1, "Top"),
+                                           newVariableTypeId, attr, &newVariableId);
+        ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
+    }
 
-        }
+    // create Method 'Dummy' within Coordinates Object. Fails with BADNODECLASSINVALID
+    {
+        // creating a method from a client does not yet make much sense since the corresponding
+        // action code can not be set from the client side
+        UA_MethodAttributes attr;
+        UA_MethodAttributes_init(&attr);
+        attr.description = UA_LOCALIZEDTEXT("en_US", "Dummy method");
+        attr.displayName = UA_LOCALIZEDTEXT("en_US", "Dummy");
+        attr.executable = true;
+        attr.userExecutable = true;
+        retval = UA_Client_addMethodNode(client, UA_NODEID_NULL,
+                                         newObjectId,
+                                         UA_NODEID_NUMERIC(0, UA_NS0ID_HASORDEREDCOMPONENT),
+                                         UA_QUALIFIEDNAME(1, "Dummy"),
+                                         attr, &newMethodId);
+        ck_assert_uint_eq(retval, UA_STATUSCODE_BADNODECLASSINVALID);
+    }
 
-        // Delete 'Top' from view
-        {
+    // create View 'AllTopCoordinates' whithin Views Folder
+    {
+        UA_ViewAttributes attr;
+        UA_ViewAttributes_init(&attr);
+        attr.description = UA_LOCALIZEDTEXT("en_US", "List of all top coordinates");
+        attr.displayName = UA_LOCALIZEDTEXT("en_US", "AllTopCoordinates");
+
+        retval = UA_Client_addViewNode(client, UA_NODEID_NULL,
+                                       UA_NODEID_NUMERIC(0, UA_NS0ID_VIEWSFOLDER),
+                                       UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES),
+                                       UA_QUALIFIEDNAME(1, "AllTopCoordinates"),
+                                       attr, &newViewId);
+        ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
+    }
 
-            retval = UA_Client_deleteReference(client, newViewId, UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES),
-                                               UA_TRUE, UA_EXPANDEDNODEID_NUMERIC(1, newObjectId.identifier.numeric), UA_TRUE);
 
-            ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
+    // Add 'Top' to view
+    retval = UA_Client_addReference(client, newViewId, UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES),
+                                    UA_TRUE, UA_STRING_NULL,
+                                    UA_EXPANDEDNODEID_NUMERIC(1, newObjectId.identifier.numeric),
+                                    UA_NODECLASS_VARIABLE);
+    ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
 
-        }
+    // Delete 'Top' from view
+    retval = UA_Client_deleteReference(client, newViewId,
+                                       UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES), UA_TRUE,
+                                       UA_EXPANDEDNODEID_NUMERIC(1, newObjectId.identifier.numeric), UA_TRUE);
 
-        // Delete 'AllTopCoordinates' view
+    ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
 
-        {
-            retval = UA_Client_deleteNode(client, newViewId, UA_TRUE);
 
-            ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
-        }
+    // Delete 'AllTopCoordinates' view
+    retval = UA_Client_deleteNode(client, newViewId, UA_TRUE);
+    ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
 
-    }
+}
 END_TEST
 
 unsigned int iteratedNodeCount = 0;
@@ -285,10 +257,8 @@ UA_NodeId iteratedNodes[2];
 
 static UA_StatusCode
 nodeIter(UA_NodeId childId, UA_Boolean isInverse, UA_NodeId referenceTypeId, void *handle) {
-    if (isInverse ||
-            (referenceTypeId.identifierType == UA_NODEIDTYPE_NUMERIC &&
-                    referenceTypeId.identifier.numeric == UA_NS0ID_HASTYPEDEFINITION)
-            )
+    if (isInverse || (referenceTypeId.identifierType == UA_NODEIDTYPE_NUMERIC &&
+                      referenceTypeId.identifier.numeric == UA_NS0ID_HASTYPEDEFINITION))
         return UA_STATUSCODE_GOOD;
 
     if (iteratedNodeCount >= 2)
@@ -413,14 +383,15 @@ START_TEST(Node_ReadWrite)
         ck_assert_int_eq(value, 5679);
         UA_Variant_delete(val);
 
+        /* Write Array Dimensions */
         UA_UInt32 arrayDimsNew[] = {3};
         retval = UA_Client_writeArrayDimensionsAttribute(client, nodeArrayId, arrayDimsNew , 1);
         ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
 
-
         UA_UInt32 *arrayDimsRead;
         size_t arrayDimsReadSize;
-        retval = UA_Client_readArrayDimensionsAttribute(client, nodeArrayId, &arrayDimsRead , &arrayDimsReadSize);
+        retval = UA_Client_readArrayDimensionsAttribute(client, nodeArrayId,
+                                                        &arrayDimsRead , &arrayDimsReadSize);
         ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
         ck_assert_int_eq(arrayDimsReadSize, 1);
         ck_assert_int_eq(arrayDimsRead[0], 3);