| 190 | } |
| 191 | |
| 192 | func TestClientWriteChunked(t *testing.T) { |
| 193 | client, server := net.Pipe() |
| 194 | defer server.Close() |
| 195 | |
| 196 | c := &Client{ |
| 197 | config: Config{Version: 2, Chunked: true}, |
| 198 | conn: client, |
| 199 | logger: slog.Default(), |
| 200 | } |
| 201 | |
| 202 | data := []byte{0xD3, 0x00, 0x04, 0x3E, 0xD0, 0x00, 0x03} // 7 bytes |
| 203 | go func() { |
| 204 | n, err := c.Write(data) |
| 205 | require.NoError(t, err) |
| 206 | require.Equal(t, len(data), n) |
| 207 | }() |
| 208 | |
| 209 | reader := bufio.NewReader(server) |
| 210 | sizeLine, err := reader.ReadString('\n') |
| 211 | require.NoError(t, err) |
| 212 | require.Equal(t, "7\r\n", sizeLine) // chunk size in hex |
| 213 | |
| 214 | buf := make([]byte, len(data)) |
| 215 | _, err = io.ReadFull(reader, buf) |
| 216 | require.NoError(t, err) |
| 217 | require.Equal(t, data, buf) |
| 218 | |
| 219 | crlf := make([]byte, 2) |
| 220 | _, err = io.ReadFull(reader, crlf) |
| 221 | require.NoError(t, err) |
| 222 | require.Equal(t, "\r\n", string(crlf)) |
| 223 | } |
| 224 | |
| 225 | func TestClientWriteNotConnected(t *testing.T) { |
| 226 | c := NewClient(Config{Caster: "localhost:2101", Mountpoint: "/M", Password: "p"}) |