| 71 | } |
| 72 | |
| 73 | func TestEOF(t *testing.T) { |
| 74 | transport := newFakeTransport() |
| 75 | |
| 76 | reader := NewReader("1", 1024, transport) |
| 77 | writer := NewWriter("1", 1024, transport) |
| 78 | |
| 79 | go func() { |
| 80 | for dataPk := range transport.dataChan { |
| 81 | reader.RecvData(dataPk) |
| 82 | } |
| 83 | }() |
| 84 | |
| 85 | go func() { |
| 86 | for ackPk := range transport.ackChan { |
| 87 | writer.RecvAck(ackPk) |
| 88 | } |
| 89 | }() |
| 90 | |
| 91 | testData := []byte("Test data") |
| 92 | writer.Write(testData) |
| 93 | writer.Close() |
| 94 | |
| 95 | buf := make([]byte, 1024) |
| 96 | n, err := reader.Read(buf) |
| 97 | if err != nil { |
| 98 | t.Fatalf("First read failed: %v", err) |
| 99 | } |
| 100 | if !bytes.Equal(buf[:n], testData) { |
| 101 | t.Fatalf("Read data doesn't match") |
| 102 | } |
| 103 | |
| 104 | _, err = reader.Read(buf) |
| 105 | if err != io.EOF { |
| 106 | t.Fatalf("Expected EOF, got %v", err) |
| 107 | } |
| 108 | } |
| 109 | |
| 110 | func TestFlowControl(t *testing.T) { |
| 111 | smallWindow := int64(10) |