|
|
@@ -0,0 +1,50 @@
|
|
|
+package buf_test
|
|
|
+
|
|
|
+import (
|
|
|
+ "crypto/tls"
|
|
|
+ "io"
|
|
|
+ "testing"
|
|
|
+
|
|
|
+ . "v2ray.com/core/common/buf"
|
|
|
+ "v2ray.com/core/common/net"
|
|
|
+ "v2ray.com/core/testing/servers/tcp"
|
|
|
+)
|
|
|
+
|
|
|
+func TestWriterCreation(t *testing.T) {
|
|
|
+ tcpServer := tcp.Server{}
|
|
|
+ dest, err := tcpServer.Start()
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal("failed to start tcp server: ", err)
|
|
|
+ }
|
|
|
+ defer tcpServer.Close()
|
|
|
+
|
|
|
+ conn, err := net.Dial("tcp", dest.NetAddr())
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal("failed to dial a TCP connection: ", err)
|
|
|
+ }
|
|
|
+ defer conn.Close()
|
|
|
+
|
|
|
+ {
|
|
|
+ writer := NewWriter(conn)
|
|
|
+ if _, ok := writer.(*BufferToBytesWriter); !ok {
|
|
|
+ t.Fatal("writer is not a BufferToBytesWriter")
|
|
|
+ }
|
|
|
+
|
|
|
+ writer2 := NewWriter(writer.(io.Writer))
|
|
|
+ if writer2 != writer {
|
|
|
+ t.Fatal("writer is not reused")
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ tlsConn := tls.Client(conn, &tls.Config{
|
|
|
+ InsecureSkipVerify: true,
|
|
|
+ })
|
|
|
+ defer tlsConn.Close()
|
|
|
+
|
|
|
+ {
|
|
|
+ writer := NewWriter(tlsConn)
|
|
|
+ if _, ok := writer.(*SequentialWriter); !ok {
|
|
|
+ t.Fatal("writer is not a SequentialWriter")
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|