Go-based FM stereo transmitter with RDS, Windows-first and cross-platform
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
1005B

  1. package aoiprxkit
  2. import "testing"
  3. func TestJitterBufferReordersAndReleases(t *testing.T) {
  4. jb := newJitterBuffer(8)
  5. p100 := RTPPacket{SequenceNumber: 100}
  6. p102 := RTPPacket{SequenceNumber: 102}
  7. p101 := RTPPacket{SequenceNumber: 101}
  8. ready, late, gap, reorder := jb.push(p100)
  9. if late || gap != 0 || reorder {
  10. t.Fatalf("unexpected state on first push")
  11. }
  12. if len(ready) != 1 || ready[0].SequenceNumber != 100 {
  13. t.Fatalf("unexpected ready on first push: %+v", ready)
  14. }
  15. ready, late, gap, reorder = jb.push(p102)
  16. if late || gap != 0 || !reorder {
  17. t.Fatalf("expected reorder on out-of-order push")
  18. }
  19. if len(ready) != 0 {
  20. t.Fatalf("unexpected ready before missing packet arrives: %+v", ready)
  21. }
  22. ready, late, gap, reorder = jb.push(p101)
  23. if late || gap != 0 {
  24. t.Fatalf("unexpected late/gap after completing sequence")
  25. }
  26. if len(ready) != 2 || ready[0].SequenceNumber != 101 || ready[1].SequenceNumber != 102 {
  27. t.Fatalf("unexpected ready after sequence repair: %+v", ready)
  28. }
  29. }