blob: 85711ef1b70df50dcd60010a408c1672a6ea8d2f [file] [log] [blame]
Dave Cheney8c2b1312012-10-17 09:41:00 +11001// Copyright 2012 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
Mikio Haraa877e812014-12-31 10:08:51 +09005// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
Dave Cheney8c2b1312012-10-17 09:41:00 +11006
7package net
8
9import (
Dave Cheney28b599422012-11-28 11:29:25 +110010 "io"
11 "syscall"
Dave Cheney8c2b1312012-10-17 09:41:00 +110012 "testing"
13)
14
Mikio Haraa877e812014-12-31 10:08:51 +090015var eofErrorTests = []struct {
Dave Cheney28b599422012-11-28 11:29:25 +110016 n int
17 err error
18 fd *netFD
19 expected error
20}{
Dave Cheney28b599422012-11-28 11:29:25 +110021 {100, nil, &netFD{sotype: syscall.SOCK_STREAM}, nil},
22 {100, io.EOF, &netFD{sotype: syscall.SOCK_STREAM}, io.EOF},
23 {100, errClosing, &netFD{sotype: syscall.SOCK_STREAM}, errClosing},
24 {0, nil, &netFD{sotype: syscall.SOCK_STREAM}, io.EOF},
25 {0, io.EOF, &netFD{sotype: syscall.SOCK_STREAM}, io.EOF},
26 {0, errClosing, &netFD{sotype: syscall.SOCK_STREAM}, errClosing},
27
28 {100, nil, &netFD{sotype: syscall.SOCK_DGRAM}, nil},
29 {100, io.EOF, &netFD{sotype: syscall.SOCK_DGRAM}, io.EOF},
30 {100, errClosing, &netFD{sotype: syscall.SOCK_DGRAM}, errClosing},
31 {0, nil, &netFD{sotype: syscall.SOCK_DGRAM}, nil},
32 {0, io.EOF, &netFD{sotype: syscall.SOCK_DGRAM}, io.EOF},
33 {0, errClosing, &netFD{sotype: syscall.SOCK_DGRAM}, errClosing},
34
35 {100, nil, &netFD{sotype: syscall.SOCK_SEQPACKET}, nil},
36 {100, io.EOF, &netFD{sotype: syscall.SOCK_SEQPACKET}, io.EOF},
37 {100, errClosing, &netFD{sotype: syscall.SOCK_SEQPACKET}, errClosing},
38 {0, nil, &netFD{sotype: syscall.SOCK_SEQPACKET}, io.EOF},
39 {0, io.EOF, &netFD{sotype: syscall.SOCK_SEQPACKET}, io.EOF},
40 {0, errClosing, &netFD{sotype: syscall.SOCK_SEQPACKET}, errClosing},
41
42 {100, nil, &netFD{sotype: syscall.SOCK_RAW}, nil},
43 {100, io.EOF, &netFD{sotype: syscall.SOCK_RAW}, io.EOF},
44 {100, errClosing, &netFD{sotype: syscall.SOCK_RAW}, errClosing},
45 {0, nil, &netFD{sotype: syscall.SOCK_RAW}, nil},
46 {0, io.EOF, &netFD{sotype: syscall.SOCK_RAW}, io.EOF},
47 {0, errClosing, &netFD{sotype: syscall.SOCK_RAW}, errClosing},
48}
49
Mikio Haraa877e812014-12-31 10:08:51 +090050func TestEOFError(t *testing.T) {
51 for _, tt := range eofErrorTests {
52 actual := tt.fd.eofError(tt.n, tt.err)
Dave Cheney28b599422012-11-28 11:29:25 +110053 if actual != tt.expected {
Mikio Haraa877e812014-12-31 10:08:51 +090054 t.Errorf("eofError(%v, %v, %v): expected %v, actual %v", tt.n, tt.err, tt.fd.sotype, tt.expected, actual)
Dave Cheney28b599422012-11-28 11:29:25 +110055 }
56 }
57}