blob: bf0fe6f78c5fbbc357a9f35cebfb2653f665e441 [file] [edit]
//===----------------------------------------------------------------------===//
//
// 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);
}