Newer
Older
mbed-os / TESTS / mbed_hal / crc / crc_api_tests.h
@Martin Kojtal Martin Kojtal on 21 Feb 2020 3 KB test: fix SPDX identifier
/* mbed Microcontroller Library
 * Copyright (c) 2018 ARM Limited
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/** \addtogroup hal_crc_tests */
/** @{*/

#ifndef MBED_CRC_API_TESTS_H
#define MBED_CRC_API_TESTS_H

#include "device.h"

#if DEVICE_CRC

#ifdef __cplusplus
extern "C" {
#endif

/** Test that hal_crc_is_supported() function returns true if given polynomial/width
 *  is supported, false otherwise (at least one predefined polynomial/width must be supported).
 *
 *  Given is platform with hardware CRC support.
 *
 *  When given polynomial/width is supported.
 *  Then hal_crc_is_supported() function returns true.
 *
 *  When given polynomial/width is not supported.
 *  Then hal_crc_is_supported() function returns false.
 *
 *  Note:
 *  At least one predefined polynomial/width config must be supported.
 *
 */
void crc_is_supported_test();

/** Test that CRC module can be successfully configured, fed with data and the result can
 *  be successfully obtained.
 *
 *  Given is platform with hardware CRC support.
 *
 *  When hal_crc_compute_partial_start() function is called.
 *  Then it configures CRC module with the given polynomial.
 *
 *  When hal_crc_compute_partial() function is called with valid buffer and data length.
 *  Then it feeds CRC module with data.
 *
 *  When hal_crc_get_result() function is called.
 *  Then CRC value for the given data is returned.
 *
 */
void crc_calc_single_test();

/** Test that hal_crc_compute_partial() function can be call multiple times in
 *  succession in order to provide additional data to CRC module.
 *
 *  Given is platform with hardware CRC support and CRC module is configured.
 *  When hal_crc_compute_partial() function is called multiple times.
 *  Then each call provides additional data to CRC module.
 *
 */
void crc_calc_multi_test();

/** Test that calling hal_crc_compute_partial_start() without finalising the
 *  CRC calculation overrides the current configuration and partial result.
 *
 *  Given is platform with hardware CRC support.
 *  When CRC module has been configured and fed with data and reconfigured (without reading the result).
 *  Then the configuration has been overwritten and the new data can be successfully processed.
 *
 */
void crc_reconfigure_test();

/** Test that hal_crc_compute_partial() does nothing if pointer to buffer is undefined or
 *  data length is equal to 0.
 *
 *  Given is platform with hardware CRC support.
 *  When hal_crc_compute_partial() is called with invalid parameters.
 *  Then no data is provided to CRC module and no exception is generated.
 *
 */
void crc_compute_partial_invalid_param_test();

/** Test that hal_crc_is_supported() returns false if pointer to the config structure is undefined.
 *
 *  Given is platform with hardware CRC support.
 *  When hal_crc_is_supported() is called with invalid parameter.
 *  Then function returns false.
 *
 */
void crc_is_supported_invalid_param_test();

/**@}*/

#ifdef __cplusplus
}
#endif

#endif

#endif

/**@}*/