Browse Source

add a unit test for reading empty values

Julius Pfrommer 7 years ago
parent
commit
82a72629cb
1 changed files with 28 additions and 0 deletions
  1. 28 0
      tests/check_services_attributes.c

+ 28 - 0
tests/check_services_attributes.c

@@ -169,6 +169,33 @@ START_TEST(ReadSingleAttributeValueWithoutTimestamp) {
     UA_DataValue_deleteMembers(&resp);
 } END_TEST
 
+START_TEST(ReadSingleDataSourceAttributeValueEmptyWithoutTimestamp) {
+    UA_Server *server = makeTestSequence();
+
+    UA_Variant empty;
+    UA_Variant_init(&empty);
+    UA_StatusCode ret =
+        UA_Server_writeValue(server, UA_NODEID_STRING(1, "the.answer"), empty);
+    ck_assert_int_eq(UA_STATUSCODE_GOOD, ret);
+
+    UA_ReadValueId rvi;
+    UA_ReadValueId_init(&rvi);
+    rvi.nodeId = UA_NODEID_STRING(1, "the.answer");
+    rvi.attributeId = UA_ATTRIBUTEID_VALUE;
+
+    // read 1
+    UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
+    ck_assert_int_eq(UA_STATUSCODE_GOOD, resp.status);
+    ck_assert_int_eq(true, resp.hasValue);
+    UA_DataValue_deleteMembers(&resp);
+
+    // read 2
+    ret = UA_Server_readValue(server, rvi.nodeId, &empty);
+    ck_assert_int_eq(UA_STATUSCODE_GOOD, ret);
+
+    UA_Server_delete(server);
+} END_TEST
+
 START_TEST(ReadSingleAttributeValueRangeWithoutTimestamp) {
     UA_ReadValueId rvi;
     UA_ReadValueId_init(&rvi);
@@ -869,6 +896,7 @@ static Suite * testSuite_services_attributes(void) {
     tcase_add_test(tc_readSingleAttributes, ReadSingleAttributeExecutableWithoutTimestamp);
     tcase_add_test(tc_readSingleAttributes, ReadSingleAttributeUserExecutableWithoutTimestamp);
     tcase_add_test(tc_readSingleAttributes, ReadSingleDataSourceAttributeValueWithoutTimestamp);
+    tcase_add_test(tc_readSingleAttributes, ReadSingleDataSourceAttributeValueEmptyWithoutTimestamp);
     tcase_add_test(tc_readSingleAttributes, ReadSingleDataSourceAttributeDataTypeWithoutTimestamp);
     tcase_add_test(tc_readSingleAttributes, ReadSingleDataSourceAttributeArrayDimensionsWithoutTimestamp);