|
@@ -15,303 +15,6 @@ enum UA_VARIANT_ENCODINGMASKTYPE_enum {
|
|
|
UA_VARIANT_ENCODINGMASKTYPE_ARRAY = (0x01 << 7)
|
|
|
};
|
|
|
|
|
|
-START_TEST(UA_ExtensionObject_calcSizeShallWorkOnExample) {
|
|
|
-
|
|
|
- UA_Byte data[3] = { 1, 2, 3 };
|
|
|
- UA_ExtensionObject extensionObject;
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- UA_ExtensionObject_init(&extensionObject);
|
|
|
- extensionObject.typeId.identifierType = UA_NODEIDTYPE_NUMERIC;
|
|
|
- extensionObject.typeId.identifier.numeric = 0;
|
|
|
- extensionObject.encoding = UA_EXTENSIONOBJECT_ENCODINGMASK_NOBODYISENCODED;
|
|
|
-
|
|
|
- ck_assert_int_eq(UA_calcSizeBinary(&extensionObject, &UA_TYPES[UA_TYPES_EXTENSIONOBJECT]), 1 + 1 + 1);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- extensionObject.encoding = UA_EXTENSIONOBJECT_ENCODINGMASK_BODYISBYTESTRING;
|
|
|
- extensionObject.body.data = data;
|
|
|
- extensionObject.body.length = 3;
|
|
|
-
|
|
|
- ck_assert_int_eq(UA_calcSizeBinary(&extensionObject, &UA_TYPES[UA_TYPES_EXTENSIONOBJECT]), 3 + 4 + 3);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_DataValue_calcSizeShallWorkOnExample) {
|
|
|
-
|
|
|
- UA_DataValue dataValue;
|
|
|
- UA_DataValue_init(&dataValue);
|
|
|
- dataValue.status = 12;
|
|
|
- dataValue.hasStatus = UA_TRUE;
|
|
|
- dataValue.sourceTimestamp = 80;
|
|
|
- dataValue.hasSourceTimestamp = UA_TRUE;
|
|
|
- dataValue.sourcePicoseconds = 214;
|
|
|
- dataValue.hasSourcePicoseconds = UA_TRUE;
|
|
|
- int size = 0;
|
|
|
-
|
|
|
- size = UA_calcSizeBinary(&dataValue, &UA_TYPES[UA_TYPES_DATAVALUE]);
|
|
|
-
|
|
|
-
|
|
|
- ck_assert_int_eq(size, 15);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_DiagnosticInfo_calcSizeShallWorkOnExample) {
|
|
|
-
|
|
|
- UA_DiagnosticInfo diagnosticInfo;
|
|
|
- UA_DiagnosticInfo_init(&diagnosticInfo);
|
|
|
- diagnosticInfo.symbolicId = 30;
|
|
|
- diagnosticInfo.hasSymbolicId = UA_TRUE;
|
|
|
- diagnosticInfo.namespaceUri = 25;
|
|
|
- diagnosticInfo.hasNamespaceUri = UA_TRUE;
|
|
|
- diagnosticInfo.localizedText = 22;
|
|
|
- diagnosticInfo.hasLocalizedText = UA_TRUE;
|
|
|
- UA_Byte additionalInfoData = 'd';
|
|
|
- diagnosticInfo.additionalInfo.data = &additionalInfoData;
|
|
|
- diagnosticInfo.additionalInfo.length = 1;
|
|
|
- diagnosticInfo.hasAdditionalInfo = UA_TRUE;
|
|
|
-
|
|
|
-
|
|
|
- ck_assert_int_eq(UA_calcSizeBinary(&diagnosticInfo, &UA_TYPES[UA_TYPES_DIAGNOSTICINFO]), 18);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_String_calcSizeWithNegativLengthShallReturnEncodingSize) {
|
|
|
-
|
|
|
- UA_String arg = { -1, NULL };
|
|
|
-
|
|
|
- UA_UInt32 encodingSize = UA_calcSizeBinary(&arg, &UA_TYPES[UA_TYPES_STRING]);
|
|
|
-
|
|
|
- ck_assert_int_eq(encodingSize, 4);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_String_calcSizeWithNegativLengthAndValidPointerShallReturnEncodingSize) {
|
|
|
-
|
|
|
- UA_String arg = { -1, (UA_Byte *)"OPC" };
|
|
|
-
|
|
|
- UA_UInt32 encodingSize = UA_calcSizeBinary(&arg, &UA_TYPES[UA_TYPES_STRING]);
|
|
|
-
|
|
|
- ck_assert_int_eq(encodingSize, 4);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_String_calcSizeWithZeroLengthShallReturnEncodingSize) {
|
|
|
-
|
|
|
- UA_String arg = { 0, NULL };
|
|
|
-
|
|
|
- UA_UInt32 encodingSize = UA_calcSizeBinary(&arg, &UA_TYPES[UA_TYPES_STRING]);
|
|
|
-
|
|
|
- ck_assert_int_eq(encodingSize, 4);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_String_calcSizeWithZeroLengthAndValidPointerShallReturnEncodingSize) {
|
|
|
-
|
|
|
- UA_String arg = { 0, (UA_Byte *)"OPC" };
|
|
|
-
|
|
|
- UA_UInt32 encodingSize = UA_calcSizeBinary(&arg, &UA_TYPES[UA_TYPES_STRING]);
|
|
|
-
|
|
|
- ck_assert_int_eq(encodingSize, 4);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_String_calcSizeShallReturnEncodingSize) {
|
|
|
-
|
|
|
- UA_String arg = { 3, (UA_Byte *)"OPC" };
|
|
|
-
|
|
|
- UA_UInt32 encodingSize = UA_calcSizeBinary(&arg, &UA_TYPES[UA_TYPES_STRING]);
|
|
|
-
|
|
|
- ck_assert_int_eq(encodingSize, 4+3);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_NodeId_calcSizeEncodingTwoByteShallReturnEncodingSize) {
|
|
|
-
|
|
|
- UA_NodeId arg;
|
|
|
- arg.identifierType = UA_NODEIDTYPE_NUMERIC;
|
|
|
- arg.namespaceIndex = 0;
|
|
|
- arg.identifier.numeric = 1;
|
|
|
-
|
|
|
- UA_UInt32 encodingSize = UA_calcSizeBinary(&arg, &UA_TYPES[UA_TYPES_NODEID]);
|
|
|
-
|
|
|
- ck_assert_int_eq(encodingSize, 2);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_NodeId_calcSizeEncodingFourByteShallReturnEncodingSize) {
|
|
|
-
|
|
|
- UA_NodeId arg;
|
|
|
- arg.identifierType = UA_NODEIDTYPE_NUMERIC;
|
|
|
- arg.namespaceIndex = 1;
|
|
|
- arg.identifier.numeric = 1;
|
|
|
-
|
|
|
- UA_UInt32 encodingSize = UA_calcSizeBinary(&arg, &UA_TYPES[UA_TYPES_NODEID]);
|
|
|
-
|
|
|
- ck_assert_int_eq(encodingSize, 4);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_NodeId_calcSizeEncodingStringShallReturnEncodingSize) {
|
|
|
-
|
|
|
- UA_NodeId arg;
|
|
|
- arg.identifierType = UA_NODEIDTYPE_STRING;
|
|
|
- arg.identifier.string.length = 3;
|
|
|
- arg.identifier.string.data = (UA_Byte *)"PLT";
|
|
|
-
|
|
|
- UA_UInt32 encodingSize = UA_calcSizeBinary(&arg, &UA_TYPES[UA_TYPES_NODEID]);
|
|
|
-
|
|
|
- ck_assert_int_eq(encodingSize, 1+2+4+3);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_NodeId_calcSizeEncodingStringNegativLengthShallReturnEncodingSize) {
|
|
|
-
|
|
|
- UA_NodeId arg;
|
|
|
- arg.identifierType = UA_NODEIDTYPE_STRING;
|
|
|
- arg.identifier.string.length = -1;
|
|
|
-
|
|
|
- UA_UInt32 encodingSize = UA_calcSizeBinary(&arg, &UA_TYPES[UA_TYPES_NODEID]);
|
|
|
-
|
|
|
- ck_assert_int_eq(encodingSize, 1+2+4+0);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_NodeId_calcSizeEncodingStringZeroLengthShallReturnEncodingSize) {
|
|
|
-
|
|
|
- UA_NodeId arg;
|
|
|
- arg.identifierType = UA_NODEIDTYPE_STRING;
|
|
|
- arg.identifier.string.length = 0;
|
|
|
-
|
|
|
- UA_UInt32 encodingSize = UA_calcSizeBinary(&arg, &UA_TYPES[UA_TYPES_NODEID]);
|
|
|
-
|
|
|
- ck_assert_int_eq(encodingSize, 1+2+4+0);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_ExpandedNodeId_calcSizeEncodingStringAndServerIndexShallReturnEncodingSize) {
|
|
|
-
|
|
|
- UA_ExpandedNodeId arg;
|
|
|
- UA_ExpandedNodeId_init(&arg);
|
|
|
- arg.nodeId.identifierType = UA_NODEIDTYPE_STRING;
|
|
|
- arg.serverIndex = 1;
|
|
|
- arg.nodeId.identifier.string.length = 3;
|
|
|
-
|
|
|
- UA_UInt32 encodingSize = UA_calcSizeBinary(&arg, &UA_TYPES[UA_TYPES_EXPANDEDNODEID]);
|
|
|
-
|
|
|
- ck_assert_int_eq(encodingSize, 1+2+4+3+4);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_ExpandedNodeId_calcSizeEncodingStringAndNamespaceUriShallReturnEncodingSize) {
|
|
|
-
|
|
|
- UA_ExpandedNodeId arg;
|
|
|
- UA_ExpandedNodeId_init(&arg);
|
|
|
- arg.nodeId.identifierType = UA_NODEIDTYPE_STRING;
|
|
|
- arg.nodeId.identifier.string.length = 3;
|
|
|
- arg.namespaceUri.length = 7;
|
|
|
-
|
|
|
- UA_UInt32 encodingSize = UA_calcSizeBinary(&arg, &UA_TYPES[UA_TYPES_EXPANDEDNODEID]);
|
|
|
-
|
|
|
- ck_assert_int_eq(encodingSize, 1+2+4+3+4+7);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_Guid_calcSizeShallReturnEncodingSize) {
|
|
|
-
|
|
|
- UA_Guid arg;
|
|
|
-
|
|
|
- UA_UInt32 encodingSize = UA_calcSizeBinary(&arg, &UA_TYPES[UA_TYPES_GUID]);
|
|
|
-
|
|
|
- ck_assert_int_eq(encodingSize, 16);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_LocalizedText_calcSizeTextOnlyShallReturnEncodingSize) {
|
|
|
-
|
|
|
- UA_LocalizedText arg;
|
|
|
- UA_LocalizedText_init(&arg);
|
|
|
- arg.text = (UA_String) {8, (UA_Byte *)"12345678"};
|
|
|
-
|
|
|
- UA_UInt32 encodingSize = UA_calcSizeBinary(&arg, &UA_TYPES[UA_TYPES_LOCALIZEDTEXT]);
|
|
|
-
|
|
|
- ck_assert_int_eq(encodingSize, 1+4+8);
|
|
|
-
|
|
|
- UA_LocalizedText_init(&arg);
|
|
|
- UA_LocalizedText_deleteMembers(&arg);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_LocalizedText_calcSizeLocaleOnlyShallReturnEncodingSize) {
|
|
|
-
|
|
|
- UA_LocalizedText arg;
|
|
|
- UA_LocalizedText_init(&arg);
|
|
|
- arg.locale = (UA_String) {8, (UA_Byte *)"12345678"};
|
|
|
-
|
|
|
- UA_UInt32 encodingSize = UA_calcSizeBinary(&arg, &UA_TYPES[UA_TYPES_LOCALIZEDTEXT]);
|
|
|
-
|
|
|
- ck_assert_int_eq(encodingSize, 1+4+8);
|
|
|
- UA_LocalizedText_init(&arg);
|
|
|
- UA_LocalizedText_deleteMembers(&arg);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_LocalizedText_calcSizeTextAndLocaleShallReturnEncodingSize) {
|
|
|
-
|
|
|
- UA_LocalizedText arg;
|
|
|
- UA_LocalizedText_init(&arg);
|
|
|
- arg.locale = (UA_String) {8, (UA_Byte *)"12345678"};
|
|
|
- arg.text = (UA_String) {8, (UA_Byte *)"12345678"};
|
|
|
-
|
|
|
- UA_UInt32 encodingSize = UA_calcSizeBinary(&arg, &UA_TYPES[UA_TYPES_LOCALIZEDTEXT]);
|
|
|
-
|
|
|
- ck_assert_int_eq(encodingSize, 1+4+8+4+8);
|
|
|
- UA_LocalizedText_init(&arg);
|
|
|
- UA_LocalizedText_deleteMembers(&arg);
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_Variant_calcSizeFixedSizeArrayShallReturnEncodingSize) {
|
|
|
-
|
|
|
- UA_Variant arg;
|
|
|
- UA_Variant_init(&arg);
|
|
|
- arg.type = &UA_TYPES[UA_TYPES_INT32];
|
|
|
-#define ARRAY_LEN 8
|
|
|
- arg.arrayLength = ARRAY_LEN;
|
|
|
- UA_Int32 *data[ARRAY_LEN];
|
|
|
- arg.data = (void *)data;
|
|
|
-
|
|
|
-
|
|
|
- UA_UInt32 encodingSize = UA_calcSizeBinary(&arg, &UA_TYPES[UA_TYPES_VARIANT]);
|
|
|
-
|
|
|
-
|
|
|
- ck_assert_int_eq(encodingSize, 1+4+ARRAY_LEN*4);
|
|
|
-#undef ARRAY_LEN
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
-START_TEST(UA_Variant_calcSizeVariableSizeArrayShallReturnEncodingSize) {
|
|
|
-
|
|
|
- UA_Variant arg;
|
|
|
- UA_Variant_init(&arg);
|
|
|
- arg.type = &UA_TYPES[UA_TYPES_STRING];
|
|
|
-#define ARRAY_LEN 3
|
|
|
- arg.arrayLength = ARRAY_LEN;
|
|
|
- UA_String strings[3];
|
|
|
- strings[0] = (UA_String) {-1, NULL };
|
|
|
- strings[1] = (UA_String) {3, (UA_Byte *)"PLT" };
|
|
|
- strings[2] = (UA_String) {47, NULL };
|
|
|
- arg.data = (void *)strings;
|
|
|
-
|
|
|
- UA_UInt32 encodingSize = UA_calcSizeBinary(&arg, &UA_TYPES[UA_TYPES_VARIANT]);
|
|
|
-
|
|
|
- ck_assert_int_eq(encodingSize, 1+4+(4+0)+(4+3)+(4+47));
|
|
|
-#undef ARRAY_LEN
|
|
|
-}
|
|
|
-END_TEST
|
|
|
-
|
|
|
START_TEST(UA_Byte_decodeShallCopyAndAdvancePosition) {
|
|
|
|
|
|
UA_Byte dst;
|
|
@@ -729,56 +432,57 @@ START_TEST(UA_Variant_decodeWithArrayFlagSetShallSetVTAndAllocateMemoryForArray)
|
|
|
END_TEST
|
|
|
|
|
|
START_TEST(UA_Variant_decodeSingleExtensionObjectShallSetVTAndAllocateMemory){
|
|
|
-
|
|
|
- size_t pos = 0;
|
|
|
- UA_Variant dst;
|
|
|
- UA_NodeId tmpNodeId;
|
|
|
- UA_ByteString srcByteString;
|
|
|
-
|
|
|
- UA_NodeId_init(&tmpNodeId);
|
|
|
- tmpNodeId.identifier.numeric = 22;
|
|
|
- tmpNodeId.namespaceIndex = 2;
|
|
|
- tmpNodeId.identifierType = UA_NODEIDTYPE_NUMERIC;
|
|
|
-
|
|
|
- UA_ExtensionObject tmpExtensionObject;
|
|
|
- UA_ExtensionObject_init(&tmpExtensionObject);
|
|
|
- UA_ByteString_newMembers(&tmpExtensionObject.body,3);
|
|
|
- tmpExtensionObject.body.data[0]= 10;
|
|
|
- tmpExtensionObject.body.data[1]= 20;
|
|
|
- tmpExtensionObject.body.data[2]= 30;
|
|
|
- tmpExtensionObject.encoding = UA_EXTENSIONOBJECT_ENCODINGMASK_BODYISBYTESTRING;
|
|
|
- tmpExtensionObject.typeId = tmpNodeId;
|
|
|
-
|
|
|
- UA_Variant tmpVariant;
|
|
|
- UA_Variant_init(&tmpVariant);
|
|
|
- tmpVariant.arrayDimensions = NULL;
|
|
|
- tmpVariant.arrayDimensionsSize = -1;
|
|
|
- tmpVariant.arrayLength = -1;
|
|
|
- tmpVariant.storageType = UA_VARIANT_DATA_NODELETE;
|
|
|
- tmpVariant.type = &UA_TYPES[UA_TYPES_EXTENSIONOBJECT];
|
|
|
- tmpVariant.data = &tmpExtensionObject;
|
|
|
-
|
|
|
- UA_ByteString_newMembers(&srcByteString,200);
|
|
|
- pos = 0;
|
|
|
- UA_Variant_encodeBinary(&tmpVariant,&srcByteString,&pos);
|
|
|
-
|
|
|
-
|
|
|
- pos = 0;
|
|
|
- UA_StatusCode retval = UA_Variant_decodeBinary(&srcByteString, &pos, &dst);
|
|
|
-
|
|
|
- ck_assert_int_eq(retval, UA_STATUSCODE_GOOD);
|
|
|
- ck_assert_int_eq((uintptr_t)dst.type, (uintptr_t)&UA_TYPES[UA_TYPES_EXTENSIONOBJECT]);
|
|
|
- ck_assert_int_eq(dst.arrayLength, -1);
|
|
|
- ck_assert_int_eq(((UA_ExtensionObject *)dst.data)->body.data[0], 10);
|
|
|
- ck_assert_int_eq(((UA_ExtensionObject *)dst.data)->body.data[1], 20);
|
|
|
- ck_assert_int_eq(((UA_ExtensionObject *)dst.data)->body.data[2], 30);
|
|
|
- ck_assert_int_eq(((UA_ExtensionObject *)dst.data)->body.length, 3);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- UA_Variant_deleteMembers(&dst);
|
|
|
- UA_ByteString_deleteMembers(&srcByteString);
|
|
|
- UA_ExtensionObject_deleteMembers(&tmpExtensionObject);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
}
|
|
|
END_TEST
|
|
@@ -1269,7 +973,7 @@ START_TEST(UA_DateTime_toStringShallWorkOnExample) {
|
|
|
UA_String dst;
|
|
|
|
|
|
|
|
|
- UA_DateTime_toString(src, &dst);
|
|
|
+ dst = UA_DateTime_toString(src);
|
|
|
|
|
|
ck_assert_int_eq(dst.data[0], '0');
|
|
|
ck_assert_int_eq(dst.data[1], '4');
|
|
@@ -1282,32 +986,33 @@ END_TEST
|
|
|
|
|
|
START_TEST(UA_ExtensionObject_copyShallWorkOnExample) {
|
|
|
|
|
|
- UA_Byte data[3] = { 1, 2, 3 };
|
|
|
+
|
|
|
|
|
|
- UA_ExtensionObject value, valueCopied;
|
|
|
- UA_ExtensionObject_init(&value);
|
|
|
- UA_ExtensionObject_init(&valueCopied);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
- value.typeId = UA_TYPES[UA_TYPES_BYTE].typeId;
|
|
|
- value.encoding = UA_EXTENSIONOBJECT_ENCODINGMASK_NOBODYISENCODED;
|
|
|
- value.encoding = UA_EXTENSIONOBJECT_ENCODINGMASK_BODYISBYTESTRING;
|
|
|
- value.body.data = data;
|
|
|
- value.body.length = 3;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
-
|
|
|
- UA_ExtensionObject_copy(&value, &valueCopied);
|
|
|
+
|
|
|
+
|
|
|
|
|
|
- for(UA_Int32 i = 0;i < 3;i++)
|
|
|
- ck_assert_int_eq(valueCopied.body.data[i], value.body.data[i]);
|
|
|
+
|
|
|
+
|
|
|
|
|
|
- ck_assert_int_eq(valueCopied.encoding, value.encoding);
|
|
|
- ck_assert_int_eq(valueCopied.typeId.identifierType, value.typeId.identifierType);
|
|
|
- ck_assert_int_eq(valueCopied.typeId.identifier.numeric, value.typeId.identifier.numeric);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
-
|
|
|
- value.body.data = NULL;
|
|
|
- UA_ExtensionObject_deleteMembers(&value);
|
|
|
- UA_ExtensionObject_deleteMembers(&valueCopied);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
END_TEST
|
|
|
|
|
@@ -1326,7 +1031,9 @@ START_TEST(UA_Array_copyByteArrayShallWorkOnExample) {
|
|
|
testString.length = 5;
|
|
|
|
|
|
|
|
|
- UA_Array_copy((const void *)testString.data, (void **)&dstArray, &UA_TYPES[UA_TYPES_BYTE], 5);
|
|
|
+ UA_StatusCode retval;
|
|
|
+ retval = UA_Array_copy((const void *)testString.data, 5, (void **)&dstArray, &UA_TYPES[UA_TYPES_BYTE]);
|
|
|
+ ck_assert_int_eq(retval, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
for(i = 0;i < size;i++)
|
|
|
ck_assert_int_eq(testString.data[i], dstArray[i]);
|
|
@@ -1341,14 +1048,16 @@ END_TEST
|
|
|
START_TEST(UA_Array_copyUA_StringShallWorkOnExample) {
|
|
|
|
|
|
UA_Int32 i, j;
|
|
|
- UA_String *srcArray = UA_Array_new(&UA_TYPES[UA_TYPES_STRING], 3);
|
|
|
+ UA_String *srcArray = UA_Array_new(3, &UA_TYPES[UA_TYPES_STRING]);
|
|
|
UA_String *dstArray;
|
|
|
|
|
|
srcArray[0] = UA_STRING_ALLOC("open");
|
|
|
srcArray[1] = UA_STRING_ALLOC("62541");
|
|
|
srcArray[2] = UA_STRING_ALLOC("opc ua");
|
|
|
|
|
|
- UA_Array_copy((const void *)srcArray, (void **)&dstArray, &UA_TYPES[UA_TYPES_STRING], 3);
|
|
|
+ UA_StatusCode retval;
|
|
|
+ retval = UA_Array_copy((const void *)srcArray, 3, (void **)&dstArray, &UA_TYPES[UA_TYPES_STRING]);
|
|
|
+ ck_assert_int_eq(retval, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
for(i = 0;i < 3;i++) {
|
|
|
for(j = 0;j < 3;j++)
|
|
@@ -1356,8 +1065,8 @@ START_TEST(UA_Array_copyUA_StringShallWorkOnExample) {
|
|
|
ck_assert_int_eq(srcArray[i].length, dstArray[i].length);
|
|
|
}
|
|
|
|
|
|
- UA_Array_delete(srcArray, &UA_TYPES[UA_TYPES_STRING], 3);
|
|
|
- UA_Array_delete(dstArray, &UA_TYPES[UA_TYPES_STRING], 3);
|
|
|
+ UA_Array_delete(srcArray, 3, &UA_TYPES[UA_TYPES_STRING]);
|
|
|
+ UA_Array_delete(dstArray, 3, &UA_TYPES[UA_TYPES_STRING]);
|
|
|
}
|
|
|
END_TEST
|
|
|
|
|
@@ -1377,7 +1086,7 @@ START_TEST(UA_DiagnosticInfo_copyShallWorkOnExample) {
|
|
|
UA_DiagnosticInfo_copy(&value, &copiedValue);
|
|
|
|
|
|
|
|
|
- for(UA_Int32 i = 0;i < testString.length;i++)
|
|
|
+ for(size_t i = 0;i < testString.length;i++)
|
|
|
ck_assert_int_eq(copiedValue.additionalInfo.data[i], value.additionalInfo.data[i]);
|
|
|
ck_assert_int_eq(copiedValue.additionalInfo.length, value.additionalInfo.length);
|
|
|
|
|
@@ -1425,15 +1134,15 @@ START_TEST(UA_ApplicationDescription_copyShallWorkOnExample) {
|
|
|
|
|
|
ck_assert_int_eq(retval, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
- for(UA_Int32 i = 0;i < appString.length;i++)
|
|
|
+ for(size_t i = 0; i < appString.length; i++)
|
|
|
ck_assert_int_eq(copiedValue.applicationUri.data[i], value.applicationUri.data[i]);
|
|
|
ck_assert_int_eq(copiedValue.applicationUri.length, value.applicationUri.length);
|
|
|
|
|
|
- for(UA_Int32 i = 0;i < discString.length;i++)
|
|
|
+ for(size_t i = 0; i < discString.length; i++)
|
|
|
ck_assert_int_eq(copiedValue.discoveryProfileUri.data[i], value.discoveryProfileUri.data[i]);
|
|
|
ck_assert_int_eq(copiedValue.discoveryProfileUri.length, value.discoveryProfileUri.length);
|
|
|
|
|
|
- for(UA_Int32 i = 0;i < gateWayString.length;i++)
|
|
|
+ for(size_t i = 0; i < gateWayString.length; i++)
|
|
|
ck_assert_int_eq(copiedValue.gatewayServerUri.data[i], value.gatewayServerUri.data[i]);
|
|
|
ck_assert_int_eq(copiedValue.gatewayServerUri.length, value.gatewayServerUri.length);
|
|
|
|
|
@@ -1557,13 +1266,13 @@ END_TEST
|
|
|
|
|
|
START_TEST(UA_Variant_copyShallWorkOn1DArrayExample) {
|
|
|
|
|
|
- UA_String *srcArray = UA_Array_new(&UA_TYPES[UA_TYPES_STRING], 3);
|
|
|
+ UA_String *srcArray = UA_Array_new(3, &UA_TYPES[UA_TYPES_STRING]);
|
|
|
srcArray[0] = UA_STRING_ALLOC("__open");
|
|
|
srcArray[1] = UA_STRING_ALLOC("_62541");
|
|
|
srcArray[2] = UA_STRING_ALLOC("opc ua");
|
|
|
|
|
|
- UA_Int32 *dimensions;
|
|
|
- dimensions = UA_malloc(sizeof(UA_Int32));
|
|
|
+ UA_UInt32 *dimensions;
|
|
|
+ dimensions = UA_malloc(sizeof(UA_UInt32));
|
|
|
dimensions[0] = 3;
|
|
|
|
|
|
UA_Variant value, copiedValue;
|
|
@@ -1605,7 +1314,7 @@ END_TEST
|
|
|
|
|
|
START_TEST(UA_Variant_copyShallWorkOn2DArrayExample) {
|
|
|
|
|
|
- UA_Int32 *srcArray = UA_Array_new(&UA_TYPES[UA_TYPES_INT32], 6);
|
|
|
+ UA_Int32 *srcArray = UA_Array_new(6, &UA_TYPES[UA_TYPES_INT32]);
|
|
|
srcArray[0] = 0;
|
|
|
srcArray[1] = 1;
|
|
|
srcArray[2] = 2;
|
|
@@ -1613,7 +1322,7 @@ START_TEST(UA_Variant_copyShallWorkOn2DArrayExample) {
|
|
|
srcArray[4] = 4;
|
|
|
srcArray[5] = 5;
|
|
|
|
|
|
- UA_Int32 *dimensions = UA_Array_new(&UA_TYPES[UA_TYPES_INT32], 2);
|
|
|
+ UA_UInt32 *dimensions = UA_Array_new(2, &UA_TYPES[UA_TYPES_UINT32]);
|
|
|
UA_Int32 dim1 = 3;
|
|
|
UA_Int32 dim2 = 2;
|
|
|
dimensions[0] = dim1;
|
|
@@ -1664,85 +1373,59 @@ START_TEST(UA_Variant_copyShallWorkOn2DArrayExample) {
|
|
|
END_TEST
|
|
|
|
|
|
START_TEST(UA_ExtensionObject_encodeDecodeShallWorkOnExtensionObject) {
|
|
|
- UA_Int32 val = 42;
|
|
|
- UA_VariableAttributes varAttr;
|
|
|
- UA_VariableAttributes_init(&varAttr);
|
|
|
- varAttr.dataType = UA_TYPES[UA_TYPES_INT32].typeId;
|
|
|
- UA_Variant_init(&varAttr.value);
|
|
|
- varAttr.value.type = &UA_TYPES[UA_TYPES_INT32];
|
|
|
- varAttr.value.data = &val;
|
|
|
- varAttr.value.arrayLength = -1;
|
|
|
- varAttr.userWriteMask = 41;
|
|
|
- varAttr.specifiedAttributes |= UA_NODEATTRIBUTESMASK_DATATYPE;
|
|
|
- varAttr.specifiedAttributes |= UA_NODEATTRIBUTESMASK_VALUE;
|
|
|
- varAttr.specifiedAttributes |= UA_NODEATTRIBUTESMASK_USERWRITEMASK;
|
|
|
-
|
|
|
-
|
|
|
- UA_ExtensionObject extensionObject;
|
|
|
- UA_ExtensionObject_init(&extensionObject);
|
|
|
- extensionObject.typeId = UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES].typeId;
|
|
|
- UA_Byte extensionData[50];
|
|
|
- extensionObject.body = (UA_ByteString){.data = extensionData, .length=50};
|
|
|
- size_t posEncode = 0;
|
|
|
- UA_VariableAttributes_encodeBinary(&varAttr, &extensionObject.body, &posEncode);
|
|
|
- extensionObject.body.length = posEncode;
|
|
|
- extensionObject.encoding = UA_EXTENSIONOBJECT_ENCODINGMASK_BODYISBYTESTRING;
|
|
|
-
|
|
|
- UA_Byte data[50];
|
|
|
- UA_ByteString dst = {.data = data, .length=50};
|
|
|
-
|
|
|
- posEncode = 0;
|
|
|
- UA_ExtensionObject_encodeBinary(&extensionObject, &dst, &posEncode);
|
|
|
-
|
|
|
- UA_ExtensionObject extensionObjectDecoded;
|
|
|
- size_t posDecode = 0;
|
|
|
- UA_ExtensionObject_decodeBinary(&dst, &posDecode, &extensionObjectDecoded);
|
|
|
-
|
|
|
- ck_assert_int_eq(posEncode, posDecode);
|
|
|
- ck_assert_int_eq(extensionObjectDecoded.body.length, extensionObject.body.length);
|
|
|
-
|
|
|
- UA_VariableAttributes varAttrDecoded;
|
|
|
- UA_VariableAttributes_init(&varAttrDecoded);
|
|
|
- posDecode = 0;
|
|
|
- UA_VariableAttributes_decodeBinary(&extensionObjectDecoded.body, &posDecode, &varAttrDecoded);
|
|
|
- ck_assert_uint_eq(41, varAttrDecoded.userWriteMask);
|
|
|
- ck_assert_int_eq(-1, varAttrDecoded.value.arrayLength);
|
|
|
-
|
|
|
-
|
|
|
- UA_ExtensionObject_deleteMembers(&extensionObjectDecoded);
|
|
|
- UA_Variant_deleteMembers(&varAttrDecoded.value);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
END_TEST
|
|
|
|
|
|
static Suite *testSuite_builtin(void) {
|
|
|
Suite *s = suite_create("Built-in Data Types 62541-6 Table 1");
|
|
|
|
|
|
- TCase *tc_calcSize = tcase_create("calcSize");
|
|
|
- tcase_add_test(tc_calcSize, UA_ExtensionObject_calcSizeShallWorkOnExample);
|
|
|
- tcase_add_test(tc_calcSize, UA_DataValue_calcSizeShallWorkOnExample);
|
|
|
- tcase_add_test(tc_calcSize, UA_DiagnosticInfo_calcSizeShallWorkOnExample);
|
|
|
- tcase_add_test(tc_calcSize, UA_String_calcSizeShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_String_calcSizeWithNegativLengthShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_String_calcSizeWithNegativLengthAndValidPointerShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_String_calcSizeWithZeroLengthShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_String_calcSizeWithZeroLengthAndValidPointerShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_NodeId_calcSizeEncodingTwoByteShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_NodeId_calcSizeEncodingFourByteShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_NodeId_calcSizeEncodingStringShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_NodeId_calcSizeEncodingStringNegativLengthShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_NodeId_calcSizeEncodingStringZeroLengthShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_ExpandedNodeId_calcSizeEncodingStringAndServerIndexShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_ExpandedNodeId_calcSizeEncodingStringAndNamespaceUriShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_Guid_calcSizeShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_Guid_calcSizeShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_LocalizedText_calcSizeTextOnlyShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_LocalizedText_calcSizeLocaleOnlyShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_LocalizedText_calcSizeTextAndLocaleShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_Variant_calcSizeFixedSizeArrayShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_Variant_calcSizeVariableSizeArrayShallReturnEncodingSize);
|
|
|
- tcase_add_test(tc_calcSize, UA_Variant_decodeWithOutDeleteMembersShallFailInCheckMem);
|
|
|
- suite_add_tcase(s, tc_calcSize);
|
|
|
-
|
|
|
TCase *tc_decode = tcase_create("decode");
|
|
|
tcase_add_test(tc_decode, UA_Byte_decodeShallCopyAndAdvancePosition);
|
|
|
tcase_add_test(tc_decode, UA_Byte_decodeShallModifyOnlyCurrentPosition);
|