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) }