|
@@ -155,6 +155,136 @@ START_TEST(StatusCode_msg) {
|
|
|
}
|
|
|
END_TEST
|
|
|
|
|
|
+
|
|
|
+static void assertNodeIdString(const UA_String *gotStr, const char* expectedStr) {
|
|
|
+ size_t expectedStringLength = strlen(expectedStr);
|
|
|
+ ck_assert_uint_ge(gotStr->length, expectedStringLength);
|
|
|
+ char *gotChars = (char*)UA_malloc(gotStr->length+1);
|
|
|
+ memcpy(gotChars, gotStr->data, gotStr->length);
|
|
|
+ gotChars[gotStr->length] = 0;
|
|
|
+ ck_assert_str_eq(gotChars, expectedStr);
|
|
|
+ UA_free(gotChars);
|
|
|
+}
|
|
|
+
|
|
|
+START_TEST(idToStringNumeric) {
|
|
|
+ UA_NodeId n;
|
|
|
+ UA_String str = UA_STRING_NULL;
|
|
|
+
|
|
|
+ n = UA_NODEID_NUMERIC(0,0);
|
|
|
+ UA_NodeId_toString(&n, &str);
|
|
|
+ assertNodeIdString(&str, "ns=0;i=0");
|
|
|
+
|
|
|
+ n = UA_NODEID_NUMERIC(12345,1234567890);
|
|
|
+ UA_NodeId_toString(&n, &str);
|
|
|
+ assertNodeIdString(&str, "ns=12345;i=1234567890");
|
|
|
+
|
|
|
+ n = UA_NODEID_NUMERIC(0xFFFF,0xFFFFFFFF);
|
|
|
+ UA_NodeId_toString(&n, &str);
|
|
|
+ assertNodeIdString(&str, "ns=65535;i=4294967295");
|
|
|
+
|
|
|
+ UA_String_deleteMembers(&str);
|
|
|
+} END_TEST
|
|
|
+
|
|
|
+START_TEST(idToStringString) {
|
|
|
+ UA_NodeId n;
|
|
|
+ UA_String str = UA_STRING_NULL;
|
|
|
+
|
|
|
+ n = UA_NODEID_STRING(0,"");
|
|
|
+ UA_NodeId_toString(&n, &str);
|
|
|
+ assertNodeIdString(&str, "ns=0;i=");
|
|
|
+
|
|
|
+ n = UA_NODEID_STRING(54321,"Some String");
|
|
|
+ UA_NodeId_toString(&n, &str);
|
|
|
+ assertNodeIdString(&str, "ns=54321;i=Some String");
|
|
|
+
|
|
|
+ UA_String_deleteMembers(&str);
|
|
|
+} END_TEST
|
|
|
+
|
|
|
+START_TEST(idToStringGuid) {
|
|
|
+ UA_NodeId n;
|
|
|
+ UA_String str = UA_STRING_NULL;
|
|
|
+
|
|
|
+ UA_Guid g = UA_GUID_NULL;
|
|
|
+
|
|
|
+ n = UA_NODEID_GUID(0,UA_GUID_NULL);
|
|
|
+ UA_NodeId_toString(&n, &str);
|
|
|
+ assertNodeIdString(&str, "ns=0;i=00000000-0000-0000-0000-000000000000");
|
|
|
+
|
|
|
+ g.data1 = 0xA123456C;
|
|
|
+ g.data2 = 0x0ABC;
|
|
|
+ g.data3 = 0x1A2B;
|
|
|
+ g.data4[0] = 0x81;
|
|
|
+ g.data4[1] = 0x5F;
|
|
|
+ g.data4[2] = 0x68;
|
|
|
+ g.data4[3] = 0x72;
|
|
|
+ g.data4[4] = 0x12;
|
|
|
+ g.data4[5] = 0xAA;
|
|
|
+ g.data4[6] = 0xEE;
|
|
|
+ g.data4[7] = 0x1B;
|
|
|
+
|
|
|
+ n = UA_NODEID_GUID(65535,g);
|
|
|
+ UA_NodeId_toString(&n, &str);
|
|
|
+ assertNodeIdString(&str, "ns=65535;i=a123456c-0abc-1a2b-815f-687212aaee1b");
|
|
|
+
|
|
|
+ g.data1 = 0xFFFFFFFF;
|
|
|
+ g.data2 = 0xFFFF;
|
|
|
+ g.data3 = 0xFFFF;
|
|
|
+ g.data4[0] = 0xFF;
|
|
|
+ g.data4[1] = 0xFF;
|
|
|
+ g.data4[2] = 0xFF;
|
|
|
+ g.data4[3] = 0xFF;
|
|
|
+ g.data4[4] = 0xFF;
|
|
|
+ g.data4[5] = 0xFF;
|
|
|
+ g.data4[6] = 0xFF;
|
|
|
+ g.data4[7] = 0xFF;
|
|
|
+
|
|
|
+ n = UA_NODEID_GUID(65535,g);
|
|
|
+ UA_NodeId_toString(&n, &str);
|
|
|
+ assertNodeIdString(&str, "ns=65535;i=ffffffff-ffff-ffff-ffff-ffffffffffff");
|
|
|
+
|
|
|
+ UA_String_deleteMembers(&str);
|
|
|
+} END_TEST
|
|
|
+
|
|
|
+START_TEST(idToStringByte) {
|
|
|
+ UA_NodeId n;
|
|
|
+ UA_String str = UA_STRING_NULL;
|
|
|
+
|
|
|
+ n.namespaceIndex = 0;
|
|
|
+ n.identifierType = UA_NODEIDTYPE_BYTESTRING;
|
|
|
+ n.identifier.byteString.data = NULL;
|
|
|
+ n.identifier.byteString.length = 0;
|
|
|
+ UA_NodeId_toString(&n, &str);
|
|
|
+ assertNodeIdString(&str, "ns=0;i=");
|
|
|
+
|
|
|
+ UA_ByteString bs = UA_BYTESTRING_NULL;
|
|
|
+
|
|
|
+ bs.length = 1;
|
|
|
+ bs.data = (UA_Byte*)UA_malloc(bs.length);
|
|
|
+ bs.data[0] = 0x2C;
|
|
|
+ n.identifier.byteString = bs;
|
|
|
+ n.namespaceIndex = 123;
|
|
|
+ UA_NodeId_toString(&n, &str);
|
|
|
+ assertNodeIdString(&str, "ns=123;i=2c");
|
|
|
+ UA_free(bs.data);
|
|
|
+
|
|
|
+ bs.length = 5;
|
|
|
+ bs.data = (UA_Byte*)UA_malloc(bs.length);
|
|
|
+ bs.data[0] = 0x21;
|
|
|
+ bs.data[1] = 0x83;
|
|
|
+ bs.data[2] = 0xE0;
|
|
|
+ bs.data[3] = 0x54;
|
|
|
+ bs.data[4] = 0x78;
|
|
|
+ n.identifier.byteString = bs;
|
|
|
+ n.namespaceIndex = 599;
|
|
|
+ UA_NodeId_toString(&n, &str);
|
|
|
+ assertNodeIdString(&str, "ns=599;i=2183e05478");
|
|
|
+ UA_free(bs.data);
|
|
|
+
|
|
|
+ UA_String_deleteMembers(&str);
|
|
|
+} END_TEST
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
static Suite* testSuite_Utils(void) {
|
|
|
Suite *s = suite_create("Utils");
|
|
|
TCase *tc_endpointUrl_split = tcase_create("EndpointUrl_split");
|
|
@@ -164,6 +294,15 @@ static Suite* testSuite_Utils(void) {
|
|
|
tcase_add_test(tc_utils, readNumber);
|
|
|
tcase_add_test(tc_utils, StatusCode_msg);
|
|
|
suite_add_tcase(s,tc_utils);
|
|
|
+
|
|
|
+
|
|
|
+ TCase *tc1 = tcase_create("test nodeid string");
|
|
|
+ tcase_add_test(tc1, idToStringNumeric);
|
|
|
+ tcase_add_test(tc1, idToStringString);
|
|
|
+ tcase_add_test(tc1, idToStringGuid);
|
|
|
+ tcase_add_test(tc1, idToStringByte);
|
|
|
+ suite_add_tcase(s, tc1);
|
|
|
+
|
|
|
return s;
|
|
|
}
|
|
|
|