OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [net/] [pipe_test.go] - Blame information for rev 747

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 747 jeremybenn
// Copyright 2010 The Go Authors.  All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
4
 
5
package net
6
 
7
import (
8
        "bytes"
9
        "io"
10
        "testing"
11
)
12
 
13
func checkWrite(t *testing.T, w io.Writer, data []byte, c chan int) {
14
        n, err := w.Write(data)
15
        if err != nil {
16
                t.Errorf("write: %v", err)
17
        }
18
        if n != len(data) {
19
                t.Errorf("short write: %d != %d", n, len(data))
20
        }
21
        c <- 0
22
}
23
 
24
func checkRead(t *testing.T, r io.Reader, data []byte, wantErr error) {
25
        buf := make([]byte, len(data)+10)
26
        n, err := r.Read(buf)
27
        if err != wantErr {
28
                t.Errorf("read: %v", err)
29
                return
30
        }
31
        if n != len(data) || !bytes.Equal(buf[0:n], data) {
32
                t.Errorf("bad read: got %q", buf[0:n])
33
                return
34
        }
35
}
36
 
37
// Test a simple read/write/close sequence.
38
// Assumes that the underlying io.Pipe implementation
39
// is solid and we're just testing the net wrapping.
40
 
41
func TestPipe(t *testing.T) {
42
        c := make(chan int)
43
        cli, srv := Pipe()
44
        go checkWrite(t, cli, []byte("hello, world"), c)
45
        checkRead(t, srv, []byte("hello, world"), nil)
46
        <-c
47
        go checkWrite(t, srv, []byte("line 2"), c)
48
        checkRead(t, cli, []byte("line 2"), nil)
49
        <-c
50
        go checkWrite(t, cli, []byte("a third line"), c)
51
        checkRead(t, srv, []byte("a third line"), nil)
52
        <-c
53
        go srv.Close()
54
        checkRead(t, cli, nil, io.EOF)
55
        cli.Close()
56
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.