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 }