github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/swarm/storage/mru/lookup_test.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 12:09:50</date> 10 //</624342683149668352> 11 12 package mru 13 14 import ( 15 "bytes" 16 "testing" 17 18 "github.com/ethereum/go-ethereum/common/hexutil" 19 ) 20 21 func getTestUpdateLookup() *UpdateLookup { 22 metadata := *getTestMetadata() 23 rootAddr, _, _, _ := metadata.serializeAndHash() 24 return &UpdateLookup{ 25 period: 79, 26 version: 2010, 27 rootAddr: rootAddr, 28 } 29 } 30 31 func compareUpdateLookup(a, b *UpdateLookup) bool { 32 return a.version == b.version && 33 a.period == b.period && 34 bytes.Equal(a.rootAddr, b.rootAddr) 35 } 36 37 func TestUpdateLookupUpdateAddr(t *testing.T) { 38 ul := getTestUpdateLookup() 39 updateAddr := ul.UpdateAddr() 40 compareByteSliceToExpectedHex(t, "updateAddr", updateAddr, "0x8fbc8d4777ef6da790257eda80ab4321fabd08cbdbe67e4e3da6caca386d64e0") 41 } 42 43 func TestUpdateLookupSerializer(t *testing.T) { 44 serializedUpdateLookup := make([]byte, updateLookupLength) 45 ul := getTestUpdateLookup() 46 if err := ul.binaryPut(serializedUpdateLookup); err != nil { 47 t.Fatal(err) 48 } 49 compareByteSliceToExpectedHex(t, "serializedUpdateLookup", serializedUpdateLookup, "0x4f000000da070000fb0ed7efa696bdb0b54cd75554cc3117ffc891454317df7dd6fefad978e2f2fb") 50 51 // 52 serializedUpdateLookup = make([]byte, updateLookupLength+7) 53 if err := ul.binaryPut(serializedUpdateLookup); err == nil { 54 t.Fatalf("Expected UpdateLookup.binaryPut to fail when receiving slice has a length != %d", updateLookupLength) 55 } 56 57 // 58 ul.rootAddr = []byte{1, 2, 3, 4} 59 serializedUpdateLookup = make([]byte, updateLookupLength) 60 if err := ul.binaryPut(serializedUpdateLookup); err == nil { 61 t.Fatal("Expected UpdateLookup.binaryPut to fail when rootAddr is not of the correct size") 62 } 63 } 64 65 func TestUpdateLookupDeserializer(t *testing.T) { 66 serializedUpdateLookup, _ := hexutil.Decode("0x4f000000da070000fb0ed7efa696bdb0b54cd75554cc3117ffc891454317df7dd6fefad978e2f2fb") 67 var recoveredUpdateLookup UpdateLookup 68 if err := recoveredUpdateLookup.binaryGet(serializedUpdateLookup); err != nil { 69 t.Fatal(err) 70 } 71 originalUpdateLookup := *getTestUpdateLookup() 72 if !compareUpdateLookup(&originalUpdateLookup, &recoveredUpdateLookup) { 73 t.Fatalf("Expected recovered UpdateLookup to match") 74 } 75 76 // 77 serializedUpdateLookup = make([]byte, updateLookupLength+4) 78 if err := recoveredUpdateLookup.binaryGet(serializedUpdateLookup); err == nil { 79 t.Fatalf("Expected UpdateLookup.binaryGet to fail when source slice has a length != %d", updateLookupLength) 80 } 81 } 82 83 func TestUpdateLookupSerializeDeserialize(t *testing.T) { 84 serializedUpdateLookup := make([]byte, updateLookupLength) 85 originalUpdateLookup := getTestUpdateLookup() 86 if err := originalUpdateLookup.binaryPut(serializedUpdateLookup); err != nil { 87 t.Fatal(err) 88 } 89 var recoveredUpdateLookup UpdateLookup 90 if err := recoveredUpdateLookup.binaryGet(serializedUpdateLookup); err != nil { 91 t.Fatal(err) 92 } 93 if !compareUpdateLookup(originalUpdateLookup, &recoveredUpdateLookup) { 94 t.Fatalf("Expected recovered UpdateLookup to match") 95 } 96 } 97