package keccak
|
|
|
|
import (
|
|
"encoding/binary"
|
|
"testing"
|
|
|
|
qt "github.com/frankban/quicktest"
|
|
)
|
|
|
|
func TestUtilsBytesToBool(t *testing.T) {
|
|
b := []byte{0, 1, 2, 3, 255, 254, 253}
|
|
bits := bytesToBits(b)
|
|
// for i := 0; i < len(b); i++ {
|
|
// fmt.Println(i*8, i*8+8, b[i], bits[i*8:i*8+8])
|
|
// }
|
|
qt.Assert(t, bits[0:8], qt.DeepEquals,
|
|
[]bool{false, false, false, false, false, false, false, false})
|
|
qt.Assert(t, bits[8:16], qt.DeepEquals,
|
|
[]bool{true, false, false, false, false, false, false, false})
|
|
qt.Assert(t, bits[16:24], qt.DeepEquals,
|
|
[]bool{false, true, false, false, false, false, false, false})
|
|
qt.Assert(t, bits[24:32], qt.DeepEquals,
|
|
[]bool{true, true, false, false, false, false, false, false})
|
|
qt.Assert(t, bits[32:40], qt.DeepEquals,
|
|
[]bool{true, true, true, true, true, true, true, true})
|
|
qt.Assert(t, bits[40:48], qt.DeepEquals,
|
|
[]bool{false, true, true, true, true, true, true, true})
|
|
qt.Assert(t, bits[48:56], qt.DeepEquals,
|
|
[]bool{true, false, true, true, true, true, true, true})
|
|
}
|
|
|
|
func TestUtilsBitsToBytes(t *testing.T) {
|
|
b := []byte{0, 1, 2, 3, 255, 254, 253}
|
|
bits := bytesToBits(b)
|
|
b2 := bitsToBytes(bits)
|
|
qt.Assert(t, b2, qt.DeepEquals, b)
|
|
}
|
|
|
|
func TestUtilsU64(t *testing.T) {
|
|
u := uint64(100)
|
|
b := make([]byte, 8)
|
|
binary.LittleEndian.PutUint64(b, u)
|
|
|
|
// toUint64
|
|
// with bytes
|
|
uRes := bytesToU64(b)
|
|
qt.Assert(t, uRes, qt.Equals, u)
|
|
|
|
// with bits
|
|
uRes = bitsToU64(bytesToBits(b))
|
|
qt.Assert(t, uRes, qt.Equals, u)
|
|
|
|
// fromUint64
|
|
// with bytes
|
|
bRes := u64ToBytes(u)
|
|
qt.Assert(t, bRes, qt.DeepEquals, b)
|
|
|
|
// with bits
|
|
bResBits := u64ToBits(u)
|
|
qt.Assert(t, bResBits, qt.DeepEquals, bytesToBits(b))
|
|
}
|
|
|
|
func TestUtilsLeftShift(t *testing.T) {
|
|
u := uint64(2)
|
|
bits := u64ToBits(u)
|
|
r := leftShift(bits, 1)
|
|
qt.Assert(t, bitsToU64(r), qt.Equals, u<<1)
|
|
|
|
u = uint64(9)
|
|
bits = u64ToBits(u)
|
|
r = leftShift(bits, 1)
|
|
qt.Assert(t, bitsToU64(r), qt.Equals, u<<1)
|
|
|
|
u = uint64(14)
|
|
bits = u64ToBits(u)
|
|
r = leftShift(bits, 63)
|
|
qt.Assert(t, bitsToU64(r), qt.Equals, u<<63)
|
|
|
|
u = uint64(123456)
|
|
bits = u64ToBits(u)
|
|
r = leftShift(bits, 1)
|
|
qt.Assert(t, bitsToU64(r), qt.Equals, u<<1)
|
|
}
|
|
func TestUtilsRightShift(t *testing.T) {
|
|
u := uint64(2)
|
|
bits := u64ToBits(u)
|
|
r := rightShift(bits, 1)
|
|
qt.Assert(t, bitsToU64(r), qt.Equals, u>>1)
|
|
|
|
u = uint64(9)
|
|
bits = u64ToBits(u)
|
|
r = rightShift(bits, 1)
|
|
qt.Assert(t, bitsToU64(r), qt.Equals, u>>1)
|
|
|
|
u = uint64(14)
|
|
bits = u64ToBits(u)
|
|
r = rightShift(bits, 63)
|
|
qt.Assert(t, bitsToU64(r), qt.Equals, u>>63)
|
|
|
|
u = uint64(123456)
|
|
bits = u64ToBits(u)
|
|
r = rightShift(bits, 1)
|
|
qt.Assert(t, bitsToU64(r), qt.Equals, u>>1)
|
|
}
|