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