mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2025-02-02 22:57:04 -05:00
Merge pull request #1094 from willroberts/bitmuncher-tests
Adds 100% test coverage for BitMuncher
This commit is contained in:
commit
421d4252d9
@ -2,46 +2,37 @@ package d2datautils
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func getTestData() []byte {
|
||||
result := []byte{33, 23, 4, 33, 192, 243}
|
||||
|
||||
return result
|
||||
}
|
||||
var testData = []byte{33, 23, 4, 33, 192, 243} //nolint:gochecknoglobals // just a test
|
||||
|
||||
func TestBitmuncherCopy(t *testing.T) {
|
||||
bm1 := CreateBitMuncher(getTestData(), 0)
|
||||
bm1 := CreateBitMuncher(testData, 0)
|
||||
bm2 := CopyBitMuncher(bm1)
|
||||
|
||||
for i := range bm1.data {
|
||||
if bm1.data[i] != bm2.data[i] {
|
||||
t.Fatal("original bitmuncher isn't equal to copied")
|
||||
}
|
||||
assert.Equal(t, bm1.data[i], bm2.data[i], "original bitmuncher isn't equal to copied")
|
||||
}
|
||||
}
|
||||
|
||||
func TestBitmuncherSetOffset(t *testing.T) {
|
||||
bm := CreateBitMuncher(getTestData(), 0)
|
||||
bm := CreateBitMuncher(testData, 0)
|
||||
bm.SetOffset(5)
|
||||
|
||||
if bm.Offset() != 5 {
|
||||
t.Fatal("Set Offset method didn't set offset to expected number")
|
||||
}
|
||||
assert.Equal(t, bm.Offset(), 5, "Set Offset method didn't set offset to expected number")
|
||||
}
|
||||
|
||||
func TestBitmuncherSteBitsRead(t *testing.T) {
|
||||
bm := CreateBitMuncher(getTestData(), 0)
|
||||
bm := CreateBitMuncher(testData, 0)
|
||||
bm.SetBitsRead(8)
|
||||
|
||||
if bm.BitsRead() != 8 {
|
||||
t.Fatal("Set bits read method didn't set bits read to expected value")
|
||||
}
|
||||
assert.Equal(t, bm.BitsRead(), 8, "Set bits read method didn't set bits read to expected value")
|
||||
}
|
||||
|
||||
func TestBitmuncherReadBit(t *testing.T) {
|
||||
td := getTestData()
|
||||
bm := CreateBitMuncher(td, 0)
|
||||
bm := CreateBitMuncher(testData, 0)
|
||||
|
||||
var result byte
|
||||
|
||||
@ -50,46 +41,67 @@ func TestBitmuncherReadBit(t *testing.T) {
|
||||
result |= byte(v) << byte(i)
|
||||
}
|
||||
|
||||
if result != td[0] {
|
||||
t.Fatal("result of rpeated 8 times get bit didn't return expected byte")
|
||||
}
|
||||
assert.Equal(t, result, testData[0], "result of rpeated 8 times get bit didn't return expected byte")
|
||||
}
|
||||
|
||||
func TestBitmuncherGetBits(t *testing.T) {
|
||||
td := getTestData()
|
||||
bm := CreateBitMuncher(td, 0)
|
||||
bm := CreateBitMuncher(testData, 0)
|
||||
|
||||
res := bm.GetBits(bitsPerByte)
|
||||
|
||||
if byte(res) != td[0] {
|
||||
t.Fatal("get bits didn't return expected value")
|
||||
assert.Equal(t, byte(bm.GetBits(bitsPerByte)), testData[0], "get bits didn't return expected value")
|
||||
}
|
||||
|
||||
func TestBitmuncherGetNoBits(t *testing.T) {
|
||||
bm := CreateBitMuncher(testData, 0)
|
||||
|
||||
assert.Equal(t, bm.GetBits(0), uint32(0), "get bits didn't return expected value: 0")
|
||||
}
|
||||
|
||||
func TestBitmuncherGetSignedBits(t *testing.T) {
|
||||
bm := CreateBitMuncher(testData, 0)
|
||||
|
||||
assert.Equal(t, bm.GetSignedBits(6), -31, "get signed bits didn't return expected value")
|
||||
}
|
||||
|
||||
func TestBitmuncherGetNoSignedBits(t *testing.T) {
|
||||
bm := CreateBitMuncher(testData, 0)
|
||||
|
||||
assert.Equal(t, bm.GetSignedBits(0), 0, "get signed bits didn't return expected value")
|
||||
}
|
||||
|
||||
func TestBitmuncherGetOneSignedBit(t *testing.T) {
|
||||
bm := CreateBitMuncher(testData, 0)
|
||||
|
||||
assert.Equal(t, bm.GetSignedBits(1), -1, "get signed bits didn't return expected value")
|
||||
}
|
||||
|
||||
func TestBitmuncherSkipBits(t *testing.T) {
|
||||
td := getTestData()
|
||||
bm := CreateBitMuncher(td, 0)
|
||||
bm := CreateBitMuncher(testData, 0)
|
||||
|
||||
bm.SkipBits(bitsPerByte)
|
||||
|
||||
if bm.GetByte() != td[1] {
|
||||
t.Fatal("skipping 8 bits didn't moved bit muncher's position into next byte")
|
||||
}
|
||||
assert.Equal(t, bm.GetByte(), testData[1], "skipping 8 bits didn't moved bit muncher's position into next byte")
|
||||
}
|
||||
|
||||
func TestBitmuncherGetInt32(t *testing.T) {
|
||||
td := getTestData()
|
||||
bm := CreateBitMuncher(td, 0)
|
||||
bm := CreateBitMuncher(testData, 0)
|
||||
|
||||
var testInt int32
|
||||
|
||||
for i := 0; i < bytesPerint32; i++ {
|
||||
testInt |= int32(td[i]) << int32(bitsPerByte*i)
|
||||
testInt |= int32(testData[i]) << int32(bitsPerByte*i)
|
||||
}
|
||||
|
||||
bmInt := bm.GetInt32()
|
||||
assert.Equal(t, bm.GetInt32(), testInt, "int32 value wasn't returned properly")
|
||||
}
|
||||
|
||||
if bmInt != testInt {
|
||||
t.Fatal("int32 value wasn't returned properly")
|
||||
func TestBitmuncherGetUint32(t *testing.T) {
|
||||
bm := CreateBitMuncher(testData, 0)
|
||||
|
||||
var testUint uint32
|
||||
|
||||
for i := 0; i < bytesPerint32; i++ {
|
||||
testUint |= uint32(testData[i]) << uint32(bitsPerByte*i)
|
||||
}
|
||||
|
||||
assert.Equal(t, bm.GetUInt32(), testUint, "uint32 value wasn't returned properly")
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user