TestAsyncBufferClose tests closing the AsyncBuffer
(t *testing.T)
| 280 | |
| 281 | // TestAsyncBufferClose tests closing the AsyncBuffer |
| 282 | func TestAsyncBufferClose(t *testing.T) { |
| 283 | _, bytesReader := generateSourceData(t, asyncbuffer.ChunkSize*4+halfChunkSize) |
| 284 | |
| 285 | // Create an AsyncBuffer with the byte slice |
| 286 | ab := asyncbuffer.New(bytesReader, -1) |
| 287 | |
| 288 | reader1 := ab.Reader() |
| 289 | reader2 := ab.Reader() |
| 290 | |
| 291 | ab.Close() |
| 292 | |
| 293 | b := make([]byte, 10) |
| 294 | _, err := reader1.Read(b) |
| 295 | require.Error(t, err, "asyncbuffer.AsyncBuffer.ReadAt: attempt to read on closed reader") |
| 296 | |
| 297 | _, err = reader2.Read(b) |
| 298 | require.Error(t, err, "asyncbuffer.AsyncBuffer.ReadAt: attempt to read on closed reader") |
| 299 | |
| 300 | // After closing the closed reader, it should not panic |
| 301 | ab.Close() |
| 302 | |
| 303 | _, err = reader2.Read(b) |
| 304 | require.Error(t, err, "asyncbuffer.AsyncBuffer.ReadAt: attempt to read on closed reader") |
| 305 | } |
| 306 | |
| 307 | // TestAsyncBufferReadAtErrAtSomePoint tests reading from AsyncBuffer using readAt method |
| 308 | // which would fail somewhere |