forked from Deuxfleurs/bottin
54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
package message
|
|
|
|
import (
|
|
"testing"
|
|
"bytes"
|
|
)
|
|
|
|
func TestSizeInt64(t *testing.T) {
|
|
s := sizeInt64(0)
|
|
if s != 1 {
|
|
t.Errorf("computed size is %d, expected 1", s)
|
|
}
|
|
|
|
s = sizeInt64(127)
|
|
if s != 1 {
|
|
t.Errorf("computed size is %d, expected 1", s)
|
|
}
|
|
|
|
s = sizeInt64(128)
|
|
if s != 2 {
|
|
t.Errorf("computed size is %d, expected 2", s)
|
|
}
|
|
|
|
s = sizeInt64(50000)
|
|
if s != 3 {
|
|
t.Errorf("computed size is %d, expected 3", s)
|
|
}
|
|
|
|
s = sizeInt64(-12345)
|
|
if s != 2 {
|
|
t.Errorf("computed size is %d, expected 2", s)
|
|
}
|
|
}
|
|
|
|
func TestWriteInt64(t *testing.T) {
|
|
vtests := []int64{0, 127, 128, 50000, -12345}
|
|
expsize := []int{1, 1, 2, 3, 2}
|
|
expresult := [][]byte{{0x00}, {0x7F}, {0x00, 0x80}, {0x00, 0xc3, 0x50}, {0xcf, 0xc7}}
|
|
|
|
for idx, v := range vtests {
|
|
fs := sizeInt64(v)
|
|
b := NewBytes(fs, make([]byte, fs))
|
|
t.Log("computing", v)
|
|
s := writeInt64(b, v)
|
|
if s != expsize[idx] {
|
|
t.Errorf("computed size is %d, expected %d", s, expsize[idx])
|
|
}
|
|
if !bytes.Equal(b.Bytes(), expresult[idx]) {
|
|
t.Errorf("wrong computed bytes, got %v, expected %v", b.Bytes(), expresult[idx])
|
|
}
|
|
a, e := parseInt64(b.Bytes())
|
|
t.Log("parse", a, e)
|
|
}
|
|
}
|