/*
 * Copyright (c) 2021 Stephanos Ioannidis <root@stephanos.io>
 * Copyright (C) 2010-2021 ARM Limited or its affiliates. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <ztest.h>
#include <zephyr.h>
#include <stdlib.h>
#include <arm_math.h>
#include "../../common/test_common.h"

#include "misc_q7.pat"

#define SNR_ERROR_THRESH	((float32_t)15)
#define ABS_ERROR_THRESH_Q7	((q7_t)5)

static void test_arm_correlate_q7(
	size_t in1_length, size_t in2_length, const q7_t *ref,
	size_t ref_length)
{
	q7_t *output;

	/* Allocate output buffer */
	output = calloc(ref_length, sizeof(q7_t));

	/* Run test function */
	arm_correlate_q7(in_com1, in1_length, in_com2, in2_length, output);

	/* Validate output */
	zassert_true(
		test_snr_error_q7(ref_length, ref, output, SNR_ERROR_THRESH),
		ASSERT_MSG_SNR_LIMIT_EXCEED);

	zassert_true(
		test_near_equal_q7(ref_length, ref, output,
			ABS_ERROR_THRESH_Q7),
		ASSERT_MSG_ABS_ERROR_LIMIT_EXCEED);

	/* Free output buffer */
	free(output);
}

