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

#include <zephyr/zephyr.h>
#include <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);
}
