github.com/etecs-ru/go-sys-wineventlog@v0.0.0-20210227233244-4c3abb794018/unix/fdset_test.go (about) 1 // Copyright 2019 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 5 //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris 6 // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris 7 8 package unix_test 9 10 import ( 11 "testing" 12 13 "golang.org/x/sys/unix" 14 ) 15 16 func TestFdSet(t *testing.T) { 17 var fdSet unix.FdSet 18 fdSet.Zero() 19 for fd := 0; fd < unix.FD_SETSIZE; fd++ { 20 if fdSet.IsSet(fd) { 21 t.Fatalf("Zero did not clear fd %d", fd) 22 } 23 fdSet.Set(fd) 24 } 25 26 for fd := 0; fd < unix.FD_SETSIZE; fd++ { 27 if !fdSet.IsSet(fd) { 28 t.Fatalf("IsSet(%d): expected true, got false", fd) 29 } 30 } 31 32 fdSet.Zero() 33 for fd := 0; fd < unix.FD_SETSIZE; fd++ { 34 if fdSet.IsSet(fd) { 35 t.Fatalf("Zero did not clear fd %d", fd) 36 } 37 } 38 39 for fd := 1; fd < unix.FD_SETSIZE; fd += 2 { 40 fdSet.Set(fd) 41 } 42 43 for fd := 0; fd < unix.FD_SETSIZE; fd++ { 44 if fd&0x1 == 0x1 { 45 if !fdSet.IsSet(fd) { 46 t.Fatalf("IsSet(%d): expected true, got false", fd) 47 } 48 } else { 49 if fdSet.IsSet(fd) { 50 t.Fatalf("IsSet(%d): expected false, got true", fd) 51 } 52 } 53 } 54 55 for fd := 1; fd < unix.FD_SETSIZE; fd += 2 { 56 fdSet.Clear(fd) 57 } 58 59 for fd := 0; fd < unix.FD_SETSIZE; fd++ { 60 if fdSet.IsSet(fd) { 61 t.Fatalf("Clear(%d) did not clear fd", fd) 62 } 63 } 64 }