mirror of https://github.com/bjdgyc/anylink.git
50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
package alert
|
|
|
|
import (
|
|
"errors"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestAlert(t *testing.T) {
|
|
for _, test := range []struct {
|
|
Name string
|
|
Data []byte
|
|
Want *Alert
|
|
WantUnmarshalError error
|
|
}{
|
|
{
|
|
Name: "Valid Alert",
|
|
Data: []byte{0x02, 0x0A},
|
|
Want: &Alert{
|
|
Level: Fatal,
|
|
Description: UnexpectedMessage,
|
|
},
|
|
},
|
|
{
|
|
Name: "Invalid alert length",
|
|
Data: []byte{0x00},
|
|
Want: &Alert{},
|
|
WantUnmarshalError: errBufferTooSmall,
|
|
},
|
|
} {
|
|
a := &Alert{}
|
|
if err := a.Unmarshal(test.Data); !errors.Is(err, test.WantUnmarshalError) {
|
|
t.Errorf("Unexpected Error %v: exp: %v got: %v", test.Name, test.WantUnmarshalError, err)
|
|
} else if !reflect.DeepEqual(test.Want, a) {
|
|
t.Errorf("%q alert.unmarshal: got %v, want %v", test.Name, a, test.Want)
|
|
}
|
|
|
|
if test.WantUnmarshalError != nil {
|
|
return
|
|
}
|
|
|
|
data, marshalErr := a.Marshal()
|
|
if marshalErr != nil {
|
|
t.Errorf("Unexpected Error %v: got: %v", test.Name, marshalErr)
|
|
} else if !reflect.DeepEqual(test.Data, data) {
|
|
t.Errorf("%q alert.marshal: got % 02x, want % 02x", test.Name, data, test.Data)
|
|
}
|
|
}
|
|
}
|