sctptransport_test.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
  2. // SPDX-License-Identifier: MIT
  3. //go:build !js
  4. // +build !js
  5. package webrtc
  6. import "testing"
  7. func TestGenerateDataChannelID(t *testing.T) {
  8. sctpTransportWithChannels := func(ids []uint16) *SCTPTransport {
  9. ret := &SCTPTransport{dataChannels: []*DataChannel{}}
  10. for i := range ids {
  11. id := ids[i]
  12. ret.dataChannels = append(ret.dataChannels, &DataChannel{id: &id})
  13. }
  14. return ret
  15. }
  16. testCases := []struct {
  17. role DTLSRole
  18. s *SCTPTransport
  19. result uint16
  20. }{
  21. {DTLSRoleClient, sctpTransportWithChannels([]uint16{}), 0},
  22. {DTLSRoleClient, sctpTransportWithChannels([]uint16{1}), 0},
  23. {DTLSRoleClient, sctpTransportWithChannels([]uint16{0}), 2},
  24. {DTLSRoleClient, sctpTransportWithChannels([]uint16{0, 2}), 4},
  25. {DTLSRoleClient, sctpTransportWithChannels([]uint16{0, 4}), 2},
  26. {DTLSRoleServer, sctpTransportWithChannels([]uint16{}), 1},
  27. {DTLSRoleServer, sctpTransportWithChannels([]uint16{0}), 1},
  28. {DTLSRoleServer, sctpTransportWithChannels([]uint16{1}), 3},
  29. {DTLSRoleServer, sctpTransportWithChannels([]uint16{1, 3}), 5},
  30. {DTLSRoleServer, sctpTransportWithChannels([]uint16{1, 5}), 3},
  31. }
  32. for _, testCase := range testCases {
  33. idPtr := new(uint16)
  34. err := testCase.s.generateAndSetDataChannelID(testCase.role, &idPtr)
  35. if err != nil {
  36. t.Errorf("failed to generate id: %v", err)
  37. return
  38. }
  39. if *idPtr != testCase.result {
  40. t.Errorf("Wrong id: %d expected %d", *idPtr, testCase.result)
  41. }
  42. }
  43. }