github.com/yinchengtsinghua/golang-Eos-dpos-Ethereum@v0.0.0-20190121132951-92cc4225ed8e/swarm/storage/mru/lookup_test.go (about) 1 2 //此源码被清华学神尹成大魔王专业翻译分析并修改 3 //尹成QQ77025077 4 //尹成微信18510341407 5 //尹成所在QQ群721929980 6 //尹成邮箱 yinc13@mails.tsinghua.edu.cn 7 //尹成毕业于清华大学,微软区块链领域全球最有价值专家 8 //https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 9 package mru 10 11 import ( 12 "bytes" 13 "testing" 14 15 "github.com/ethereum/go-ethereum/common/hexutil" 16 ) 17 18 func getTestUpdateLookup() *UpdateLookup { 19 metadata := *getTestMetadata() 20 rootAddr, _, _, _ := metadata.serializeAndHash() 21 return &UpdateLookup{ 22 period: 79, 23 version: 2010, 24 rootAddr: rootAddr, 25 } 26 } 27 28 func compareUpdateLookup(a, b *UpdateLookup) bool { 29 return a.version == b.version && 30 a.period == b.period && 31 bytes.Equal(a.rootAddr, b.rootAddr) 32 } 33 34 func TestUpdateLookupUpdateAddr(t *testing.T) { 35 ul := getTestUpdateLookup() 36 updateAddr := ul.UpdateAddr() 37 compareByteSliceToExpectedHex(t, "updateAddr", updateAddr, "0x8fbc8d4777ef6da790257eda80ab4321fabd08cbdbe67e4e3da6caca386d64e0") 38 } 39 40 func TestUpdateLookupSerializer(t *testing.T) { 41 serializedUpdateLookup := make([]byte, updateLookupLength) 42 ul := getTestUpdateLookup() 43 if err := ul.binaryPut(serializedUpdateLookup); err != nil { 44 t.Fatal(err) 45 } 46 compareByteSliceToExpectedHex(t, "serializedUpdateLookup", serializedUpdateLookup, "0x4f000000da070000fb0ed7efa696bdb0b54cd75554cc3117ffc891454317df7dd6fefad978e2f2fb") 47 48 // 49 serializedUpdateLookup = make([]byte, updateLookupLength+7) 50 if err := ul.binaryPut(serializedUpdateLookup); err == nil { 51 t.Fatalf("Expected UpdateLookup.binaryPut to fail when receiving slice has a length != %d", updateLookupLength) 52 } 53 54 // 55 ul.rootAddr = []byte{1, 2, 3, 4} 56 serializedUpdateLookup = make([]byte, updateLookupLength) 57 if err := ul.binaryPut(serializedUpdateLookup); err == nil { 58 t.Fatal("Expected UpdateLookup.binaryPut to fail when rootAddr is not of the correct size") 59 } 60 } 61 62 func TestUpdateLookupDeserializer(t *testing.T) { 63 serializedUpdateLookup, _ := hexutil.Decode("0x4f000000da070000fb0ed7efa696bdb0b54cd75554cc3117ffc891454317df7dd6fefad978e2f2fb") 64 var recoveredUpdateLookup UpdateLookup 65 if err := recoveredUpdateLookup.binaryGet(serializedUpdateLookup); err != nil { 66 t.Fatal(err) 67 } 68 originalUpdateLookup := *getTestUpdateLookup() 69 if !compareUpdateLookup(&originalUpdateLookup, &recoveredUpdateLookup) { 70 t.Fatalf("Expected recovered UpdateLookup to match") 71 } 72 73 // 74 serializedUpdateLookup = make([]byte, updateLookupLength+4) 75 if err := recoveredUpdateLookup.binaryGet(serializedUpdateLookup); err == nil { 76 t.Fatalf("Expected UpdateLookup.binaryGet to fail when source slice has a length != %d", updateLookupLength) 77 } 78 } 79 80 func TestUpdateLookupSerializeDeserialize(t *testing.T) { 81 serializedUpdateLookup := make([]byte, updateLookupLength) 82 originalUpdateLookup := getTestUpdateLookup() 83 if err := originalUpdateLookup.binaryPut(serializedUpdateLookup); err != nil { 84 t.Fatal(err) 85 } 86 var recoveredUpdateLookup UpdateLookup 87 if err := recoveredUpdateLookup.binaryGet(serializedUpdateLookup); err != nil { 88 t.Fatal(err) 89 } 90 if !compareUpdateLookup(originalUpdateLookup, &recoveredUpdateLookup) { 91 t.Fatalf("Expected recovered UpdateLookup to match") 92 } 93 }