xref: /aosp_15_r20/external/llvm-libc/test/src/string/strsignal_test.cpp (revision 71db0c75aadcf003ffe3238005f61d7618a3fead)
1*71db0c75SAndroid Build Coastguard Worker //===-- Unittests for strsignal -------------------------------------------===//
2*71db0c75SAndroid Build Coastguard Worker //
3*71db0c75SAndroid Build Coastguard Worker // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*71db0c75SAndroid Build Coastguard Worker // See https://llvm.org/LICENSE.txt for license information.
5*71db0c75SAndroid Build Coastguard Worker // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*71db0c75SAndroid Build Coastguard Worker //
7*71db0c75SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
8*71db0c75SAndroid Build Coastguard Worker 
9*71db0c75SAndroid Build Coastguard Worker #include "src/string/strsignal.h"
10*71db0c75SAndroid Build Coastguard Worker #include "test/UnitTest/Test.h"
11*71db0c75SAndroid Build Coastguard Worker 
12*71db0c75SAndroid Build Coastguard Worker #include <signal.h>
13*71db0c75SAndroid Build Coastguard Worker 
TEST(LlvmLibcStrSignalTest,KnownSignals)14*71db0c75SAndroid Build Coastguard Worker TEST(LlvmLibcStrSignalTest, KnownSignals) {
15*71db0c75SAndroid Build Coastguard Worker   ASSERT_STREQ(LIBC_NAMESPACE::strsignal(1), "Hangup");
16*71db0c75SAndroid Build Coastguard Worker 
17*71db0c75SAndroid Build Coastguard Worker   const char *message_array[] = {
18*71db0c75SAndroid Build Coastguard Worker       "Unknown signal 0", // unknown
19*71db0c75SAndroid Build Coastguard Worker       "Hangup",
20*71db0c75SAndroid Build Coastguard Worker       "Interrupt",
21*71db0c75SAndroid Build Coastguard Worker       "Quit",
22*71db0c75SAndroid Build Coastguard Worker       "Illegal instruction",
23*71db0c75SAndroid Build Coastguard Worker       "Trace/breakpoint trap",
24*71db0c75SAndroid Build Coastguard Worker       "Aborted",
25*71db0c75SAndroid Build Coastguard Worker       "Bus error",
26*71db0c75SAndroid Build Coastguard Worker       "Floating point exception",
27*71db0c75SAndroid Build Coastguard Worker       "Killed",
28*71db0c75SAndroid Build Coastguard Worker       "User defined signal 1",
29*71db0c75SAndroid Build Coastguard Worker       "Segmentation fault",
30*71db0c75SAndroid Build Coastguard Worker       "User defined signal 2",
31*71db0c75SAndroid Build Coastguard Worker       "Broken pipe",
32*71db0c75SAndroid Build Coastguard Worker       "Alarm clock",
33*71db0c75SAndroid Build Coastguard Worker       "Terminated",
34*71db0c75SAndroid Build Coastguard Worker       "Stack fault",
35*71db0c75SAndroid Build Coastguard Worker       "Child exited",
36*71db0c75SAndroid Build Coastguard Worker       "Continued",
37*71db0c75SAndroid Build Coastguard Worker       "Stopped (signal)",
38*71db0c75SAndroid Build Coastguard Worker       "Stopped",
39*71db0c75SAndroid Build Coastguard Worker       "Stopped (tty input)",
40*71db0c75SAndroid Build Coastguard Worker       "Stopped (tty output)",
41*71db0c75SAndroid Build Coastguard Worker       "Urgent I/O condition",
42*71db0c75SAndroid Build Coastguard Worker       "CPU time limit exceeded",
43*71db0c75SAndroid Build Coastguard Worker       "File size limit exceeded",
44*71db0c75SAndroid Build Coastguard Worker       "Virtual timer expired",
45*71db0c75SAndroid Build Coastguard Worker       "Profiling timer expired",
46*71db0c75SAndroid Build Coastguard Worker       "Window changed",
47*71db0c75SAndroid Build Coastguard Worker       "I/O possible",
48*71db0c75SAndroid Build Coastguard Worker       "Power failure",
49*71db0c75SAndroid Build Coastguard Worker       "Bad system call",
50*71db0c75SAndroid Build Coastguard Worker   };
51*71db0c75SAndroid Build Coastguard Worker 
52*71db0c75SAndroid Build Coastguard Worker   // There are supposed to be 32 of these, but sometimes SIGRTMIN is shifted to
53*71db0c75SAndroid Build Coastguard Worker   // reserve some.
54*71db0c75SAndroid Build Coastguard Worker   const char *rt_message_array[] = {
55*71db0c75SAndroid Build Coastguard Worker       "Real-time signal 0",  "Real-time signal 1",  "Real-time signal 2",
56*71db0c75SAndroid Build Coastguard Worker       "Real-time signal 3",  "Real-time signal 4",  "Real-time signal 5",
57*71db0c75SAndroid Build Coastguard Worker       "Real-time signal 6",  "Real-time signal 7",  "Real-time signal 8",
58*71db0c75SAndroid Build Coastguard Worker       "Real-time signal 9",  "Real-time signal 10", "Real-time signal 11",
59*71db0c75SAndroid Build Coastguard Worker       "Real-time signal 12", "Real-time signal 13", "Real-time signal 14",
60*71db0c75SAndroid Build Coastguard Worker       "Real-time signal 15", "Real-time signal 16", "Real-time signal 17",
61*71db0c75SAndroid Build Coastguard Worker       "Real-time signal 18", "Real-time signal 19", "Real-time signal 20",
62*71db0c75SAndroid Build Coastguard Worker       "Real-time signal 21", "Real-time signal 22", "Real-time signal 23",
63*71db0c75SAndroid Build Coastguard Worker       "Real-time signal 24", "Real-time signal 25", "Real-time signal 26",
64*71db0c75SAndroid Build Coastguard Worker       "Real-time signal 27", "Real-time signal 28", "Real-time signal 29",
65*71db0c75SAndroid Build Coastguard Worker       "Real-time signal 30", "Real-time signal 31", "Real-time signal 32",
66*71db0c75SAndroid Build Coastguard Worker   };
67*71db0c75SAndroid Build Coastguard Worker 
68*71db0c75SAndroid Build Coastguard Worker   for (size_t i = 0; i < (sizeof(message_array) / sizeof(char *)); ++i) {
69*71db0c75SAndroid Build Coastguard Worker     ASSERT_EQ(static_cast<size_t>(static_cast<int>(i)), i);
70*71db0c75SAndroid Build Coastguard Worker     EXPECT_STREQ(LIBC_NAMESPACE::strsignal(static_cast<int>(i)),
71*71db0c75SAndroid Build Coastguard Worker                  message_array[i]);
72*71db0c75SAndroid Build Coastguard Worker   }
73*71db0c75SAndroid Build Coastguard Worker 
74*71db0c75SAndroid Build Coastguard Worker   for (int i = 0; i < SIGRTMAX - SIGRTMIN; ++i) {
75*71db0c75SAndroid Build Coastguard Worker     EXPECT_STREQ(LIBC_NAMESPACE::strsignal(i + SIGRTMIN), rt_message_array[i]);
76*71db0c75SAndroid Build Coastguard Worker   }
77*71db0c75SAndroid Build Coastguard Worker }
78*71db0c75SAndroid Build Coastguard Worker 
TEST(LlvmLibcStrsignalTest,UnknownSignals)79*71db0c75SAndroid Build Coastguard Worker TEST(LlvmLibcStrsignalTest, UnknownSignals) {
80*71db0c75SAndroid Build Coastguard Worker   ASSERT_STREQ(LIBC_NAMESPACE::strsignal(-1), "Unknown signal -1");
81*71db0c75SAndroid Build Coastguard Worker   ASSERT_STREQ(LIBC_NAMESPACE::strsignal(65), "Unknown signal 65");
82*71db0c75SAndroid Build Coastguard Worker   ASSERT_STREQ(LIBC_NAMESPACE::strsignal(2147483647),
83*71db0c75SAndroid Build Coastguard Worker                "Unknown signal 2147483647");
84*71db0c75SAndroid Build Coastguard Worker   ASSERT_STREQ(LIBC_NAMESPACE::strsignal(-2147483648),
85*71db0c75SAndroid Build Coastguard Worker                "Unknown signal -2147483648");
86*71db0c75SAndroid Build Coastguard Worker }
87