51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
|
|
package stario
|
||
|
|
|
||
|
|
import (
|
||
|
|
"errors"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestSignalErrorForType(t *testing.T) {
|
||
|
|
cases := []struct {
|
||
|
|
name string
|
||
|
|
sig rune
|
||
|
|
msg string
|
||
|
|
want error
|
||
|
|
}{
|
||
|
|
{name: "interrupt", sig: 0x03, msg: "SIGNAL SIGINT RECIVED", want: ErrSignalInterrupt},
|
||
|
|
{name: "stop", sig: 0x1a, msg: "SIGNAL SIGSTOP RECIVED", want: ErrSignalStop},
|
||
|
|
{name: "quit", sig: 0x1c, msg: "SIGNAL SIGQUIT RECIVED", want: ErrSignalQuit},
|
||
|
|
}
|
||
|
|
for _, tc := range cases {
|
||
|
|
err := signalErrorForType(tc.sig)
|
||
|
|
if err == nil {
|
||
|
|
t.Fatalf("%s: expected non-nil error", tc.name)
|
||
|
|
}
|
||
|
|
if err.Error() != tc.msg {
|
||
|
|
t.Fatalf("%s: unexpected error text: got %q want %q", tc.name, err.Error(), tc.msg)
|
||
|
|
}
|
||
|
|
if !errors.Is(err, tc.want) {
|
||
|
|
t.Fatalf("%s: errors.Is mismatch: got %v want %v", tc.name, err, tc.want)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestSignalErrorForUnknownType(t *testing.T) {
|
||
|
|
if err := signalErrorForType('x'); err != nil {
|
||
|
|
t.Fatalf("expected nil error for unknown signal, got %v", err)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestSignalReturnsTypedError(t *testing.T) {
|
||
|
|
err := signal(0x03)
|
||
|
|
if !errors.Is(err, ErrSignalInterrupt) {
|
||
|
|
t.Fatalf("expected interrupt error, got %v", err)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestSignalReturnsNilForUnknownType(t *testing.T) {
|
||
|
|
if err := signal('x'); err != nil {
|
||
|
|
t.Fatalf("expected nil error for unknown signal, got %v", err)
|
||
|
|
}
|
||
|
|
}
|