github.com/holoplot/go-evdev@v0.0.0-20220721205823-d31c64b9d636/bitmap_test.go (about)

     1  package evdev
     2  
     3  import (
     4  	"reflect"
     5  	"testing"
     6  )
     7  
     8  func Test_bitsToArray(t *testing.T) {
     9  	tests := []struct {
    10  		name string
    11  		bits []byte
    12  		want []int
    13  	}{
    14  		{
    15  			name: "1",
    16  			bits: []byte{0x01, 0xff},
    17  			want: []int{0, 8, 9, 10, 11, 12, 13, 14, 15},
    18  		},
    19  		{
    20  			name: "2",
    21  			bits: []byte{},
    22  			want: []int{},
    23  		},
    24  		{
    25  			name: "3",
    26  			bits: []byte{0x00, 0x00, 0x00, 0x00, 0x01},
    27  			want: []int{32},
    28  		},
    29  	}
    30  	for _, tt := range tests {
    31  		t.Run(tt.name, func(t *testing.T) {
    32  			bm := newBitmap(tt.bits)
    33  			if got := bm.setBits(); !reflect.DeepEqual(got, tt.want) {
    34  				t.Errorf("setBits() = %v, want %v", got, tt.want)
    35  			}
    36  		})
    37  	}
    38  }
    39  
    40  func Test_bitmap_bitIsSet(t *testing.T) {
    41  	tests := []struct {
    42  		name string
    43  		bits []byte
    44  		bit  int
    45  		want bool
    46  	}{
    47  		{
    48  			name: "1",
    49  			bits: []byte{0x00, 0x00, 0x00, 0x00, 0x01},
    50  			bit:  32,
    51  			want: true,
    52  		},
    53  		{
    54  			name: "2",
    55  			bits: []byte{0x00, 0x00, 0x00, 0x00, 0x01},
    56  			bit:  31,
    57  			want: false,
    58  		},
    59  	}
    60  	for _, tt := range tests {
    61  		t.Run(tt.name, func(t *testing.T) {
    62  			bm := &bitmap{
    63  				bits: tt.bits,
    64  			}
    65  			if got := bm.bitIsSet(tt.bit); got != tt.want {
    66  				t.Errorf("bitmap.bitIsSet() = %v, want %v", got, tt.want)
    67  			}
    68  		})
    69  	}
    70  }