brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · cfcab0c Raw
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