github.com/codingeasygo/util@v0.0.0-20231206062002-1ce2f004b7d9/xio/echo_test.go (about) 1 package xio 2 3 import ( 4 "fmt" 5 "testing" 6 "time" 7 ) 8 9 func TestEcho(t *testing.T) { 10 echo := NewEchoConn() 11 buffer := make([]byte, 1024) 12 go func() { 13 fmt.Fprintf(echo, "%v", "abc") 14 }() 15 n, err := echo.Read(buffer) 16 if err != nil || n != 3 { 17 t.Error(err) 18 return 19 } 20 echo.Close() 21 echo.LocalAddr() 22 echo.RemoteAddr() 23 echo.SetDeadline(time.Now()) 24 echo.SetReadDeadline(time.Now()) 25 echo.SetWriteDeadline(time.Now()) 26 echo.Network() 27 fmt.Println(echo.String()) 28 // 29 conna, connb, _ := CreatePipedConn() 30 dialer := NewEchoDialer() 31 piper, _ := dialer.DialPiper("xxx", 1024) 32 waiter := make(chan int, 1) 33 go func() { 34 piper.PipeConn(connb, "xxx") 35 piper.Close() 36 waiter <- 1 37 }() 38 fmt.Fprintf(conna, "abc") 39 err = FullBuffer(conna, buffer, 3, nil) 40 if err != nil || string(buffer[0:3]) != "abc" { 41 t.Error(err) 42 return 43 } 44 conna.Close() 45 <-waiter 46 dialer.Dial("", "") 47 }