Browse Source

Tests: Add unit tests for UA_NodeId_order

Stefan Profanter 4 years ago
parent
commit
092d199f23
1 changed files with 139 additions and 0 deletions
  1. 139 0
      tests/check_utils.c

+ 139 - 0
tests/check_utils.c

@@ -393,6 +393,137 @@ START_TEST(idToStringByte) {
 } END_TEST
 
 
+START_TEST(idOrderNs) {
+    UA_NodeId id_ns1 = UA_NODEID_NUMERIC(1, 12345);
+    UA_NodeId id_ns3 = UA_NODEID_NUMERIC(3, 12345);
+
+    ck_assert(UA_NodeId_order(&id_ns1, &id_ns1) == UA_ORDER_EQ);
+    ck_assert(UA_NodeId_order(&id_ns1, &id_ns3) == UA_ORDER_LESS);
+    ck_assert(UA_NodeId_order(&id_ns3, &id_ns1) == UA_ORDER_MORE);
+} END_TEST
+
+START_TEST(idOrderIdentifier) {
+    UA_NodeId id_num = UA_NODEID_NUMERIC(1, 12345);
+    UA_NodeId id_str = UA_NODEID_STRING(1, "asdf");
+
+    ck_assert(UA_NodeId_order(&id_num, &id_num) == UA_ORDER_EQ);
+    ck_assert(UA_NodeId_order(&id_num, &id_str) == UA_ORDER_LESS);
+    ck_assert(UA_NodeId_order(&id_str, &id_num) == UA_ORDER_MORE);
+} END_TEST
+
+START_TEST(idOrderNumeric) {
+    UA_NodeId id_num_12345 = UA_NODEID_NUMERIC(1, 12345);
+    UA_NodeId id_num_23456 = UA_NODEID_NUMERIC(1, 23456);
+
+    ck_assert(UA_NodeId_order(&id_num_12345, &id_num_12345) == UA_ORDER_EQ);
+    ck_assert(UA_NodeId_order(&id_num_12345, &id_num_23456) == UA_ORDER_LESS);
+    ck_assert(UA_NodeId_order(&id_num_23456, &id_num_12345) == UA_ORDER_MORE);
+} END_TEST
+
+START_TEST(idOrderGuid) {
+
+    // See also https://github.com/open62541/open62541/pull/2904#issuecomment-514111395
+
+    // 00000000-FFFF-FFFF-FFFFFFFFFFFF,
+    UA_Guid guid1 = {
+            0,
+            0xffff,
+            0xffff,
+            { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }
+    };
+    // 00000001-0000-0000-000000000000
+    UA_Guid guid2 = {
+            0x1,
+            0,
+            0,
+            { 0, 0, 0, 0, 0, 0, 0, 0 }
+    };
+    // 00000000-0000-FFFF-FFFFFFFFFFFF
+    UA_Guid guid3 = {
+            0,
+            0,
+            0xffff,
+            { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }
+    };
+    // 00000000-0001-0000-000000000000
+    UA_Guid guid4 = {
+            0,
+            0x1,
+            0,
+            { 0, 0, 0, 0, 0, 0, 0, 0 }
+    };
+    // 00000000-0000-0000-FFFFFFFFFFFF
+    UA_Guid guid5 = {
+            0,
+            0,
+            0,
+            { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }
+    };
+    // 00000000-0000-0001-000000000000
+    UA_Guid guid6 = {
+            0,
+            0,
+            0x1,
+            { 0, 0, 0, 0, 0, 0, 0, 0 }
+    };
+    // 00000000-0000-0000-000000000000
+    UA_Guid guid7 = {
+            0,
+            0,
+            0,
+            { 0, 0, 0, 0, 0, 0, 0, 0 }
+    };
+    // 00000000-0000-0000-000000000001
+    UA_Guid guid8 = {
+            0,
+            0,
+            0,
+            { 0, 0, 0, 0, 0, 0, 0, 0x1 }
+    };
+
+
+    UA_NodeId id_guid_1 = UA_NODEID_GUID(1, guid1);
+    UA_NodeId id_guid_2 = UA_NODEID_GUID(1, guid2);
+    ck_assert(UA_NodeId_order(&id_guid_1, &id_guid_1) == UA_ORDER_EQ);
+    ck_assert(UA_NodeId_order(&id_guid_1, &id_guid_2) == UA_ORDER_LESS);
+    ck_assert(UA_NodeId_order(&id_guid_2, &id_guid_1) == UA_ORDER_MORE);
+
+    UA_NodeId id_guid_3 = UA_NODEID_GUID(1, guid3);
+    UA_NodeId id_guid_4 = UA_NODEID_GUID(1, guid4);
+    ck_assert(UA_NodeId_order(&id_guid_3, &id_guid_3) == UA_ORDER_EQ);
+    ck_assert(UA_NodeId_order(&id_guid_3, &id_guid_4) == UA_ORDER_LESS);
+    ck_assert(UA_NodeId_order(&id_guid_4, &id_guid_3) == UA_ORDER_MORE);
+
+    UA_NodeId id_guid_5 = UA_NODEID_GUID(1, guid5);
+    UA_NodeId id_guid_6 = UA_NODEID_GUID(1, guid6);
+    ck_assert(UA_NodeId_order(&id_guid_5, &id_guid_5) == UA_ORDER_EQ);
+    ck_assert(UA_NodeId_order(&id_guid_5, &id_guid_2) == UA_ORDER_LESS);
+    ck_assert(UA_NodeId_order(&id_guid_6, &id_guid_5) == UA_ORDER_MORE);
+
+    UA_NodeId id_guid_7 = UA_NODEID_GUID(1, guid7);
+    UA_NodeId id_guid_8 = UA_NODEID_GUID(1, guid8);
+    ck_assert(UA_NodeId_order(&id_guid_7, &id_guid_7) == UA_ORDER_EQ);
+    ck_assert(UA_NodeId_order(&id_guid_7, &id_guid_8) == UA_ORDER_LESS);
+    ck_assert(UA_NodeId_order(&id_guid_8, &id_guid_7) == UA_ORDER_MORE);
+
+} END_TEST
+
+START_TEST(idOrderString) {
+    UA_NodeId id_str_a = UA_NODEID_STRING(1, "aaaaa");
+    UA_NodeId id_str_b = UA_NODEID_STRING(1, "baa");
+
+    ck_assert(UA_NodeId_order(&id_str_a, &id_str_a) == UA_ORDER_EQ);
+    ck_assert(UA_NodeId_order(&id_str_a, &id_str_b) == UA_ORDER_LESS);
+    ck_assert(UA_NodeId_order(&id_str_b, &id_str_a) == UA_ORDER_MORE);
+
+    UA_NodeId id_str_c = UA_NODEID_STRING(1, "cddd");
+    UA_NodeId id_str_d = UA_NODEID_STRING(1, "dddd");
+
+    ck_assert(UA_NodeId_order(&id_str_c, &id_str_c) == UA_ORDER_EQ);
+    ck_assert(UA_NodeId_order(&id_str_c, &id_str_d) == UA_ORDER_LESS);
+    ck_assert(UA_NodeId_order(&id_str_d, &id_str_c) == UA_ORDER_MORE);
+} END_TEST
+
 
 static Suite* testSuite_Utils(void) {
     Suite *s = suite_create("Utils");
@@ -417,6 +548,14 @@ static Suite* testSuite_Utils(void) {
     tcase_add_test(tc1, idToStringByte);
     suite_add_tcase(s, tc1);
 
+    TCase *tc2 = tcase_create("test nodeid order");
+    tcase_add_test(tc1, idOrderNs);
+    tcase_add_test(tc1, idOrderIdentifier);
+    tcase_add_test(tc1, idOrderNumeric);
+    tcase_add_test(tc1, idOrderGuid);
+    tcase_add_test(tc1, idOrderString);
+    suite_add_tcase(s, tc2);
+
     return s;
 }