package yamux import ( "io" "testing" ) type pipeConn struct { reader *io.PipeReader writer *io.PipeWriter } func (p *pipeConn) Read(b []byte) (int, error) { return p.reader.Read(b) } func (p *pipeConn) Write(b []byte) (int, error) { return p.writer.Write(b) } func (p *pipeConn) Close() error { p.reader.Close() return p.writer.Close() } func testConn() (io.ReadWriteCloser, io.ReadWriteCloser) { read1, write1 := io.Pipe() read2, write2 := io.Pipe() return &pipeConn{read1, write2}, &pipeConn{read2, write1} } func TestPing(t *testing.T) { conn1, conn2 := testConn() client := Client(conn1, nil) defer client.Close() server := Server(conn2, nil) defer server.Close() rtt, err := client.Ping() if err != nil { t.Fatalf("err: %v", err) } if rtt == 0 { t.Fatalf("bad: %v", rtt) } rtt, err = server.Ping() if err != nil { t.Fatalf("err: %v", err) } if rtt == 0 { t.Fatalf("bad: %v", rtt) } }