| //===-- Unittests for strsignal -------------------------------------------===// | |
| // | |
| // 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 | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #include "hdr/signal_macros.h" | |
| #include "src/string/strsignal.h" | |
| #include "test/UnitTest/Test.h" | |
| TEST(LlvmLibcStrSignalTest, KnownSignals) { | |
| ASSERT_STREQ(LIBC_NAMESPACE::strsignal(1), "Hangup"); | |
| const char *message_array[] = { | |
| "Unknown signal 0", // unknown | |
| "Hangup", | |
| "Interrupt", | |
| "Quit", | |
| "Illegal instruction", | |
| "Trace/breakpoint trap", | |
| "Aborted", | |
| "Bus error", | |
| "Floating point exception", | |
| "Killed", | |
| "User defined signal 1", | |
| "Segmentation fault", | |
| "User defined signal 2", | |
| "Broken pipe", | |
| "Alarm clock", | |
| "Terminated", | |
| "Stack fault", | |
| "Child exited", | |
| "Continued", | |
| "Stopped (signal)", | |
| "Stopped", | |
| "Stopped (tty input)", | |
| "Stopped (tty output)", | |
| "Urgent I/O condition", | |
| "CPU time limit exceeded", | |
| "File size limit exceeded", | |
| "Virtual timer expired", | |
| "Profiling timer expired", | |
| "Window changed", | |
| "I/O possible", | |
| "Power failure", | |
| "Bad system call", | |
| }; | |
| // There are supposed to be 32 of these, but sometimes SIGRTMIN is shifted to | |
| // reserve some. | |
| const char *rt_message_array[] = { | |
| "Real-time signal 0", "Real-time signal 1", "Real-time signal 2", | |
| "Real-time signal 3", "Real-time signal 4", "Real-time signal 5", | |
| "Real-time signal 6", "Real-time signal 7", "Real-time signal 8", | |
| "Real-time signal 9", "Real-time signal 10", "Real-time signal 11", | |
| "Real-time signal 12", "Real-time signal 13", "Real-time signal 14", | |
| "Real-time signal 15", "Real-time signal 16", "Real-time signal 17", | |
| "Real-time signal 18", "Real-time signal 19", "Real-time signal 20", | |
| "Real-time signal 21", "Real-time signal 22", "Real-time signal 23", | |
| "Real-time signal 24", "Real-time signal 25", "Real-time signal 26", | |
| "Real-time signal 27", "Real-time signal 28", "Real-time signal 29", | |
| "Real-time signal 30", "Real-time signal 31", "Real-time signal 32", | |
| }; | |
| for (size_t i = 0; i < (sizeof(message_array) / sizeof(char *)); ++i) { | |
| ASSERT_EQ(static_cast<size_t>(static_cast<int>(i)), i); | |
| EXPECT_STREQ(LIBC_NAMESPACE::strsignal(static_cast<int>(i)), | |
| message_array[i]); | |
| } | |
| for (int i = 0; i < SIGRTMAX - SIGRTMIN; ++i) { | |
| EXPECT_STREQ(LIBC_NAMESPACE::strsignal(i + SIGRTMIN), rt_message_array[i]); | |
| } | |
| } | |
| TEST(LlvmLibcStrsignalTest, UnknownSignals) { | |
| ASSERT_STREQ(LIBC_NAMESPACE::strsignal(-1), "Unknown signal -1"); | |
| ASSERT_STREQ(LIBC_NAMESPACE::strsignal(65), "Unknown signal 65"); | |
| ASSERT_STREQ(LIBC_NAMESPACE::strsignal(2147483647), | |
| "Unknown signal 2147483647"); | |
| ASSERT_STREQ(LIBC_NAMESPACE::strsignal(-2147483648), | |
| "Unknown signal -2147483648"); | |
| } |