mirror of
https://bitbucket.org/s_l_teichmann/mtsatellite
synced 2025-07-06 01:50:42 +02:00
Made encode/decode api more symmetric. Added some unit test for the encoders/decoders.
This commit is contained in:
@ -2,11 +2,10 @@ package common
|
||||
|
||||
import "testing"
|
||||
|
||||
//var data = []int16{-2}
|
||||
var data = []int16{
|
||||
-2045, -1850, -1811, -1629, -1104,
|
||||
-967, -725, -646, -329, -212,
|
||||
-150, 88, 524, 527, 549,
|
||||
-150, -1, 0, 1, 88, 524, 527, 549,
|
||||
1783, 1817, 1826, 2028, 2032}
|
||||
|
||||
func allData(f func(int16, int16, int16)) {
|
||||
@ -19,6 +18,50 @@ func allData(f func(int16, int16, int16)) {
|
||||
}
|
||||
}
|
||||
|
||||
func checkEncodeDecode(
|
||||
desc string,
|
||||
join KeyJoiner,
|
||||
encode KeyEncoder, decode KeyDecoder,
|
||||
x, y, z int16, t *testing.T) {
|
||||
|
||||
k1 := join(x, y, z)
|
||||
var err error
|
||||
var b []byte
|
||||
if b, err = encode(k1); err != nil {
|
||||
t.Errorf("%s: Failed to encode (%d, %d, %d) %s\n",
|
||||
desc, x, y, z, err)
|
||||
return
|
||||
}
|
||||
var k2 int64
|
||||
if k2, err = decode(b); err != nil {
|
||||
t.Errorf("%s: Failed to decode (%d, %d, %d) %s\n",
|
||||
desc, x, y, z, err)
|
||||
return
|
||||
}
|
||||
|
||||
if k1 != k2 {
|
||||
t.Errorf("%s: Expected %d got %d for (%d, %d, %d) %b\n",
|
||||
desc, k1, k2, x, y, z)
|
||||
}
|
||||
}
|
||||
|
||||
func TestEncodeDecode(t *testing.T) {
|
||||
allData(func(x, y, z int16) {
|
||||
checkEncodeDecode(
|
||||
"Big endian",
|
||||
XYZToInterleaved,
|
||||
EncodeToBigEndian, DecodeFromBigEndian,
|
||||
x, y, z, t)
|
||||
})
|
||||
allData(func(x, y, z int16) {
|
||||
checkEncodeDecode(
|
||||
"String",
|
||||
XYZToInterleaved,
|
||||
EncodeStringToBytes, DecodeStringFromBytes,
|
||||
x, y, z, t)
|
||||
})
|
||||
}
|
||||
|
||||
func checkJoinSplit(
|
||||
desc string,
|
||||
join KeyJoiner, split KeySplitter,
|
||||
|
Reference in New Issue
Block a user