7
7
package gopacket
8
8
9
9
import (
10
+ "io"
10
11
"reflect"
11
12
"testing"
12
13
)
@@ -26,3 +27,36 @@ func TestDumpEmbedded(t *testing.T) {
26
27
t .Errorf ("embedded dump mismatch:\n got: %v\n want: %v" , got , want )
27
28
}
28
29
}
30
+
31
+ type singlePacketSource [1 ][]byte
32
+
33
+ func (s * singlePacketSource ) ReadPacketData () ([]byte , CaptureInfo , error ) {
34
+ if (* s )[0 ] == nil {
35
+ return nil , CaptureInfo {}, io .EOF
36
+ }
37
+ out := (* s )[0 ]
38
+ (* s )[0 ] = nil
39
+ return out , CaptureInfo {}, nil
40
+ }
41
+
42
+ func TestConcatPacketSources (t * testing.T ) {
43
+ sourceA := & singlePacketSource {[]byte {1 }}
44
+ sourceB := & singlePacketSource {[]byte {2 }}
45
+ sourceC := & singlePacketSource {[]byte {3 }}
46
+ concat := ConcatFinitePacketDataSources (sourceA , sourceB , sourceC )
47
+ a , _ , err := concat .ReadPacketData ()
48
+ if err != nil || len (a ) != 1 || a [0 ] != 1 {
49
+ t .Errorf ("expected [1], got %v/%v" , a , err )
50
+ }
51
+ b , _ , err := concat .ReadPacketData ()
52
+ if err != nil || len (b ) != 1 || b [0 ] != 2 {
53
+ t .Errorf ("expected [2], got %v/%v" , b , err )
54
+ }
55
+ c , _ , err := concat .ReadPacketData ()
56
+ if err != nil || len (c ) != 1 || c [0 ] != 3 {
57
+ t .Errorf ("expected [3], got %v/%v" , c , err )
58
+ }
59
+ if _ , _ , err := concat .ReadPacketData (); err != io .EOF {
60
+ t .Errorf ("expected io.EOF, got %v" , err )
61
+ }
62
+ }
0 commit comments