chunk_test.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package crypto_test
  2. import (
  3. "io"
  4. "testing"
  5. "v2ray.com/core/common/buf"
  6. . "v2ray.com/core/common/crypto"
  7. . "v2ray.com/ext/assert"
  8. )
  9. func TestChunkStreamIO(t *testing.T) {
  10. assert := With(t)
  11. cache := buf.NewSize(8192)
  12. writer := NewChunkStreamWriter(PlainChunkSizeParser{}, cache)
  13. reader := NewChunkStreamReader(PlainChunkSizeParser{}, cache)
  14. b := buf.New()
  15. b.AppendBytes('a', 'b', 'c', 'd')
  16. assert(writer.WriteMultiBuffer(buf.NewMultiBufferValue(b)), IsNil)
  17. b = buf.New()
  18. b.AppendBytes('e', 'f', 'g')
  19. assert(writer.WriteMultiBuffer(buf.NewMultiBufferValue(b)), IsNil)
  20. assert(writer.WriteMultiBuffer(buf.MultiBuffer{}), IsNil)
  21. assert(cache.Len(), Equals, int32(13))
  22. mb, err := reader.ReadMultiBuffer()
  23. assert(err, IsNil)
  24. assert(mb.Len(), Equals, int32(4))
  25. assert(mb[0].Bytes(), Equals, []byte("abcd"))
  26. mb, err = reader.ReadMultiBuffer()
  27. assert(err, IsNil)
  28. assert(mb.Len(), Equals, int32(3))
  29. assert(mb[0].Bytes(), Equals, []byte("efg"))
  30. _, err = reader.ReadMultiBuffer()
  31. assert(err, Equals, io.EOF)
  32. }