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  }