56 lines · cpp
1//===-- Unittests for clock_getres- ---------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "hdr/time_macros.h"10#include "src/time/clock_getres.h"11#include "test/UnitTest/ErrnoSetterMatcher.h"12#include "test/UnitTest/Test.h"13 14using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;15using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;16 17TEST(LlvmLibcClockGetRes, Invalid) {18 timespec tp;19 EXPECT_THAT(LIBC_NAMESPACE::clock_getres(-1, &tp), Fails(EINVAL));20}21 22TEST(LlvmLibcClockGetRes, NullSpec) {23 EXPECT_THAT(LIBC_NAMESPACE::clock_getres(CLOCK_REALTIME, nullptr),24 Succeeds());25}26 27TEST(LlvmLibcClockGetRes, Realtime) {28 timespec tp;29 EXPECT_THAT(LIBC_NAMESPACE::clock_getres(CLOCK_REALTIME, &tp), Succeeds());30 EXPECT_GE(tp.tv_sec, static_cast<decltype(tp.tv_sec)>(0));31 EXPECT_GE(tp.tv_nsec, static_cast<decltype(tp.tv_nsec)>(0));32}33 34TEST(LlvmLibcClockGetRes, Monotonic) {35 timespec tp;36 ASSERT_THAT(LIBC_NAMESPACE::clock_getres(CLOCK_MONOTONIC, &tp), Succeeds());37 EXPECT_GE(tp.tv_sec, static_cast<decltype(tp.tv_sec)>(0));38 EXPECT_GE(tp.tv_nsec, static_cast<decltype(tp.tv_nsec)>(0));39}40 41TEST(LlvmLibcClockGetRes, ProcessCpuTime) {42 timespec tp;43 ASSERT_THAT(LIBC_NAMESPACE::clock_getres(CLOCK_PROCESS_CPUTIME_ID, &tp),44 Succeeds());45 EXPECT_GE(tp.tv_sec, static_cast<decltype(tp.tv_sec)>(0));46 EXPECT_GE(tp.tv_nsec, static_cast<decltype(tp.tv_nsec)>(0));47}48 49TEST(LlvmLibcClockGetRes, ThreadCpuTime) {50 timespec tp;51 ASSERT_THAT(LIBC_NAMESPACE::clock_getres(CLOCK_THREAD_CPUTIME_ID, &tp),52 Succeeds());53 EXPECT_GE(tp.tv_sec, static_cast<decltype(tp.tv_sec)>(0));54 EXPECT_GE(tp.tv_nsec, static_cast<decltype(tp.tv_nsec)>(0));55}56