1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * Copyright (c) 2020 Cyril Hrubis <chrubis@suse.cz> 4 */ 5 6/* 7 * Tests for include/tst_timer.h 8 */ 9 10#include "tst_test.h" 11#include "tst_timer.h" 12 13#define VAL_MS 1001 14#define VAL_US 1001000 15 16static void test_diff(enum tst_ts_type type) 17{ 18 struct tst_ts ts1, ts2; 19 long long diff; 20 21 ts1 = tst_ts_from_ms(type, VAL_MS); 22 ts2 = tst_ts_from_us(type, VAL_US); 23 24 diff = tst_ts_diff_ns(ts1, ts2); 25 26 if (diff == 0) 27 tst_res(TPASS, "ns_diff = 0"); 28 else 29 tst_res(TFAIL, "ns_diff = %lli", diff); 30 31 diff = tst_ts_diff_ns(ts1, ts2); 32 33 if (diff == 0) 34 tst_res(TPASS, "us_diff = 0"); 35 else 36 tst_res(TFAIL, "us_diff = %lli", diff); 37 38 diff = tst_ts_diff_ms(ts1, ts2); 39 40 if (diff == 0) 41 tst_res(TPASS, "ms_diff = 0"); 42 else 43 tst_res(TFAIL, "ms_diff = %lli", diff); 44} 45 46static void test_lt(enum tst_ts_type type) 47{ 48 struct tst_ts ts1, ts2; 49 50 ts1 = tst_ts_from_ms(type, VAL_MS); 51 ts2 = tst_ts_from_us(type, VAL_US + 1); 52 53 if (tst_ts_lt(ts1, ts2)) 54 tst_res(TPASS, "ts1 < ts2"); 55 else 56 tst_res(TFAIL, "ts1 >= ts2"); 57 58 ts1 = tst_ts_add_us(ts1, 1); 59 60 if (tst_ts_lt(ts1, ts2)) 61 tst_res(TFAIL, "ts1 < ts2"); 62 else 63 tst_res(TPASS, "ts1 >= ts2"); 64 65 ts1 = tst_ts_add_us(ts1, 1); 66 67 if (tst_ts_lt(ts1, ts2)) 68 tst_res(TFAIL, "ts1 < ts2"); 69 else 70 tst_res(TPASS, "ts1 >= ts2"); 71} 72 73static void test_add_sub(enum tst_ts_type type) 74{ 75 struct tst_ts ts; 76 77 ts = tst_ts_from_ns(type, 999999000); 78 ts = tst_ts_add_us(ts, 1); 79 80 long long sec = tst_ts_get_sec(ts); 81 long long nsec = tst_ts_get_nsec(ts); 82 83 /* Check that result was normalized */ 84 if (sec != 1 || nsec != 0) 85 tst_res(TFAIL, "sec = %lli, nsec = %lli", sec, nsec); 86 else 87 tst_res(TPASS, "sec = %lli, nsec = %lli", sec, nsec); 88 89 ts = tst_ts_from_ms(type, 1000); 90 ts = tst_ts_sub_us(ts, 1); 91 92 sec = tst_ts_get_sec(ts); 93 nsec = tst_ts_get_nsec(ts); 94 95 /* Check that result was normalized */ 96 if (sec != 0 || nsec != 999999000) 97 tst_res(TFAIL, "sec = %lli, nsec = %lli", sec, nsec); 98 else 99 tst_res(TPASS, "sec = %lli, nsec = %lli", sec, nsec); 100} 101 102static void do_test(unsigned int n) 103{ 104 tst_res(TINFO, "Testing with type = %i", n); 105 test_diff(n); 106 test_lt(n); 107 test_add_sub(n); 108} 109 110static struct tst_test test = { 111 .test = do_test, 112 .tcnt = 3, 113}; 114