/*
 * Copyright (c) 2018 Intel Corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/ztest.h>
#include <zephyr/kernel.h>
#include <cmsis_os.h>

extern void test_kernel_start(void);
extern void test_kernel_systick(void);
extern void test_thread_prio(void);
extern void test_thread_apis(void);
extern void test_thread_instances(void);
extern void test_timer(void);
extern void test_mutex(void);
extern void test_mutex_lock_timeout(void);
extern void test_semaphore(void);
extern void test_mempool(void);
extern void test_mailq(void);
extern void test_messageq(void);
extern void test_signal_events_no_wait(void);
extern void test_signal_events_timeout(void);
extern void test_signal_events_signalled(void);
extern void test_signal_events_isr(void);

void test_main(void)
{
	ztest_test_suite(test_cmsis_apis,
			ztest_unit_test(test_kernel_start),
			ztest_unit_test(test_kernel_systick),
			ztest_unit_test(test_thread_apis),
			ztest_unit_test(test_thread_prio),
			ztest_unit_test(test_thread_instances),
			ztest_unit_test(test_timer),
			ztest_unit_test(test_mutex),
			ztest_unit_test(test_mutex_lock_timeout),
			ztest_unit_test(test_semaphore),
			ztest_unit_test(test_mempool),
			ztest_unit_test(test_mailq),
			ztest_unit_test(test_messageq),
			ztest_unit_test(test_signal_events_no_wait),
			ztest_unit_test(test_signal_events_timeout),
			ztest_unit_test(test_signal_events_signalled),
			ztest_unit_test(test_signal_events_isr));
	ztest_run_test_suite(test_cmsis_apis);
}
