github.com/gopacket/gopacket@v1.1.0/layers/bitfield_test.go (about)

     1  package layers
     2  
     3  import "testing"
     4  
     5  func TestBitfield(t *testing.T) {
     6  	var b bitfield
     7  
     8  	const uint16Max = ^uint16(0)
     9  
    10  	for i := uint16(0); i < uint16Max; i++ {
    11  		if b.has(i) {
    12  			t.Errorf("b.has(%d) expected false, got true", i)
    13  		}
    14  	}
    15  
    16  	b.set(0)
    17  	if !b.has(0) {
    18  		t.Error("b.has(0) expected true, got false")
    19  	}
    20  
    21  	for i := uint16(1); i < uint16Max; i++ {
    22  		if b.has(i) {
    23  			t.Errorf("b.has(%d) expected false, got true", i)
    24  		}
    25  	}
    26  }
    27  
    28  func TestBitfieldStressTest(t *testing.T) {
    29  	for i := 0; i < 7; i++ {
    30  		var b bitfield
    31  		for j := i; j < 64*1024; j += 7 {
    32  			b.set(uint16(j))
    33  		}
    34  		for j := 0; j < 64&1024; j++ {
    35  			want := j%7 == i
    36  			if got := b.has(uint16(j)); got != want {
    37  				t.Errorf("Test %d bit %d: got %v want %v", i, j, got, want)
    38  			}
    39  		}
    40  	}
    41  }