mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2025-02-10 10:36:42 -05:00
stream writer and stream writer test:
- fixed typo - cut PushBits... methods - removed magic number
This commit is contained in:
parent
98c38b0dbf
commit
8a087dba6c
@ -34,7 +34,7 @@ func (v *StreamWriter) PushBytes(b ...byte) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// PushBit pushes single bit into stream
|
// PushBit pushes single bit into stream
|
||||||
// WARNING: if you'll use PushBit, offset'll be less then 7, and if you'll
|
// WARNING: if you'll use PushBit, offset'll be less than 8, and if you'll
|
||||||
// use another Push... method, bits'll not be pushed
|
// use another Push... method, bits'll not be pushed
|
||||||
func (v *StreamWriter) PushBit(b bool) {
|
func (v *StreamWriter) PushBit(b bool) {
|
||||||
if b {
|
if b {
|
||||||
@ -54,17 +54,12 @@ func (v *StreamWriter) PushBit(b bool) {
|
|||||||
// PushBits pushes bits (with max range 8)
|
// PushBits pushes bits (with max range 8)
|
||||||
func (v *StreamWriter) PushBits(b byte, bits int) {
|
func (v *StreamWriter) PushBits(b byte, bits int) {
|
||||||
if bits > bitsPerByte {
|
if bits > bitsPerByte {
|
||||||
log.Print("input bits number must be less (or equal) then 8")
|
log.Print("input bits number must be less (or equal) than 8")
|
||||||
}
|
}
|
||||||
|
|
||||||
val := b
|
val := b
|
||||||
for i := 0; i < bits; i++ {
|
for i := 0; i < bits; i++ {
|
||||||
if val&1 == 1 {
|
v.PushBit(val&1 == 1)
|
||||||
v.PushBit(true)
|
|
||||||
} else {
|
|
||||||
v.PushBit(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
val >>= 1
|
val >>= 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -72,17 +67,12 @@ func (v *StreamWriter) PushBits(b byte, bits int) {
|
|||||||
// PushBits16 pushes bits (with max range 16)
|
// PushBits16 pushes bits (with max range 16)
|
||||||
func (v *StreamWriter) PushBits16(b uint16, bits int) {
|
func (v *StreamWriter) PushBits16(b uint16, bits int) {
|
||||||
if bits > bitsPerByte*bytesPerint16 {
|
if bits > bitsPerByte*bytesPerint16 {
|
||||||
log.Print("input bits number must be less (or equal) then 16")
|
log.Print("input bits number must be less (or equal) than 16")
|
||||||
}
|
}
|
||||||
|
|
||||||
val := b
|
val := b
|
||||||
for i := 0; i < bits; i++ {
|
for i := 0; i < bits; i++ {
|
||||||
if val&1 == 1 {
|
v.PushBit(val&1 == 1)
|
||||||
v.PushBit(true)
|
|
||||||
} else {
|
|
||||||
v.PushBit(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
val >>= 1
|
val >>= 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -90,17 +80,12 @@ func (v *StreamWriter) PushBits16(b uint16, bits int) {
|
|||||||
// PushBits32 pushes bits (with max range 32)
|
// PushBits32 pushes bits (with max range 32)
|
||||||
func (v *StreamWriter) PushBits32(b uint32, bits int) {
|
func (v *StreamWriter) PushBits32(b uint32, bits int) {
|
||||||
if bits > bitsPerByte*bytesPerint32 {
|
if bits > bitsPerByte*bytesPerint32 {
|
||||||
log.Print("input bits number must be less (or equal) then 32")
|
log.Print("input bits number must be less (or equal) than 32")
|
||||||
}
|
}
|
||||||
|
|
||||||
val := b
|
val := b
|
||||||
for i := 0; i < bits; i++ {
|
for i := 0; i < bits; i++ {
|
||||||
if val&1 == 1 {
|
v.PushBit(val&1 == 1)
|
||||||
v.PushBit(true)
|
|
||||||
} else {
|
|
||||||
v.PushBit(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
val >>= 1
|
val >>= 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,9 @@ func TestStreamWriterBits16(t *testing.T) {
|
|||||||
output := sr.GetBytes()
|
output := sr.GetBytes()
|
||||||
|
|
||||||
for i, d := range data {
|
for i, d := range data {
|
||||||
outputInt := uint16(output[bytesPerint16*i]) | uint16(output[bytesPerint16*i+1])<<8
|
// nolint:gomnd // offset in byte slice; bit shifts for uint16
|
||||||
|
outputInt := uint16(output[bytesPerint16*i]) |
|
||||||
|
uint16(output[bytesPerint16*i+1])<<8
|
||||||
if outputInt != d {
|
if outputInt != d {
|
||||||
t.Fatalf("sr.PushBits16() pushed %X, but wrote %X instead", d, output[i])
|
t.Fatalf("sr.PushBits16() pushed %X, but wrote %X instead", d, output[i])
|
||||||
}
|
}
|
||||||
@ -49,6 +51,7 @@ func TestStreamWriterBits32(t *testing.T) {
|
|||||||
output := sr.GetBytes()
|
output := sr.GetBytes()
|
||||||
|
|
||||||
for i, d := range data {
|
for i, d := range data {
|
||||||
|
// nolint:gomnd // offset in byte slice; bit shifts for uint32
|
||||||
outputInt := uint32(output[bytesPerint32*i]) |
|
outputInt := uint32(output[bytesPerint32*i]) |
|
||||||
uint32(output[bytesPerint32*i+1])<<8 |
|
uint32(output[bytesPerint32*i+1])<<8 |
|
||||||
uint32(output[bytesPerint32*i+2])<<16 |
|
uint32(output[bytesPerint32*i+2])<<16 |
|
||||||
|
Loading…
Reference in New Issue
Block a user