#if __has_include(<catch2/catch.hpp>)
#include <catch2/catch.hpp>
#else
#include <catch2/catch_test_macros.hpp>
#endif
#include <cstring>
#include <signal.h>
#include <stdplus/signal.hpp>

namespace stdplus
{
namespace signal
{
namespace
{

TEST_CASE("Signals are blocked", "[signal]")
{
    constexpr int s = SIGINT;
    constexpr int otherS = SIGTERM;
    constexpr int notBlocked = SIGPROF;

    sigset_t expectedSet;
    REQUIRE(0 == sigprocmask(SIG_BLOCK, nullptr, &expectedSet));
    REQUIRE(0 == sigaddset(&expectedSet, otherS));
    REQUIRE(0 == sigprocmask(SIG_BLOCK, &expectedSet, nullptr));
    REQUIRE(0 == sigismember(&expectedSet, notBlocked));
    REQUIRE(0 == sigismember(&expectedSet, s));
    REQUIRE(0 == sigaddset(&expectedSet, s));

    block(s);

    sigset_t newSet;
    REQUIRE(0 == sigprocmask(SIG_BLOCK, nullptr, &newSet));
    REQUIRE(sigismember(&expectedSet, s) == sigismember(&newSet, s));
    REQUIRE(sigismember(&expectedSet, otherS) == sigismember(&newSet, otherS));
    REQUIRE(sigismember(&expectedSet, notBlocked) ==
            sigismember(&newSet, notBlocked));
}

TEST_CASE("Signals stay blocked if already blocked", "[signal]")
{
    constexpr int s = SIGINT;
    constexpr int otherS = SIGTERM;
    constexpr int notBlocked = SIGPROF;

    sigset_t expectedSet;
    REQUIRE(0 == sigprocmask(SIG_BLOCK, nullptr, &expectedSet));
    REQUIRE(0 == sigaddset(&expectedSet, s));
    REQUIRE(0 == sigaddset(&expectedSet, otherS));
    REQUIRE(0 == sigismember(&expectedSet, notBlocked));
    REQUIRE(0 == sigprocmask(SIG_BLOCK, &expectedSet, nullptr));

    block(s);

    sigset_t newSet;
    REQUIRE(0 == sigprocmask(SIG_BLOCK, nullptr, &newSet));
    REQUIRE(sigismember(&expectedSet, s) == sigismember(&newSet, s));
    REQUIRE(sigismember(&expectedSet, otherS) == sigismember(&newSet, otherS));
    REQUIRE(sigismember(&expectedSet, notBlocked) ==
            sigismember(&newSet, notBlocked));
}

} // namespace
} // namespace signal
} // namespace stdplus
