Loading...
/* * Copyright (c) 2019 Alexander Wachter * * SPDX-License-Identifier: Apache-2.0 */ #include <hwinfo.h> #include <ztest.h> #include <strings.h> #include <errno.h> /* * @addtogroup t_hwinfo_get_device_id_api * @{ * @defgroup t_hwinfo_get_device_id test_hwinfo_get_device_id * @brief TestPurpose: verify device id get works * @details * - Test Steps * -# Read the ID * -# Check if to many bytes are written to the buffer * -# Check if UID is plausible * - Expected Results * -# Device uid with correct length should be written to the buffer. * @} */ #define BUFFER_LENGTH 17 #define BUFFER_CANARY 0xFF /* * Function invokes the get_entropy callback in driver * to get the random data and fill to passed buffer */ static void test_device_id_get(void) { u8_t buffer_1[BUFFER_LENGTH]; u8_t buffer_2[BUFFER_LENGTH]; ssize_t length_read_1, length_read_2; int i; length_read_1 = hwinfo_get_device_id(buffer_1, 1); zassert_not_equal(length_read_1, -ENOTSUP, "Not supported by hardware"); zassert_false((length_read_1 < 0), "Error returned: %d", length_read_1); zassert_not_equal(length_read_1, 0, "Zero bytes read"); zassert_equal(length_read_1, 1, "Length not adhered"); memset(buffer_1, BUFFER_CANARY, sizeof(buffer_1)); length_read_1 = hwinfo_get_device_id(buffer_1, BUFFER_LENGTH - 1); zassert_equal(buffer_1[length_read_1], BUFFER_CANARY, "Too many bytes are written"); memcpy(buffer_2, buffer_1, length_read_1); for (i = 0; i < BUFFER_LENGTH; i++) { buffer_1[i] ^= 0xA5; } length_read_2 = hwinfo_get_device_id(buffer_1, BUFFER_LENGTH - 1); zassert_equal(length_read_1, length_read_2, "Length varied"); zassert_equal(buffer_1[length_read_1], (BUFFER_CANARY ^ 0xA5), "Too many bytes are written"); for (i = 0; i < length_read_1; i++) { zassert_equal(buffer_1[i], buffer_2[i], "Two consecutively readings don't match"); } } void test_main(void) { ztest_test_suite(hwinfo_device_id_api, ztest_unit_test(test_device_id_get)); ztest_run_test_suite(hwinfo_device_id_api); } |