#include // for Message #include // for SuiteApiResolver, TestFactoryImpl, TestPartResult #include // for raise, SIGABRT, SIGFPE, SIGILL, SIGINT, SIGSEGV, SIGTERM #include "ftxui/component/component.hpp" // for Renderer #include "ftxui/component/screen_interactive.hpp" #include "ftxui/dom/elements.hpp" // for text, Element #include "gtest/gtest_pred_impl.h" // for Test, TEST, EXPECT_EQ using namespace ftxui; namespace { bool TestSignal(int signal) { int called = 0; // The tree of components. This defines how to navigate using the keyboard. auto component = Renderer([&] { called++; std::raise(signal); called++; return text(""); }); auto screen = ScreenInteractive::FitComponent(); screen.Loop(component); EXPECT_EQ(called, 2); return true; } } // namespace TEST(ScreenInteractive, Signal_SIGTERM) { TestSignal(SIGTERM); } TEST(ScreenInteractive, Signal_SIGSEGV) { TestSignal(SIGSEGV); } TEST(ScreenInteractive, Signal_SIGINT) { TestSignal(SIGINT); } TEST(ScreenInteractive, Signal_SIGILL) { TestSignal(SIGILL); } TEST(ScreenInteractive, Signal_SIGABRT) { TestSignal(SIGABRT); } TEST(ScreenInteractive, Signal_SIGFPE) { TestSignal(SIGFPE); } // Copyright 2021 Arthur Sonzogni. All rights reserved. // Use of this source code is governed by the MIT license that can be found in // the LICENSE file.