github.com/songzhibin97/go-baseutils@v0.0.2-0.20240302024150-487d8ce9c082/structure/sets/skipset/flag_test.go (about)

     1  package skipset
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  func TestFlag(t *testing.T) {
     8  	// Correctness.
     9  	const (
    10  		f0 = 1 << iota
    11  		f1
    12  		f2
    13  		f3
    14  		f4
    15  		f5
    16  		f6
    17  		f7
    18  	)
    19  	x := &bitflag{}
    20  
    21  	x.SetTrue(f1 | f3)
    22  	if x.Get(f0) || !x.Get(f1) || x.Get(f2) || !x.Get(f3) || !x.MGet(f0|f1|f2|f3, f1|f3) {
    23  		t.Fatal("invalid")
    24  	}
    25  	x.SetTrue(f1)
    26  	x.SetTrue(f1 | f3)
    27  	if x.data != f1+f3 {
    28  		t.Fatal("invalid")
    29  	}
    30  
    31  	x.SetFalse(f1 | f2)
    32  	if x.Get(f0) || x.Get(f1) || x.Get(f2) || !x.Get(f3) || !x.MGet(f0|f1|f2|f3, f3) {
    33  		t.Fatal("invalid")
    34  	}
    35  	x.SetFalse(f1 | f2)
    36  	if x.data != f3 {
    37  		t.Fatal("invalid")
    38  	}
    39  }