github.com/yinchengtsinghua/golang-Eos-dpos-Ethereum@v0.0.0-20190121132951-92cc4225ed8e/swarm/storage/mru/updateheader_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 const serializedUpdateHeaderMultihashHex = "0x4f000000da070000fb0ed7efa696bdb0b54cd75554cc3117ffc891454317df7dd6fefad978e2f2fbf74a10ce8f26ffc8bfaa07c3031a34b2c61f517955e7deb1592daccf96c69cf001" 19 20 func getTestUpdateHeader(multihash bool) (header *updateHeader) { 21 _, metaHash, _, _ := getTestMetadata().serializeAndHash() 22 return &updateHeader{ 23 UpdateLookup: *getTestUpdateLookup(), 24 multihash: multihash, 25 metaHash: metaHash, 26 } 27 } 28 29 func compareUpdateHeader(a, b *updateHeader) bool { 30 return compareUpdateLookup(&a.UpdateLookup, &b.UpdateLookup) && 31 a.multihash == b.multihash && 32 bytes.Equal(a.metaHash, b.metaHash) 33 } 34 35 func TestUpdateHeaderSerializer(t *testing.T) { 36 header := getTestUpdateHeader(true) 37 serializedHeader := make([]byte, updateHeaderLength) 38 if err := header.binaryPut(serializedHeader); err != nil { 39 t.Fatal(err) 40 } 41 compareByteSliceToExpectedHex(t, "serializedHeader", serializedHeader, serializedUpdateHeaderMultihashHex) 42 43 // 44 if err := header.binaryPut(make([]byte, updateHeaderLength+1)); err == nil { 45 t.Fatal("Expected updateHeader.binaryPut to fail since supplied slice is of incorrect length") 46 } 47 48 // 49 header.metaHash = nil 50 if err := header.binaryPut(serializedHeader); err == nil { 51 t.Fatal("Expected updateHeader.binaryPut to fail metaHash is of incorrect length") 52 } 53 } 54 55 func TestUpdateHeaderDeserializer(t *testing.T) { 56 originalUpdate := getTestUpdateHeader(true) 57 serializedData, _ := hexutil.Decode(serializedUpdateHeaderMultihashHex) 58 var retrievedUpdate updateHeader 59 if err := retrievedUpdate.binaryGet(serializedData); err != nil { 60 t.Fatal(err) 61 } 62 if !compareUpdateHeader(originalUpdate, &retrievedUpdate) { 63 t.Fatalf("Expected deserialized structure to equal the original") 64 } 65 66 // 67 serializedData = []byte{1, 2, 3} 68 if err := retrievedUpdate.binaryGet(serializedData); err == nil { 69 t.Fatal("Expected retrievedUpdate.binaryGet, since passed slice is too small") 70 } 71 72 }