alert_test.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
  2. // SPDX-License-Identifier: MIT
  3. package alert
  4. import (
  5. "errors"
  6. "reflect"
  7. "testing"
  8. )
  9. func TestAlert(t *testing.T) {
  10. for _, test := range []struct {
  11. Name string
  12. Data []byte
  13. Want *Alert
  14. WantUnmarshalError error
  15. }{
  16. {
  17. Name: "Valid Alert",
  18. Data: []byte{0x02, 0x0A},
  19. Want: &Alert{
  20. Level: Fatal,
  21. Description: UnexpectedMessage,
  22. },
  23. },
  24. {
  25. Name: "Invalid alert length",
  26. Data: []byte{0x00},
  27. Want: &Alert{},
  28. WantUnmarshalError: errBufferTooSmall,
  29. },
  30. } {
  31. a := &Alert{}
  32. if err := a.Unmarshal(test.Data); !errors.Is(err, test.WantUnmarshalError) {
  33. t.Errorf("Unexpected Error %v: exp: %v got: %v", test.Name, test.WantUnmarshalError, err)
  34. } else if !reflect.DeepEqual(test.Want, a) {
  35. t.Errorf("%q alert.unmarshal: got %v, want %v", test.Name, a, test.Want)
  36. }
  37. if test.WantUnmarshalError != nil {
  38. return
  39. }
  40. data, marshalErr := a.Marshal()
  41. if marshalErr != nil {
  42. t.Errorf("Unexpected Error %v: got: %v", test.Name, marshalErr)
  43. } else if !reflect.DeepEqual(test.Data, data) {
  44. t.Errorf("%q alert.marshal: got % 02x, want % 02x", test.Name, data, test.Data)
  45. }
  46. }
  47. }