package d2datautils import ( "testing" ) func getTestData() []byte { result := []byte{33, 23, 4, 33, 192, 243} return result } func TestBitmuncherCopy(t *testing.T) { bm1 := CreateBitMuncher(getTestData(), 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") } } } func TestBitmuncherSetOffset(t *testing.T) { bm := CreateBitMuncher(getTestData(), 0) bm.SetOffset(5) if bm.Offset() != 5 { t.Fatal("Set Offset method didn't set offset to expected number") } } func TestBitmuncherSteBitsRead(t *testing.T) { bm := CreateBitMuncher(getTestData(), 0) bm.SetBitsRead(8) if bm.BitsRead() != 8 { t.Fatal("Set bits read method didn't set bits read to expected value") } } func TestBitmuncherReadBit(t *testing.T) { td := getTestData() bm := CreateBitMuncher(td, 0) var result byte for i := 0; i < bitsPerByte; i++ { v := bm.GetBit() result |= byte(v) << byte(i) } if result != td[0] { t.Fatal("result of rpeated 8 times get bit didn't return expected byte") } } func TestBitmuncherGetBits(t *testing.T) { td := getTestData() bm := CreateBitMuncher(td, 0) res := bm.GetBits(bitsPerByte) if byte(res) != td[0] { t.Fatal("get bits didn't return expected value") } } func TestBitmuncherSkipBits(t *testing.T) { td := getTestData() bm := CreateBitMuncher(td, 0) bm.SkipBits(bitsPerByte) if bm.GetByte() != td[1] { t.Fatal("skipping 8 bits didn't moved bit muncher's position into next byte") } } func TestBitmuncherGetInt32(t *testing.T) { td := getTestData() bm := CreateBitMuncher(td, 0) var testInt int32 for i := 0; i < bytesPerint32; i++ { testInt |= int32(td[i]) << int32(bitsPerByte*i) } bmInt := bm.GetInt32() if bmInt != testInt { t.Fatal("int32 value wasn't returned properly") } }