mirror of
https://github.com/fumiama/unibase2n.git
synced 2026-06-18 00:50:24 +08:00
finish decode
This commit is contained in:
118
decode_test.go
118
decode_test.go
@@ -1,12 +1,33 @@
|
||||
package unibase2n
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"math/bits"
|
||||
"math/rand"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestEnDecode(t *testing.T) {
|
||||
var buf [4096]byte
|
||||
_, err := rand.Read(buf[:])
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
assert.Equal(t, 1, bits.OnesCount8(8))
|
||||
bs := Base{off: 0, til: 32768, bit: 1}
|
||||
for ; bs.bit < 16; bs.bit++ {
|
||||
for i := 1; i <= 4096; i++ {
|
||||
e := bs.Encode(buf[:i])
|
||||
d := bs.Decode(e)
|
||||
if !bytes.Equal(d, buf[:i]) {
|
||||
t.Fatal(bs.bit, i, e, d, buf[:i])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestDec128blk1(t *testing.T) {
|
||||
var in, tmp [32]byte
|
||||
_, err := rand.Read(in[:])
|
||||
@@ -20,3 +41,100 @@ func TestDec128blk1(t *testing.T) {
|
||||
dec128blk1(uint128be{0x2333233323332333, 0x2333233323332333}, out[:], tmp[:])
|
||||
assert.Equal(t, in, tmp)
|
||||
}
|
||||
|
||||
func TestDec64blk2(t *testing.T) {
|
||||
var in, tmp [32]byte
|
||||
_, err := rand.Read(in[:])
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
n, _ := Base{bit: 2}.EncodeLen(32)
|
||||
out := make([]byte, n)
|
||||
enc64blk2(0x2333233323332333, in[:], out)
|
||||
t.Log(out)
|
||||
dec64blk2(0x2333233323332333, out[:], tmp[:])
|
||||
assert.Equal(t, in, tmp)
|
||||
}
|
||||
|
||||
func TestDec32blk4(t *testing.T) {
|
||||
var in, tmp [32]byte
|
||||
_, err := rand.Read(in[:])
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
n, _ := Base{bit: 4}.EncodeLen(32)
|
||||
out := make([]byte, n)
|
||||
enc32blk4(0x23332333, in[:], out)
|
||||
t.Log(out)
|
||||
dec32blk4(0x23332333, out[:], tmp[:])
|
||||
assert.Equal(t, in, tmp)
|
||||
}
|
||||
|
||||
func TestDec16blk8(t *testing.T) {
|
||||
var in, tmp [32]byte
|
||||
_, err := rand.Read(in[:])
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
n, _ := Base{bit: 8}.EncodeLen(32)
|
||||
out := make([]byte, n)
|
||||
enc16blk8(0x2333, in[:], out)
|
||||
t.Log(out)
|
||||
dec16blk8(0x2333, out[:], tmp[:])
|
||||
assert.Equal(t, in, tmp)
|
||||
}
|
||||
|
||||
func TestDec128blk(t *testing.T) {
|
||||
var in, tmp [32]byte
|
||||
_, err := rand.Read(in[:])
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
mask := uint128be{0x2333233323332333, 0x2333233323332333}
|
||||
bs := Base{}
|
||||
for _, bit := range [...]byte{3, 5, 6, 7, 9, 11, 13, 15} {
|
||||
bs.bit = bit
|
||||
n, _ := bs.EncodeLen(32)
|
||||
out := make([]byte, n)
|
||||
enc128blk(mask, bit, in[:], out)
|
||||
t.Log(out)
|
||||
dec128blk(mask, bit, out[:], tmp[:])
|
||||
assert.Equal(t, in, tmp)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDec64blk(t *testing.T) {
|
||||
var in, tmp [32]byte
|
||||
_, err := rand.Read(in[:])
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
// 6
|
||||
n, _ := Base{bit: 6}.EncodeLen(32)
|
||||
out := make([]byte, n)
|
||||
enc64blk(0x2333233323332333, 6, in[:], out)
|
||||
t.Log(out)
|
||||
dec64blk(0x2333233323332333, 6, out[:], tmp[:])
|
||||
assert.Equal(t, in, tmp)
|
||||
// 10
|
||||
n, _ = Base{bit: 10}.EncodeLen(32)
|
||||
out = make([]byte, n)
|
||||
enc64blk(0x2333233323332333, 10, in[:], out)
|
||||
t.Log(out)
|
||||
dec64blk(0x2333233323332333, 10, out[:], tmp[:])
|
||||
assert.Equal(t, in, tmp)
|
||||
// 12
|
||||
n, _ = Base{bit: 12}.EncodeLen(32)
|
||||
out = make([]byte, n)
|
||||
enc64blk(0x2333233323332333, 12, in[:], out)
|
||||
t.Log(out)
|
||||
dec64blk(0x2333233323332333, 12, out[:], tmp[:])
|
||||
assert.Equal(t, in, tmp)
|
||||
// 14
|
||||
n, _ = Base{bit: 14}.EncodeLen(32)
|
||||
out = make([]byte, n)
|
||||
enc64blk(0x2333233323332333, 14, in[:], out)
|
||||
t.Log(out)
|
||||
dec64blk(0x2333233323332333, 14, out[:], tmp[:])
|
||||
assert.Equal(t, in, tmp)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user