Skip to content

Commit de8493d

Browse files
cmagliematteosuppo
authored andcommitted
Added 100% coverage test for cancelableReader
1 parent a7efd3f commit de8493d

1 file changed

Lines changed: 63 additions & 0 deletions

File tree

cancelable_reader_test.go

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package extract
2+
3+
import (
4+
"bytes"
5+
"context"
6+
"fmt"
7+
"testing"
8+
"time"
9+
10+
"github.com/stretchr/testify/require"
11+
)
12+
13+
func TestCancelableReader(t *testing.T) {
14+
var b [100000]byte
15+
ctx, cancel := context.WithCancel(context.Background())
16+
reader := newCancelableReader(ctx, bytes.NewReader(b[:]))
17+
defer cancel()
18+
19+
var buff [1000]byte
20+
readed := 0
21+
for {
22+
n, err := reader.Read(buff[:])
23+
if err != nil {
24+
fmt.Println("exit error:", err)
25+
require.Equal(t, "EOF", err.Error())
26+
break
27+
}
28+
require.NotZero(t, n)
29+
time.Sleep(10 * time.Millisecond)
30+
readed += n
31+
}
32+
33+
fmt.Println("Readed", readed, "out of", len(b))
34+
require.Equal(t, len(b), readed)
35+
}
36+
37+
func TestCancelableReaderWithInterruption(t *testing.T) {
38+
var b [100000]byte
39+
ctx, cancel := context.WithCancel(context.Background())
40+
reader := newCancelableReader(ctx, bytes.NewReader(b[:]))
41+
defer cancel()
42+
43+
go func() {
44+
time.Sleep(100 * time.Millisecond)
45+
cancel()
46+
}()
47+
48+
var buff [1000]byte
49+
readed := 0
50+
for {
51+
n, err := reader.Read(buff[:])
52+
if err != nil {
53+
fmt.Println("exit error:", err)
54+
require.Equal(t, "interrupted", err.Error())
55+
break
56+
}
57+
require.NotZero(t, n)
58+
time.Sleep(10 * time.Millisecond)
59+
readed += n
60+
}
61+
fmt.Println("Readed", readed, "out of", len(b))
62+
require.True(t, readed < len(b))
63+
}

0 commit comments

Comments
 (0)