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/core/testing/assert"
  8. )
  9. func TestChunkStreamIO(t *testing.T) {
  10. assert := assert.On(t)
  11. cache := buf.NewLocal(8192)
  12. writer := NewChunkStreamWriter(PlainChunkSizeParser{}, cache)
  13. reader := NewChunkStreamReader(PlainChunkSizeParser{}, cache)
  14. b := buf.New()
  15. b.AppendBytes('a', 'b', 'c', 'd')
  16. assert.Error(writer.Write(buf.NewMultiBufferValue(b))).IsNil()
  17. b = buf.New()
  18. b.AppendBytes('e', 'f', 'g')
  19. assert.Error(writer.Write(buf.NewMultiBufferValue(b))).IsNil()
  20. assert.Error(writer.Write(buf.NewMultiBuffer())).IsNil()
  21. assert.Int(cache.Len()).Equals(13)
  22. mb, err := reader.Read()
  23. assert.Error(err).IsNil()
  24. assert.Int(mb.Len()).Equals(4)
  25. assert.Bytes(mb[0].Bytes()).Equals([]byte("abcd"))
  26. mb, err = reader.Read()
  27. assert.Error(err).IsNil()
  28. assert.Int(mb.Len()).Equals(3)
  29. assert.Bytes(mb[0].Bytes()).Equals([]byte("efg"))
  30. _, err = reader.Read()
  31. assert.Error(err).Equals(io.EOF)
  32. }