/*
 * Copyright (c) 2020-2021 Vestas Wind Systems A/S
 *
 * SPDX-License-Identifier: Apache-2.0
 */

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

#include "test_pwm_loopback.h"

void test_main(void)
{
	struct test_pwm in;
	struct test_pwm out;

	get_test_pwms(&out, &in);

	k_object_access_grant(out.dev, k_current_get());
	k_object_access_grant(in.dev, k_current_get());

	ztest_test_suite(pwm_loopback_test,
			 ztest_user_unit_test(test_pulse_capture),
			 ztest_user_unit_test(test_pulse_capture_inverted),
			 ztest_user_unit_test(test_period_capture),
			 ztest_user_unit_test(test_period_capture_inverted),
			 ztest_user_unit_test(test_pulse_and_period_capture),
			 ztest_user_unit_test(test_capture_timeout),
			 ztest_unit_test(test_continuous_capture),
			 ztest_unit_test(test_capture_busy));
	ztest_run_test_suite(pwm_loopback_test);
}
