blob: c5374c125426b2da6379c6456a3f427567fda90d [file] [log] [blame]
/*
* Copyright (c) 2019 Intel Corp.
* SPDX-License-Identifier: Apache-2.0
*/
#include <drivers/counter.h>
#include <ztest.h>
#include <kernel.h>
/*
* Basic test to ensure that the clock is ticking at roughly 1Hz.
*/
#define DELAY_MS 1200 /* pause 1.2 seconds should always pass */
#define MIN_BOUND 1 /* counter must report at least MIN_BOUND .. */
#define MAX_BOUND 2 /* .. but at most MAX_BOUND seconds elapsed */
void test_cmos_rate(void)
{
const struct device *cmos;
uint32_t start, elapsed;
int err;
cmos = device_get_binding("CMOS");
zassert_true(cmos != NULL, "can't find CMOS counter device");
err = counter_get_value(cmos, &start);
zassert_true(err == 0, "failed to read CMOS counter device");
k_msleep(DELAY_MS);
err = counter_get_value(cmos, &elapsed);
zassert_true(err == 0, "failed to read CMOS counter device");
elapsed -= start;
zassert_true(elapsed >= MIN_BOUND, "busted minimum bound");
zassert_true(elapsed <= MAX_BOUND, "busted maximum bound");
}
void test_main(void)
{
ztest_test_suite(test_cmos_counter, ztest_unit_test(test_cmos_rate));
ztest_run_test_suite(test_cmos_counter);
}