| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package mru
- import (
- "bytes"
- "testing"
- "github.com/ethereum/go-ethereum/common/hexutil"
- )
- const serializedUpdateHeaderMultihashHex = "0x4f000000da070000fb0ed7efa696bdb0b54cd75554cc3117ffc891454317df7dd6fefad978e2f2fbf74a10ce8f26ffc8bfaa07c3031a34b2c61f517955e7deb1592daccf96c69cf001"
- func getTestUpdateHeader(multihash bool) (header *updateHeader) {
- _, metaHash, _, _ := getTestMetadata().serializeAndHash()
- return &updateHeader{
- UpdateLookup: *getTestUpdateLookup(),
- multihash: multihash,
- metaHash: metaHash,
- }
- }
- func compareUpdateHeader(a, b *updateHeader) bool {
- return compareUpdateLookup(&a.UpdateLookup, &b.UpdateLookup) &&
- a.multihash == b.multihash &&
- bytes.Equal(a.metaHash, b.metaHash)
- }
- func TestUpdateHeaderSerializer(t *testing.T) {
- header := getTestUpdateHeader(true)
- serializedHeader := make([]byte, updateHeaderLength)
- if err := header.binaryPut(serializedHeader); err != nil {
- t.Fatal(err)
- }
- compareByteSliceToExpectedHex(t, "serializedHeader", serializedHeader, serializedUpdateHeaderMultihashHex)
- // trigger incorrect slice length error passing a slice that is 1 byte too big
- if err := header.binaryPut(make([]byte, updateHeaderLength+1)); err == nil {
- t.Fatal("Expected updateHeader.binaryPut to fail since supplied slice is of incorrect length")
- }
- // trigger invalid metaHash error
- header.metaHash = nil
- if err := header.binaryPut(serializedHeader); err == nil {
- t.Fatal("Expected updateHeader.binaryPut to fail metaHash is of incorrect length")
- }
- }
- func TestUpdateHeaderDeserializer(t *testing.T) {
- originalUpdate := getTestUpdateHeader(true)
- serializedData, _ := hexutil.Decode(serializedUpdateHeaderMultihashHex)
- var retrievedUpdate updateHeader
- if err := retrievedUpdate.binaryGet(serializedData); err != nil {
- t.Fatal(err)
- }
- if !compareUpdateHeader(originalUpdate, &retrievedUpdate) {
- t.Fatalf("Expected deserialized structure to equal the original")
- }
- // mess with source slice to test length checks
- serializedData = []byte{1, 2, 3}
- if err := retrievedUpdate.binaryGet(serializedData); err == nil {
- t.Fatal("Expected retrievedUpdate.binaryGet, since passed slice is too small")
- }
- }
|