Added common property test for BACnetARRAY (#828)
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
#include <zephyr/ztest.h>
|
#include <zephyr/ztest.h>
|
||||||
#include <bacnet/bactext.h>
|
#include <bacnet/bactext.h>
|
||||||
|
#include <bacnet/property.h>
|
||||||
#include <bacnet/rp.h>
|
#include <bacnet/rp.h>
|
||||||
#include <bacnet/rpm.h>
|
#include <bacnet/rpm.h>
|
||||||
#include <bacnet/wp.h>
|
#include <bacnet/wp.h>
|
||||||
@@ -23,21 +24,40 @@
|
|||||||
* @return true if the property was written successfully, false if not
|
* @return true if the property was written successfully, false if not
|
||||||
*/
|
*/
|
||||||
bool bacnet_object_property_write_test(
|
bool bacnet_object_property_write_test(
|
||||||
BACNET_WRITE_PROPERTY_DATA *wpdata,
|
BACNET_WRITE_PROPERTY_DATA *wp_data,
|
||||||
write_property_function write_property,
|
write_property_function write_property,
|
||||||
const int *skip_fail_property_list)
|
const int *skip_fail_property_list)
|
||||||
{
|
{
|
||||||
bool status = false;
|
bool status = false;
|
||||||
|
bool is_array, is_list;
|
||||||
|
|
||||||
(void)skip_fail_property_list;
|
if (property_list_member(
|
||||||
if (wpdata && write_property) {
|
skip_fail_property_list, wp_data->object_property)) {
|
||||||
status = write_property(wpdata);
|
return true;
|
||||||
|
}
|
||||||
|
if (wp_data && write_property) {
|
||||||
|
status = write_property(wp_data);
|
||||||
if (!status) {
|
if (!status) {
|
||||||
/* verify WriteProperty property is known */
|
/* verify WriteProperty property is known */
|
||||||
zassert_not_equal(
|
zassert_not_equal(
|
||||||
wpdata->error_code, ERROR_CODE_UNKNOWN_PROPERTY,
|
wp_data->error_code, ERROR_CODE_UNKNOWN_PROPERTY,
|
||||||
"property '%s': WriteProperty Unknown!\n",
|
"property '%s': WriteProperty Unknown!\n",
|
||||||
bactext_property_name(wpdata->object_property));
|
bactext_property_name(wp_data->object_property));
|
||||||
|
}
|
||||||
|
is_array = property_list_bacnet_array_member(
|
||||||
|
wp_data->object_type, wp_data->object_property);
|
||||||
|
is_list = property_list_bacnet_list_member(
|
||||||
|
wp_data->object_type, wp_data->object_property);
|
||||||
|
if (!is_array && !is_list) {
|
||||||
|
wp_data->array_index = 0;
|
||||||
|
status = write_property(wp_data);
|
||||||
|
zassert_equal(status, false, NULL);
|
||||||
|
zassert_equal(wp_data->error_class, ERROR_CLASS_PROPERTY, NULL);
|
||||||
|
zassert_equal(
|
||||||
|
wp_data->error_code, ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY,
|
||||||
|
"property=%s error_code=%s",
|
||||||
|
bactext_property_name(wp_data->object_property),
|
||||||
|
bactext_error_code_name(wp_data->error_code));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,8 +81,15 @@ void bacnet_object_property_write_parameter_init(
|
|||||||
wpdata->object_instance = rpdata->object_instance;
|
wpdata->object_instance = rpdata->object_instance;
|
||||||
wpdata->object_property = rpdata->object_property;
|
wpdata->object_property = rpdata->object_property;
|
||||||
wpdata->array_index = rpdata->array_index;
|
wpdata->array_index = rpdata->array_index;
|
||||||
memcpy(&wpdata->application_data, rpdata->application_data, MAX_APDU);
|
if (len >= 0) {
|
||||||
wpdata->application_data_len = len;
|
memcpy(
|
||||||
|
&wpdata->application_data, rpdata->application_data,
|
||||||
|
sizeof(wpdata->application_data));
|
||||||
|
wpdata->application_data_len = len;
|
||||||
|
} else {
|
||||||
|
wpdata->application_data_len = 0;
|
||||||
|
}
|
||||||
|
wpdata->priority = BACNET_NO_PRIORITY;
|
||||||
wpdata->error_code = ERROR_CODE_SUCCESS;
|
wpdata->error_code = ERROR_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -86,6 +113,7 @@ int bacnet_object_property_read_test(
|
|||||||
int apdu_len = 0;
|
int apdu_len = 0;
|
||||||
int read_len = 0;
|
int read_len = 0;
|
||||||
uint8_t *apdu;
|
uint8_t *apdu;
|
||||||
|
bool is_array, is_list;
|
||||||
BACNET_ARRAY_INDEX array_index = 0;
|
BACNET_ARRAY_INDEX array_index = 0;
|
||||||
BACNET_APPLICATION_DATA_VALUE value = { 0 };
|
BACNET_APPLICATION_DATA_VALUE value = { 0 };
|
||||||
|
|
||||||
@@ -142,6 +170,28 @@ int bacnet_object_property_read_test(
|
|||||||
read_len, BACNET_STATUS_ERROR, "property '%s': failed to read!\n",
|
read_len, BACNET_STATUS_ERROR, "property '%s': failed to read!\n",
|
||||||
bactext_property_name(rpdata->object_property));
|
bactext_property_name(rpdata->object_property));
|
||||||
}
|
}
|
||||||
|
is_array = property_list_bacnet_array_member(
|
||||||
|
rpdata->object_type, rpdata->object_property);
|
||||||
|
is_list = property_list_bacnet_list_member(
|
||||||
|
rpdata->object_type, rpdata->object_property);
|
||||||
|
if (!is_array && !is_list) {
|
||||||
|
rpdata->array_index = 0;
|
||||||
|
read_len = read_property(rpdata);
|
||||||
|
zassert_equal(
|
||||||
|
read_len, BACNET_STATUS_ERROR, "property '%s': is not an array!\n",
|
||||||
|
bactext_property_name(rpdata->object_property));
|
||||||
|
zassert_equal(read_len, BACNET_STATUS_ERROR, NULL);
|
||||||
|
zassert_equal(
|
||||||
|
rpdata->error_class, ERROR_CLASS_PROPERTY,
|
||||||
|
"property '%s': error class is %s\n",
|
||||||
|
bactext_property_name(rpdata->object_property),
|
||||||
|
bactext_error_class_name(rpdata->error_class));
|
||||||
|
zassert_equal(
|
||||||
|
rpdata->error_code, ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY,
|
||||||
|
"property '%s': error code is %s\n",
|
||||||
|
bactext_property_name(rpdata->object_property),
|
||||||
|
bactext_error_code_name(rpdata->error_code));
|
||||||
|
}
|
||||||
|
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
@@ -193,7 +243,7 @@ void bacnet_object_properties_read_write_test(
|
|||||||
while ((*pOptional) != -1) {
|
while ((*pOptional) != -1) {
|
||||||
rpdata.object_property = *pOptional;
|
rpdata.object_property = *pOptional;
|
||||||
rpdata.array_index = BACNET_ARRAY_ALL;
|
rpdata.array_index = BACNET_ARRAY_ALL;
|
||||||
bacnet_object_property_read_test(
|
len = bacnet_object_property_read_test(
|
||||||
&rpdata, read_property, skip_fail_property_list);
|
&rpdata, read_property, skip_fail_property_list);
|
||||||
bacnet_object_property_write_parameter_init(&wpdata, &rpdata, len);
|
bacnet_object_property_write_parameter_init(&wpdata, &rpdata, len);
|
||||||
bacnet_object_property_write_test(
|
bacnet_object_property_write_test(
|
||||||
@@ -203,7 +253,7 @@ void bacnet_object_properties_read_write_test(
|
|||||||
while ((*pProprietary) != -1) {
|
while ((*pProprietary) != -1) {
|
||||||
rpdata.object_property = *pProprietary;
|
rpdata.object_property = *pProprietary;
|
||||||
rpdata.array_index = BACNET_ARRAY_ALL;
|
rpdata.array_index = BACNET_ARRAY_ALL;
|
||||||
bacnet_object_property_read_test(
|
len = bacnet_object_property_read_test(
|
||||||
&rpdata, read_property, skip_fail_property_list);
|
&rpdata, read_property, skip_fail_property_list);
|
||||||
bacnet_object_property_write_parameter_init(&wpdata, &rpdata, len);
|
bacnet_object_property_write_parameter_init(&wpdata, &rpdata, len);
|
||||||
bacnet_object_property_write_test(
|
bacnet_object_property_write_test(
|
||||||
|
|||||||
Reference in New Issue
Block a user