| /* |
| * Copyright (c) 2021 Nordic Semiconductor ASA |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <zephyr/ztest.h> |
| #include <zephyr/busy_sim.h> |
| |
| static void test_busy_sim(void) |
| { |
| uint32_t ms = 1000; |
| uint32_t delta = 80; |
| uint32_t busy_ms; |
| uint32_t t = k_uptime_get_32(); |
| |
| k_busy_wait(1000 * ms); |
| t = k_uptime_get_32() - t; |
| |
| zassert_true((t > (ms - delta)) && (t < (ms + delta))); |
| |
| /* Start busy simulator and check that k_busy_wait last longer */ |
| t = k_uptime_get_32(); |
| busy_sim_start(500, 200, 1000, 400, NULL); |
| k_busy_wait(1000 * ms); |
| t = k_uptime_get_32() - t; |
| busy_ms = (3 * ms) / 2; |
| |
| busy_sim_stop(); |
| /* due to clock imprecision, randomness and additional cpu load overhead |
| * expected time range is increased. |
| */ |
| zassert_true((t > (busy_ms - 2 * delta)) && (t < (busy_ms + 4 * delta)), |
| "expected in range: %d-%d, k_busy_wait lasted %d", |
| busy_ms - 2 * delta, busy_ms + 4 * delta, t); |
| |
| /* Check that k_busy_wait is not interrupted after busy_sim_stop. */ |
| t = k_uptime_get_32(); |
| k_busy_wait(1000 * ms); |
| t = k_uptime_get_32() - t; |
| zassert_true((t > (ms - delta)) && (t < (ms + delta))); |
| } |
| |
| void test_main(void) |
| { |
| ztest_test_suite(busy_sim_tests, |
| ztest_unit_test(test_busy_sim) |
| ); |
| |
| ztest_run_test_suite(busy_sim_tests); |
| } |