github.com/HACKERALERT/Picocrypt/src/external/sys@v0.0.0-20210609020157-e519952f829f/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  }