Commit 8d52a2be authored by Duy Vo's avatar Duy Vo Committed by Benjamin Cabé
Browse files

tests: subsys: crc: add ztests for CRC subsystem



Add ztests for CRC subsystem

Signed-off-by: default avatarDuy Vo <duy.vo.xc@bp.renesas.com>
parent 127c1087
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})

project(subsys_crc_test)

target_sources(app PRIVATE src/main.c)
+3 −0
Original line number Diff line number Diff line
CONFIG_ZTEST=y
CONFIG_CRC=y
CONFIG_LOG=y
+192 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2025 Renesas Electronics Corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */
#include <zephyr/drivers/crc.h>
#include <zephyr/ztest.h>
#include <zephyr/logging/log.h>
#include <zephyr/sys/crc.h>

/* Define result of CRC computation */
#define RESULT_CRC8 0xB2

/**
 * @brief Test crc8 works
 */
ZTEST(crc_subsys, test_crc_8)
{
	uint8_t data[8] = {0x0A, 0x2B, 0x4C, 0x6D, 0x8E, 0x49, 0x00, 0xC4};

	zassert_equal(crc8(data, sizeof(data), CRC8_REFLECT_POLY, 0x00, true), RESULT_CRC8);
}

/* Define result of CRC computation */
#define RESULT_CRC8_CCITT 0x4D

/**
 * @brief Test crc8_ccitt works
 */
ZTEST(crc_subsys, test_crc_8_ccitt)
{
	uint8_t data[8] = {0x0A, 0x2B, 0x4C, 0x6D, 0x8E, 0x49, 0x00, 0xC4};

	zassert_equal(crc8_ccitt(0x00, data, sizeof(data)), RESULT_CRC8_CCITT);
}

/* Define result of CRC computation */
#define RESULT_CRC8_ROHC 0xB2

/**
 * @brief Test that crc_8_rohc works
 */
ZTEST(crc_subsys, test_crc_8_rohc)
{
	uint8_t data[8] = {0x0A, 0x2B, 0x4C, 0x6D, 0x8E, 0x49, 0x00, 0xC4};

	zassert_equal(crc8_rohc(0x00, data, sizeof(data)), RESULT_CRC8_ROHC);
}

/* Define result of CRC computation */
#define RESULT_CRC16 0xE58F

/**
 * @brief Test that crc_16 works
 */
ZTEST(crc_subsys, test_crc_16)
{
	uint8_t data[8] = {0x0A, 0x2B, 0x4C, 0x6D, 0x8E, 0x49, 0x00, 0xC4};

	zassert_equal(crc16(CRC16_POLY, CRC16_INIT_VAL, data, sizeof(data)), RESULT_CRC16);
}
/* Define result of CRC computation */
#define RESULT_CRC16_REFLECT 0xD543

/**
 * @brief Test that crc_16_reflect works
 */
ZTEST(crc_subsys, test_crc_16_reflect)
{
	uint8_t data[8] = {0x0A, 0x2B, 0x4C, 0x6D, 0x8E, 0x49, 0x00, 0xC4};

	zassert_equal(crc16_reflect(CRC16_REFLECT_POLY, CRC16_INIT_VAL, data, sizeof(data)),
		      RESULT_CRC16_REFLECT);
}

/* Define result of CRC computation */
#define RESULT_CRC16_ANSI 0xDE03

/**
 * @brief Test that crc_16_ansi works
 */
ZTEST(crc_subsys, test_crc_16_ansi)
{
	uint8_t data[8] = {0x0A, 0x2B, 0x4C, 0x6D, 0x8E, 0x49, 0x00, 0xC4};

	zassert_equal(crc16_ansi(data, sizeof(data)), RESULT_CRC16_ANSI);
}

/* Define result of CRC computation */
#define RESULT_CRC_CCITT 0x445C

/**
 * @brief Test that crc_16_ccitt works
 */
ZTEST(crc_subsys, test_crc_16_ccitt)
{
	uint8_t data[8] = {0x0A, 0x2B, 0x4C, 0x6D, 0x8E, 0x49, 0x00, 0xC4};

	zassert_equal(crc16_ccitt(0x0000, data, sizeof(data)), RESULT_CRC_CCITT);
}

