40 lines · cpp
1//===-- Unittests for signal ----------------------------------------------===//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 "src/signal/raise.h"10#include "src/signal/signal.h"11#include "test/UnitTest/ErrnoCheckingTest.h"12#include "test/UnitTest/ErrnoSetterMatcher.h"13#include "test/UnitTest/Test.h"14 15using LlvmLibcSignalTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;16using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;17using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;18 19TEST(LlvmLibcSignalTest, Invalid) {20 auto *valid = +[](int) {};21 EXPECT_THAT((void *)LIBC_NAMESPACE::signal(0, valid),22 Fails(EINVAL, (void *)SIG_ERR));23 EXPECT_THAT((void *)LIBC_NAMESPACE::signal(65, valid),24 Fails(EINVAL, (void *)SIG_ERR));25}26 27static int sum;28TEST(LlvmLibcSignalTest, Basic) {29 // In case test get run multiple times.30 sum = 0;31 ASSERT_NE(LIBC_NAMESPACE::signal(32 SIGUSR1, +[](int) { sum++; }),33 SIG_ERR);34 ASSERT_THAT(LIBC_NAMESPACE::raise(SIGUSR1), Succeeds());35 EXPECT_EQ(sum, 1);36 for (int i = 0; i < 10; i++)37 ASSERT_THAT(LIBC_NAMESPACE::raise(SIGUSR1), Succeeds());38 EXPECT_EQ(sum, 11);39}40