79 lines
2.0 KiB
Go
79 lines
2.0 KiB
Go
|
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
|
||
|
}
|