114 lines
2.2 KiB
C
114 lines
2.2 KiB
C
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
/*
|
|
* Copyright (c) 2020 Cyril Hrubis <chrubis@suse.cz>
|
|
*/
|
|
|
|
/*
|
|
* Tests for include/tst_timer.h
|
|
*/
|
|
|
|
#include "tst_test.h"
|
|
#include "tst_timer.h"
|
|
|
|
#define VAL_MS 1001
|
|
#define VAL_US 1001000
|
|
|
|
static void test_diff(enum tst_ts_type type)
|
|
{
|
|
struct tst_ts ts1, ts2;
|
|
long long diff;
|
|
|
|
ts1 = tst_ts_from_ms(type, VAL_MS);
|
|
ts2 = tst_ts_from_us(type, VAL_US);
|
|
|
|
diff = tst_ts_diff_ns(ts1, ts2);
|
|
|
|
if (diff == 0)
|
|
tst_res(TPASS, "ns_diff = 0");
|
|
else
|
|
tst_res(TFAIL, "ns_diff = %lli", diff);
|
|
|
|
diff = tst_ts_diff_ns(ts1, ts2);
|
|
|
|
if (diff == 0)
|
|
tst_res(TPASS, "us_diff = 0");
|
|
else
|
|
tst_res(TFAIL, "us_diff = %lli", diff);
|
|
|
|
diff = tst_ts_diff_ms(ts1, ts2);
|
|
|
|
if (diff == 0)
|
|
tst_res(TPASS, "ms_diff = 0");
|
|
else
|
|
tst_res(TFAIL, "ms_diff = %lli", diff);
|
|
}
|
|
|
|
static void test_lt(enum tst_ts_type type)
|
|
{
|
|
struct tst_ts ts1, ts2;
|
|
|
|
ts1 = tst_ts_from_ms(type, VAL_MS);
|
|
ts2 = tst_ts_from_us(type, VAL_US + 1);
|
|
|
|
if (tst_ts_lt(ts1, ts2))
|
|
tst_res(TPASS, "ts1 < ts2");
|
|
else
|
|
tst_res(TFAIL, "ts1 >= ts2");
|
|
|
|
ts1 = tst_ts_add_us(ts1, 1);
|
|
|
|
if (tst_ts_lt(ts1, ts2))
|
|
tst_res(TFAIL, "ts1 < ts2");
|
|
else
|
|
tst_res(TPASS, "ts1 >= ts2");
|
|
|
|
ts1 = tst_ts_add_us(ts1, 1);
|
|
|
|
if (tst_ts_lt(ts1, ts2))
|
|
tst_res(TFAIL, "ts1 < ts2");
|
|
else
|
|
tst_res(TPASS, "ts1 >= ts2");
|
|
}
|
|
|
|
static void test_add_sub(enum tst_ts_type type)
|
|
{
|
|
struct tst_ts ts;
|
|
|
|
ts = tst_ts_from_ns(type, 999999000);
|
|
ts = tst_ts_add_us(ts, 1);
|
|
|
|
long long sec = tst_ts_get_sec(ts);
|
|
long long nsec = tst_ts_get_nsec(ts);
|
|
|
|
/* Check that result was normalized */
|
|
if (sec != 1 || nsec != 0)
|
|
tst_res(TFAIL, "sec = %lli, nsec = %lli", sec, nsec);
|
|
else
|
|
tst_res(TPASS, "sec = %lli, nsec = %lli", sec, nsec);
|
|
|
|
ts = tst_ts_from_ms(type, 1000);
|
|
ts = tst_ts_sub_us(ts, 1);
|
|
|
|
sec = tst_ts_get_sec(ts);
|
|
nsec = tst_ts_get_nsec(ts);
|
|
|
|
/* Check that result was normalized */
|
|
if (sec != 0 || nsec != 999999000)
|
|
tst_res(TFAIL, "sec = %lli, nsec = %lli", sec, nsec);
|
|
else
|
|
tst_res(TPASS, "sec = %lli, nsec = %lli", sec, nsec);
|
|
}
|
|
|
|
static void do_test(unsigned int n)
|
|
{
|
|
tst_res(TINFO, "Testing with type = %i", n);
|
|
test_diff(n);
|
|
test_lt(n);
|
|
test_add_sub(n);
|
|
}
|
|
|
|
static struct tst_test test = {
|
|
.test = do_test,
|
|
.tcnt = 3,
|
|
};
|