github.com/cryptotooltop/go-ethereum@v0.0.0-20231103184714-151d1922f3e5/trie/zk_trie_database_test.go (about)

     1  package trie
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  
     7  	"github.com/scroll-tech/go-ethereum/common"
     8  )
     9  
    10  // grep from `feat/snap`
    11  func reverseBitInPlace(b []byte) {
    12  	var v [8]uint8
    13  	for i := 0; i < len(b); i++ {
    14  		for j := 0; j < 8; j++ {
    15  			v[j] = (b[i] >> j) & 1
    16  		}
    17  		var tmp uint8 = 0
    18  		for j := 0; j < 8; j++ {
    19  			tmp |= v[8-j-1] << j
    20  		}
    21  		b[i] = tmp
    22  	}
    23  }
    24  
    25  func reverseBytesInPlace(b []byte) {
    26  	for i, j := 0, len(b)-1; i < j; i, j = i+1, j-1 {
    27  		b[i], b[j] = b[j], b[i]
    28  	}
    29  }
    30  
    31  func TestBitReverse(t *testing.T) {
    32  
    33  	for _, testBytes := range [][]byte{
    34  		common.FromHex("7b908cce3bc16abb3eac5dff6c136856526f15225f74ce860a2bec47912a5492"),
    35  		common.FromHex("fac65cd2ad5e301083d0310dd701b5faaff1364cbe01cdbfaf4ec3609bb4149e"),
    36  		common.FromHex("55791f6ec2f83fee512a2d3d4b505784fdefaea89974e10440d01d62a18a298a"),
    37  		common.FromHex("5ab775b64d86a8058bb71c3c765d0f2158c14bbeb9cb32a65eda793a7e95e30f"),
    38  		common.FromHex("ccb464abf67804538908c62431b3a6788e8dc6dee62aff9bfe6b10136acfceac"),
    39  		common.FromHex("b908adff17a5aa9d6787324c39014a74b04cef7fba6a92aeb730f48da1ca665d"),
    40  	} {
    41  
    42  		b1 := bitReverse(testBytes)
    43  		reverseBitInPlace(testBytes)
    44  		reverseBytesInPlace(testBytes)
    45  		if !bytes.Equal(b1, testBytes) {
    46  			t.Errorf("unexpected bit reversed %x vs %x", b1, testBytes)
    47  		}
    48  	}
    49  
    50  }
    51  
    52  func TestBitDoubleReverse(t *testing.T) {
    53  
    54  	for _, testBytes := range [][]byte{
    55  		common.FromHex("7b908cce3bc16abb3eac5dff6c136856526f15225f74ce860a2bec47912a5492"),
    56  		common.FromHex("fac65cd2ad5e301083d0310dd701b5faaff1364cbe01cdbfaf4ec3609bb4149e"),
    57  		common.FromHex("55791f6ec2f83fee512a2d3d4b505784fdefaea89974e10440d01d62a18a298a"),
    58  		common.FromHex("5ab775b64d86a8058bb71c3c765d0f2158c14bbeb9cb32a65eda793a7e95e30f"),
    59  		common.FromHex("ccb464abf67804538908c62431b3a6788e8dc6dee62aff9bfe6b10136acfceac"),
    60  		common.FromHex("b908adff17a5aa9d6787324c39014a74b04cef7fba6a92aeb730f48da1ca665d"),
    61  	} {
    62  
    63  		b := bitReverse(bitReverse(testBytes))
    64  		if !bytes.Equal(b, testBytes) {
    65  			t.Errorf("unexpected double bit reversed %x vs %x", b, testBytes)
    66  		}
    67  	}
    68  
    69  }