segment_test.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package kcp_test
  2. import (
  3. "testing"
  4. "github.com/v2ray/v2ray-core/common/alloc"
  5. "github.com/v2ray/v2ray-core/testing/assert"
  6. . "github.com/v2ray/v2ray-core/transport/internet/kcp"
  7. )
  8. func TestBadSegment(t *testing.T) {
  9. assert := assert.On(t)
  10. seg, buf := ReadSegment(nil)
  11. assert.Pointer(seg).IsNil()
  12. assert.Int(len(buf)).Equals(0)
  13. }
  14. func TestDataSegment(t *testing.T) {
  15. assert := assert.On(t)
  16. seg := &DataSegment{
  17. Conv: 1,
  18. ReceivingWindow: 2,
  19. Timestamp: 3,
  20. Number: 4,
  21. Unacknowledged: 5,
  22. Data: alloc.NewSmallBuffer().Clear().Append([]byte{'a', 'b', 'c', 'd'}),
  23. }
  24. nBytes := seg.ByteSize()
  25. bytes := seg.Bytes(nil)
  26. assert.Int(len(bytes)).Equals(nBytes)
  27. iseg, _ := ReadSegment(bytes)
  28. seg2 := iseg.(*DataSegment)
  29. assert.Uint16(seg2.Conv).Equals(seg.Conv)
  30. assert.Uint32(seg2.ReceivingWindow).Equals(seg.ReceivingWindow)
  31. assert.Uint32(seg2.Timestamp).Equals(seg.Timestamp)
  32. assert.Uint32(seg2.Unacknowledged).Equals(seg.Unacknowledged)
  33. assert.Uint32(seg2.Number).Equals(seg.Number)
  34. assert.Bytes(seg2.Data.Value).Equals(seg.Data.Value)
  35. }
  36. func TestACKSegment(t *testing.T) {
  37. assert := assert.On(t)
  38. seg := &ACKSegment{
  39. Conv: 1,
  40. ReceivingWindow: 2,
  41. Unacknowledged: 3,
  42. Count: 5,
  43. NumberList: []uint32{1, 3, 5, 7, 9},
  44. TimestampList: []uint32{2, 4, 6, 8, 10},
  45. }
  46. nBytes := seg.ByteSize()
  47. bytes := seg.Bytes(nil)
  48. assert.Int(len(bytes)).Equals(nBytes)
  49. iseg, _ := ReadSegment(bytes)
  50. seg2 := iseg.(*ACKSegment)
  51. assert.Uint16(seg2.Conv).Equals(seg.Conv)
  52. assert.Uint32(seg2.ReceivingWindow).Equals(seg.ReceivingWindow)
  53. assert.Uint32(seg2.Unacknowledged).Equals(seg.Unacknowledged)
  54. assert.Byte(seg2.Count).Equals(seg.Count)
  55. for i := byte(0); i < seg2.Count; i++ {
  56. assert.Uint32(seg2.TimestampList[i]).Equals(seg.TimestampList[i])
  57. assert.Uint32(seg2.NumberList[i]).Equals(seg.NumberList[i])
  58. }
  59. }