github.com/ranjib/nomad@v0.1.1-0.20160225204057-97751b02f70b/nomad/structs/bitmap_test.go (about)

     1  package structs
     2  
     3  import "testing"
     4  
     5  func TestBitmap(t *testing.T) {
     6  	// Check invalid sizes
     7  	_, err := NewBitmap(0)
     8  	if err == nil {
     9  		t.Fatalf("bad")
    10  	}
    11  	_, err = NewBitmap(7)
    12  	if err == nil {
    13  		t.Fatalf("bad")
    14  	}
    15  
    16  	// Create a normal bitmap
    17  	b, err := NewBitmap(256)
    18  	if err != nil {
    19  		t.Fatalf("err: %v", err)
    20  	}
    21  
    22  	// Set a few bits
    23  	b.Set(0)
    24  	b.Set(255)
    25  
    26  	// Verify the bytes
    27  	if b[0] == 0 {
    28  		t.Fatalf("bad")
    29  	}
    30  	if !b.Check(0) {
    31  		t.Fatalf("bad")
    32  	}
    33  
    34  	// Verify the bytes
    35  	if b[len(b)-1] == 0 {
    36  		t.Fatalf("bad")
    37  	}
    38  	if !b.Check(255) {
    39  		t.Fatalf("bad")
    40  	}
    41  
    42  	// All other bits should be unset
    43  	for i := 1; i < 255; i++ {
    44  		if b.Check(uint(i)) {
    45  			t.Fatalf("bad")
    46  		}
    47  	}
    48  
    49  	// Clear
    50  	b.Clear()
    51  
    52  	// All bits should be unset
    53  	for i := 0; i < 256; i++ {
    54  		if b.Check(uint(i)) {
    55  			t.Fatalf("bad")
    56  		}
    57  	}
    58  }