| //===----------------------------------------------------------------------===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| /// | |
| /// \file | |
| /// Unittests for getloadavg. | |
| /// | |
| //===----------------------------------------------------------------------===// | |
| #include "src/stdlib/getloadavg.h" | |
| #include "test/UnitTest/ErrnoCheckingTest.h" | |
| #include "test/UnitTest/ErrnoSetterMatcher.h" | |
| #include "test/UnitTest/Test.h" | |
| using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds; | |
| using LlvmLibcGetloadavgTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest; | |
| TEST_F(LlvmLibcGetloadavgTest, ZeroElements) { | |
| double samples[3] = {-1.0, -1.0, -1.0}; | |
| EXPECT_THAT(LIBC_NAMESPACE::getloadavg(samples, 0), Succeeds(0)); | |
| EXPECT_TRUE(samples[0] == -1.0); | |
| EXPECT_TRUE(samples[1] == -1.0); | |
| EXPECT_TRUE(samples[2] == -1.0); | |
| } | |
| TEST_F(LlvmLibcGetloadavgTest, NullptrZeroElements) { | |
| EXPECT_THAT(LIBC_NAMESPACE::getloadavg(nullptr, 0), Succeeds(0)); | |
| } | |
| TEST_F(LlvmLibcGetloadavgTest, NegativeElements) { | |
| double samples[3] = {-1.0, -1.0, -1.0}; | |
| EXPECT_THAT(LIBC_NAMESPACE::getloadavg(samples, -1), Succeeds(0)); | |
| EXPECT_TRUE(samples[0] == -1.0); | |
| EXPECT_TRUE(samples[1] == -1.0); | |
| EXPECT_TRUE(samples[2] == -1.0); | |
| } | |
| TEST_F(LlvmLibcGetloadavgTest, ValidSamples) { | |
| for (int n = 1; n <= 3; ++n) { | |
| double samples[3] = {-1.0, -1.0, -1.0}; | |
| EXPECT_THAT(LIBC_NAMESPACE::getloadavg(samples, n), Succeeds(n)); | |
| for (int i = 0; i < n; ++i) { | |
| EXPECT_TRUE(samples[i] >= 0.0); | |
| } | |
| for (int i = n; i < 3; ++i) { | |
| EXPECT_TRUE(samples[i] == -1.0); | |
| } | |
| } | |
| } | |
| TEST_F(LlvmLibcGetloadavgTest, ClampedToThree) { | |
| double samples[5] = {-1.0, -1.0, -1.0, -1.0, -1.0}; | |
| EXPECT_THAT(LIBC_NAMESPACE::getloadavg(samples, 5), Succeeds(3)); | |
| EXPECT_TRUE(samples[0] >= 0.0); | |
| EXPECT_TRUE(samples[1] >= 0.0); | |
| EXPECT_TRUE(samples[2] >= 0.0); | |
| EXPECT_TRUE(samples[3] == -1.0); | |
| EXPECT_TRUE(samples[4] == -1.0); | |
| } |