package usecase import ( "testing" "github.com/stretchr/testify/assert" ) func TestBitmap_SetTrueAndIsTrue(t *testing.T) { tests := []struct { name string bitPos uint32 expected bool }{ {"Set bit 0 to true", 0, true}, {"Set bit 1 to true", 1, true}, {"Set bit 63 to true", 63, true}, {"Set bit 64 to true", 64, true}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { bitmap := MakeBitmapWithBitSize(128) // 初始化一個 128 位的 Bitmap bitmap.SetTrue(tt.bitPos) result := bitmap.IsTrue(tt.bitPos) assert.Equal(t, tt.expected, result) }) } } func TestBitmap_SetFalse(t *testing.T) { tests := []struct { name string bitPos uint32 expected bool }{ {"Set bit 0 to false", 0, false}, {"Set bit 1 to false", 1, false}, {"Set bit 63 to false", 63, false}, {"Set bit 64 to false", 64, false}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { bitmap := MakeBitmapWithBitSize(128) // 初始化一個 128 位的 Bitmap bitmap.SetTrue(tt.bitPos) // 先設置該 bit 為 true bitmap.SetFalse(tt.bitPos) // 然後設置該 bit 為 false result := bitmap.IsTrue(tt.bitPos) assert.Equal(t, tt.expected, result) }) } } func TestBitmap_Reset(t *testing.T) { bitmap := MakeBitmapWithBitSize(128) // 初始化一個 128 位的 Bitmap bitmap.SetTrue(0) bitmap.SetTrue(64) // 確認 bit 0 和 bit 64 是 true assert.True(t, bitmap.IsTrue(0)) assert.True(t, bitmap.IsTrue(64)) bitmap.Reset() // 重置位圖 // 確認所有的位都已經重置為 false assert.False(t, bitmap.IsTrue(0)) assert.False(t, bitmap.IsTrue(64)) } func TestBitmap_ByteSize(t *testing.T) { bitmap := MakeBitmapWithBitSize(64) // 初始化一個 64 位的 Bitmap assert.Equal(t, 8, bitmap.ByteSize(0)) // 64 位應該佔用 8 個 byte } func TestBitmap_BitSize(t *testing.T) { bitmap := MakeBitmapWithBitSize(128) // 初始化一個 128 位的 Bitmap assert.Equal(t, 128, bitmap.BitSize(0)) // 128 位應該有 128 個 bit }