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  }