/* Define result of CRC computation */
#define RESULT_CRC16_ITU_T 0x8866

/**
 * @brief Test that crc_16_itu_t works
 */
ZTEST(crc_subsys, test_crc_16_itu_t)
{
	uint8_t data[8] = {0x0A, 0x2B, 0x4C, 0x6D, 0x8E, 0x49, 0x00, 0xC4};

	zassert_equal(crc16_itu_t(0x0000, data, sizeof(data)), RESULT_CRC16_ITU_T);
}

/* Define result of CRC computation */
#define RESULT_CRC32_C 0xBB19ECB2

/**
 * @brief Test that crc32_c works
 */
ZTEST(crc_subsys, test_crc_32_c)
{
	uint8_t data[8] = {0x0A, 0x2B, 0x4C, 0x6D, 0x8E, 0x49, 0x00, 0xC4};

	zassert_equal(crc32_c(0x000, data, sizeof(data), true, false), RESULT_CRC32_C);
}
/* Define result of CRC computation */
#define RESULT_CRC32_IEEE 0xCEA4A6C2

/**
 * @brief Test that crc_32_ieee works
 */
ZTEST(crc_subsys, test_crc_32_ieee)
{
	uint8_t data[8] = {0x0A, 0x2B, 0x4C, 0x6D, 0x8E, 0x49, 0x00, 0xC4};

	zassert_equal(crc32_ieee(data, sizeof(data)), RESULT_CRC32_IEEE);
}

/* Define result of CRC computation */
#define RESULT_CRC8_CCITT_REMAIN_1 0x57

/**
 * @brief Test crc8_ccitt_remain_1 work
 */
ZTEST(crc_subsys, test_crc_8_ccitt_remain_1)
{
	uint8_t data[9] = {0x0A, 0x2B, 0x4C, 0x6D, 0x8E, 0x49, 0x00, 0xC4, 0x3D};

	zassert_equal(crc8_ccitt(0x00, data, sizeof(data)), RESULT_CRC8_CCITT_REMAIN_1);
}

/* Define result of CRC computation */
#define RESULT_CRC8_ROHC_REMAIN_2 0x4F

/**
 * @brief Test that crc_8_rohc_remain_2 works
 */
ZTEST(crc_subsys, test_crc_8_rohc_remain_2)
{
	uint8_t data[10] = {0x0A, 0x2B, 0x4C, 0x6D, 0x8E, 0x49, 0x00, 0xC4, 0x3D, 0xFF};

	zassert_equal(crc8_rohc(0x00, data, sizeof(data)), RESULT_CRC8_ROHC_REMAIN_2);
}

/* Define result of CRC computation */
#define RESULT_CRC_CCITT_REMAIN_3 0x454B

/**
 * @brief Test that crc_16_ccitt_remain_3 works
 */
ZTEST(crc_subsys, test_crc_16_ccitt_remain_3)
{
	uint8_t data[11] = {0x0A, 0x2B, 0x4C, 0x6D, 0x8E, 0x49, 0x00, 0xC4, 0x3D, 0xFF, 0xE2};

	zassert_equal(crc16_ccitt(0x0000, data, sizeof(data)), RESULT_CRC_CCITT_REMAIN_3);
}

/* Define result of CRC computation */
#define RESULT_CRC16_ITU_T_REMAIN_1 0x917E

/**
 * @brief Test that crc_16_itu_t_remain_1 works
 */
ZTEST(crc_subsys, test_crc_16_itu_t_remain_1)
{
	uint8_t data[9] = {0x0A, 0x2B, 0x4C, 0x6D, 0x8E, 0x49, 0x00, 0xC4, 0x3D};

	zassert_equal(crc16_itu_t(0x0000, data, sizeof(data)), RESULT_CRC16_ITU_T_REMAIN_1);
}

ZTEST_SUITE(crc_subsys, NULL, NULL, NULL, NULL, NULL);
+7 −0
Original line number Diff line number Diff line
tests:
  subsys.crc:
    depends_on: crc
    tags:
      - subsys
      - crc
    harness: ztest