#define DEFINE_CORRELATE_TEST(a, b) \
	DEFINE_TEST_VARIANT4( \
		arm_correlate_q7, a##_##b, a, b, \
		ref_correlate_##a##_##b, ARRAY_SIZE(ref_correlate_##a##_##b))

DEFINE_CORRELATE_TEST(30, 31);
DEFINE_CORRELATE_TEST(30, 32);
DEFINE_CORRELATE_TEST(30, 33);
DEFINE_CORRELATE_TEST(30, 34);
DEFINE_CORRELATE_TEST(30, 49);
DEFINE_CORRELATE_TEST(31, 31);
DEFINE_CORRELATE_TEST(31, 32);
DEFINE_CORRELATE_TEST(31, 33);
DEFINE_CORRELATE_TEST(31, 34);
DEFINE_CORRELATE_TEST(31, 49);
DEFINE_CORRELATE_TEST(32, 31);
DEFINE_CORRELATE_TEST(32, 32);
DEFINE_CORRELATE_TEST(32, 33);
DEFINE_CORRELATE_TEST(32, 34);
DEFINE_CORRELATE_TEST(32, 49);
DEFINE_CORRELATE_TEST(33, 31);
DEFINE_CORRELATE_TEST(33, 32);
DEFINE_CORRELATE_TEST(33, 33);
DEFINE_CORRELATE_TEST(33, 34);
DEFINE_CORRELATE_TEST(33, 49);
DEFINE_CORRELATE_TEST(48, 31);
DEFINE_CORRELATE_TEST(48, 32);
DEFINE_CORRELATE_TEST(48, 33);
DEFINE_CORRELATE_TEST(48, 34);
DEFINE_CORRELATE_TEST(48, 49);

static void test_arm_conv_q7(
	size_t in1_length, size_t in2_length, const q7_t *ref,
	size_t ref_length)
{
	q7_t *output;

	/* Allocate output buffer */
	output = calloc(ref_length, sizeof(q7_t));

	/* Run test function */
	arm_conv_q7(in_com1, in1_length, in_com2, in2_length, output);

	/* Validate output */
	zassert_true(
		test_snr_error_q7(ref_length, ref, output, SNR_ERROR_THRESH),
		ASSERT_MSG_SNR_LIMIT_EXCEED);

	zassert_true(
		test_near_equal_q7(ref_length, ref, output,
			ABS_ERROR_THRESH_Q7),
		ASSERT_MSG_ABS_ERROR_LIMIT_EXCEED);

	/* Free output buffer */
	free(output);
}

#define DEFINE_CONV_TEST(a, b) \
	DEFINE_TEST_VARIANT4( \
		arm_conv_q7, a##_##b, a, b, \
		ref_conv_##a##_##b, ARRAY_SIZE(ref_conv_##a##_##b))

DEFINE_CONV_TEST(30, 31);
DEFINE_CONV_TEST(30, 32);
DEFINE_CONV_TEST(30, 33);
DEFINE_CONV_TEST(30, 34);
DEFINE_CONV_TEST(30, 49);
DEFINE_CONV_TEST(31, 31);
DEFINE_CONV_TEST(31, 32);
DEFINE_CONV_TEST(31, 33);
DEFINE_CONV_TEST(31, 34);
DEFINE_CONV_TEST(31, 49);
DEFINE_CONV_TEST(32, 31);
DEFINE_CONV_TEST(32, 32);
DEFINE_CONV_TEST(32, 33);
DEFINE_CONV_TEST(32, 34);
DEFINE_CONV_TEST(32, 49);
DEFINE_CONV_TEST(33, 31);
DEFINE_CONV_TEST(33, 32);
DEFINE_CONV_TEST(33, 33);
DEFINE_CONV_TEST(33, 34);
DEFINE_CONV_TEST(33, 49);
DEFINE_CONV_TEST(48, 31);
DEFINE_CONV_TEST(48, 32);
DEFINE_CONV_TEST(48, 33);
DEFINE_CONV_TEST(48, 34);
DEFINE_CONV_TEST(48, 49);

#ifdef CONFIG_CMSIS_DSP_TEST_FILTERING_MISC_CONV_PARTIAL
static void test_arm_conv_partial_q7(
	size_t first, size_t in1_length, size_t in2_length, const q7_t *ref,
	size_t ref_length)
{
	q7_t *output;
	q7_t *temp;
	arm_status status;

	/* Allocate output buffer */
	output = calloc(first + ref_length, sizeof(q7_t));
	temp = calloc(ref_length, sizeof(q7_t));

	/* Run test function */
	status = arm_conv_partial_q7(
			in_partial1, in1_length, in_partial2, in2_length,
			output, first, ref_length);

	zassert_equal(status, ARM_MATH_SUCCESS,
		      ASSERT_MSG_INCORRECT_COMP_RESULT);

	memcpy(temp, &output[first], ref_length * sizeof(q7_t));

	/* Validate output */
	zassert_true(
		test_snr_error_q7(ref_length, ref, temp, SNR_ERROR_THRESH),
		ASSERT_MSG_SNR_LIMIT_EXCEED);

	zassert_true(
		test_near_equal_q7(ref_length, ref, temp,
			ABS_ERROR_THRESH_Q7),
		ASSERT_MSG_ABS_ERROR_LIMIT_EXCEED);

	/* Free output buffer */
	free(output);
	free(temp);
}

static void test_arm_conv_partial_opt_q7(
	size_t first, size_t in1_length, size_t in2_length, const q7_t *ref,
	size_t ref_length)
{
	q7_t *output;
	q7_t *temp;
	q15_t *scratch1, *scratch2;
	arm_status status;

	/* Allocate output buffer */
	output = calloc(first + ref_length, sizeof(q7_t));
	temp = calloc(ref_length, sizeof(q7_t));
	scratch1 = calloc(24, sizeof(q15_t));
	scratch2 = calloc(24, sizeof(q15_t));

	/* Run test function */
	status = arm_conv_partial_opt_q7(
			in_partial1, in1_length, in_partial2, in2_length,
			output, first, ref_length,
			scratch1, scratch2);

	zassert_equal(status, ARM_MATH_SUCCESS,
		      ASSERT_MSG_INCORRECT_COMP_RESULT);

	memcpy(temp, &output[first], ref_length * sizeof(q7_t));

	/* Validate output */
	zassert_true(
		test_snr_error_q7(ref_length, ref, temp, SNR_ERROR_THRESH),
		ASSERT_MSG_SNR_LIMIT_EXCEED);

	zassert_true(
		test_near_equal_q7(ref_length, ref, temp,
			ABS_ERROR_THRESH_Q7),
		ASSERT_MSG_ABS_ERROR_LIMIT_EXCEED);

	/* Free output buffer */
	free(output);
	free(temp);
	free(scratch1);
	free(scratch2);
}
#else
static void test_arm_conv_partial_q7(
	size_t first, size_t in1_length, size_t in2_length, const q7_t *ref,
	size_t ref_length)
{
	ztest_test_skip();
}

static void test_arm_conv_partial_opt_q7(
	size_t first, size_t in1_length, size_t in2_length, const q7_t *ref,
	size_t ref_length)
{
	ztest_test_skip();
}
#endif /* CONFIG_CMSIS_DSP_TEST_FILTERING_MISC_CONV_PARTIAL */

#define DEFINE_CONV_PARTIAL_TEST(a, b, c) \
	DEFINE_TEST_VARIANT5( \
		arm_conv_partial_q7, a##_##b##_##c, a, b, c, \
		ref_conv_partial_##a##_##b##_##c, \
		ARRAY_SIZE(ref_conv_partial_##a##_##b##_##c)) \
	DEFINE_TEST_VARIANT5( \
		arm_conv_partial_opt_q7, a##_##b##_##c, a, b, c, \
		ref_conv_partial_##a##_##b##_##c, \
		ARRAY_SIZE(ref_conv_partial_##a##_##b##_##c))

DEFINE_CONV_PARTIAL_TEST(3, 6, 8);
DEFINE_CONV_PARTIAL_TEST(9, 6, 8);
DEFINE_CONV_PARTIAL_TEST(7, 6, 8);

void test_filtering_misc_q7(void)
{
	ztest_test_suite(filtering_misc_q7,
		ztest_unit_test(test_arm_correlate_q7_30_31),
		ztest_unit_test(test_arm_correlate_q7_30_32),
		ztest_unit_test(test_arm_correlate_q7_30_33),
		ztest_unit_test(test_arm_correlate_q7_30_34),
		ztest_unit_test(test_arm_correlate_q7_30_49),
		ztest_unit_test(test_arm_correlate_q7_31_31),
		ztest_unit_test(test_arm_correlate_q7_31_32),
		ztest_unit_test(test_arm_correlate_q7_31_33),
		ztest_unit_test(test_arm_correlate_q7_31_34),
		ztest_unit_test(test_arm_correlate_q7_31_49),
		ztest_unit_test(test_arm_correlate_q7_32_31),
		ztest_unit_test(test_arm_correlate_q7_32_32),
		ztest_unit_test(test_arm_correlate_q7_32_33),
		ztest_unit_test(test_arm_correlate_q7_32_34),
		ztest_unit_test(test_arm_correlate_q7_32_49),
		ztest_unit_test(test_arm_correlate_q7_33_31),
		ztest_unit_test(test_arm_correlate_q7_33_32),
		ztest_unit_test(test_arm_correlate_q7_33_33),
		ztest_unit_test(test_arm_correlate_q7_33_34),
		ztest_unit_test(test_arm_correlate_q7_33_49),
		ztest_unit_test(test_arm_correlate_q7_48_31),
		ztest_unit_test(test_arm_correlate_q7_48_32),
		ztest_unit_test(test_arm_correlate_q7_48_33),
		ztest_unit_test(test_arm_correlate_q7_48_34),
		ztest_unit_test(test_arm_correlate_q7_48_49),
		ztest_unit_test(test_arm_conv_q7_30_31),
		ztest_unit_test(test_arm_conv_q7_30_32),
		ztest_unit_test(test_arm_conv_q7_30_33),
		ztest_unit_test(test_arm_conv_q7_30_34),
		ztest_unit_test(test_arm_conv_q7_30_49),
		ztest_unit_test(test_arm_conv_q7_31_31),
		ztest_unit_test(test_arm_conv_q7_31_32),
		ztest_unit_test(test_arm_conv_q7_31_33),
		ztest_unit_test(test_arm_conv_q7_31_34),
		ztest_unit_test(test_arm_conv_q7_31_49),
		ztest_unit_test(test_arm_conv_q7_32_31),
		ztest_unit_test(test_arm_conv_q7_32_32),
		ztest_unit_test(test_arm_conv_q7_32_33),
		ztest_unit_test(test_arm_conv_q7_32_34),
		ztest_unit_test(test_arm_conv_q7_32_49),
		ztest_unit_test(test_arm_conv_q7_33_31),
		ztest_unit_test(test_arm_conv_q7_33_32),
		ztest_unit_test(test_arm_conv_q7_33_33),
		ztest_unit_test(test_arm_conv_q7_33_34),
		ztest_unit_test(test_arm_conv_q7_33_49),
		ztest_unit_test(test_arm_conv_q7_48_31),
		ztest_unit_test(test_arm_conv_q7_48_32),
		ztest_unit_test(test_arm_conv_q7_48_33),
		ztest_unit_test(test_arm_conv_q7_48_34),
		ztest_unit_test(test_arm_conv_q7_48_49),
		ztest_unit_test(test_arm_conv_partial_q7_3_6_8),
		ztest_unit_test(test_arm_conv_partial_q7_9_6_8),
		ztest_unit_test(test_arm_conv_partial_q7_7_6_8),
		ztest_unit_test(test_arm_conv_partial_opt_q7_3_6_8),
		ztest_unit_test(test_arm_conv_partial_opt_q7_9_6_8),
		ztest_unit_test(test_arm_conv_partial_opt_q7_7_6_8)
		);

	ztest_run_test_suite(filtering_misc_q7);
}
