From f8864a798e95fd874efc6b7c019be6e184453abb Mon Sep 17 00:00:00 2001 From: Quentin McGaw Date: Tue, 17 May 2022 19:38:56 +0000 Subject: [PATCH] More understandable test cases --- internal/trie/node/decode_test.go | 28 ++++++++-------- internal/trie/node/encode_test.go | 36 ++++++++++----------- internal/trie/node/header.go | 4 +-- internal/trie/node/header_test.go | 53 ++++++++++++++++--------------- 4 files changed, 60 insertions(+), 61 deletions(-) diff --git a/internal/trie/node/decode_test.go b/internal/trie/node/decode_test.go index 73dde066f28..e8f15a8dd02 100644 --- a/internal/trie/node/decode_test.go +++ b/internal/trie/node/decode_test.go @@ -52,7 +52,7 @@ func Test_Decode(t *testing.T) { }, "leaf decoding error": { reader: bytes.NewReader([]byte{ - 65, // node type 1 (leaf) and key length 1 + leafVariant.bits | 1, // key length 1 // missing key data byte }), errWrapped: io.EOF, @@ -63,8 +63,8 @@ func Test_Decode(t *testing.T) { reader: bytes.NewReader( append( []byte{ - 65, // node type 1 (leaf) and key length 1 - 9, // key data + leafVariant.bits | 1, // key length 1 + 9, // key data }, scaleEncodeBytes(t, 1, 2, 3)..., ), @@ -77,7 +77,7 @@ func Test_Decode(t *testing.T) { }, "branch decoding error": { reader: bytes.NewReader([]byte{ - 129, // node type 2 (branch without value) and key length 1 + branchVariant.bits | 1, // key length 1 // missing key data byte }), errWrapped: io.EOF, @@ -87,9 +87,9 @@ func Test_Decode(t *testing.T) { "branch success": { reader: bytes.NewReader( []byte{ - 129, // node type 2 (branch without value) and key length 1 - 9, // key data - 0, 0, // no children bitmap + branchVariant.bits | 1, // key length 1 + 9, // key data + 0, 0, // no children bitmap }, ), n: &Node{ @@ -101,7 +101,7 @@ func Test_Decode(t *testing.T) { "branch with two inlined children": { reader: bytes.NewReader( []byte{ - 158, // node type 2 (branch w/o value) and key length 30 + branchVariant.bits | 30, // key length 30 // Key data start 195, 101, 195, 207, 89, 214, 113, 235, 114, 218, 14, 122, @@ -217,13 +217,11 @@ func Test_decodeBranch(t *testing.T) { errWrapped: ErrDecodeChildHash, errMessage: "cannot decode child hash: at index 10: EOF", }, - "success node type 2": { + "success for branch variant": { reader: bytes.NewBuffer( concatByteSlices([][]byte{ - { - 9, // key data - 0, 4, // children bitmap - }, + {9}, // key data + {0, 4}, // children bitmap scaleEncodeBytes(t, 1, 2, 3, 4, 5), // child hash }), ), @@ -242,7 +240,7 @@ func Test_decodeBranch(t *testing.T) { Descendants: 1, }, }, - "value decoding error for node type 3": { + "value decoding error for branch with value variant": { reader: bytes.NewBuffer( concatByteSlices([][]byte{ {9}, // key data @@ -255,7 +253,7 @@ func Test_decodeBranch(t *testing.T) { errWrapped: ErrDecodeValue, errMessage: "cannot decode value: EOF", }, - "success node type 3": { + "success for branch with value": { reader: bytes.NewBuffer( concatByteSlices([][]byte{ {9}, // key data diff --git a/internal/trie/node/encode_test.go b/internal/trie/node/encode_test.go index dcadb36c686..ea6a4fb47ed 100644 --- a/internal/trie/node/encode_test.go +++ b/internal/trie/node/encode_test.go @@ -63,7 +63,7 @@ func Test_Node_Encode(t *testing.T) { }, writes: []writeCall{ { - written: []byte{leafVariant.bits | 0b0000_0001}, + written: []byte{leafVariant.bits | 1}, err: errTest, }, }, @@ -76,10 +76,10 @@ func Test_Node_Encode(t *testing.T) { }, writes: []writeCall{ { - written: []byte{67}, + written: []byte{leafVariant.bits | 3}, // partial key length 3 }, { - written: []byte{1, 35}, + written: []byte{0x01, 0x23}, err: errTest, }, }, @@ -93,10 +93,10 @@ func Test_Node_Encode(t *testing.T) { }, writes: []writeCall{ { - written: []byte{67}, + written: []byte{leafVariant.bits | 3}, // partial key length 3 }, { - written: []byte{1, 35}, + written: []byte{0x01, 0x23}, }, { written: []byte{12, 4, 5, 6}, @@ -113,10 +113,10 @@ func Test_Node_Encode(t *testing.T) { }, writes: []writeCall{ { - written: []byte{67}, + written: []byte{leafVariant.bits | 3}, // partial key length 3 }, { - written: []byte{1, 35}, + written: []byte{0x01, 0x23}, }, { written: []byte{12, 4, 5, 6}, @@ -158,7 +158,7 @@ func Test_Node_Encode(t *testing.T) { }, writes: []writeCall{ { // header - written: []byte{branchVariant.bits | 0b0000_0001}, + written: []byte{branchVariant.bits | 1}, // partial key length 1 err: errTest, }, }, @@ -173,10 +173,10 @@ func Test_Node_Encode(t *testing.T) { }, writes: []writeCall{ { // header - written: []byte{195}, + written: []byte{branchWithValueVariant.bits | 3}, // partial key length 3 }, { // key LE - written: []byte{1, 35}, + written: []byte{0x01, 0x23}, err: errTest, }, }, @@ -194,10 +194,10 @@ func Test_Node_Encode(t *testing.T) { }, writes: []writeCall{ { // header - written: []byte{195}, + written: []byte{branchWithValueVariant.bits | 3}, // partial key length 3 }, { // key LE - written: []byte{1, 35}, + written: []byte{0x01, 0x23}, }, { // children bitmap written: []byte{136, 0}, @@ -218,10 +218,10 @@ func Test_Node_Encode(t *testing.T) { }, writes: []writeCall{ { // header - written: []byte{195}, + written: []byte{branchWithValueVariant.bits | 3}, // partial key length 3 }, { // key LE - written: []byte{1, 35}, + written: []byte{0x01, 0x23}, }, { // children bitmap written: []byte{136, 0}, @@ -245,10 +245,10 @@ func Test_Node_Encode(t *testing.T) { }, writes: []writeCall{ { // header - written: []byte{195}, + written: []byte{branchWithValueVariant.bits | 3}, // partial key length 3 }, { // key LE - written: []byte{1, 35}, + written: []byte{0x01, 0x23}, }, { // children bitmap written: []byte{136, 0}, @@ -277,10 +277,10 @@ func Test_Node_Encode(t *testing.T) { }, writes: []writeCall{ { // header - written: []byte{195}, + written: []byte{branchWithValueVariant.bits | 3}, // partial key length 3 }, { // key LE - written: []byte{1, 35}, + written: []byte{0x01, 0x23}, }, { // children bitmap written: []byte{136, 0}, diff --git a/internal/trie/node/header.go b/internal/trie/node/header.go index 9041c20ed23..6443c57b758 100644 --- a/internal/trie/node/header.go +++ b/internal/trie/node/header.go @@ -30,7 +30,7 @@ func encodeHeader(node *Node, writer io.Writer) (err error) { buffer := make([]byte, 1) buffer[0] = variant.bits - partialKeyLengthMask := variant.mask ^ 0xff + partialKeyLengthMask := ^variant.mask if partialKeyLength < int(partialKeyLengthMask) { // Partial key length fits in header byte @@ -143,7 +143,7 @@ func decodeHeaderByte(header byte) (variantBits, continue } - partialKeyLengthHeaderMask = variants[i].mask ^ 0xff + partialKeyLengthHeaderMask = ^variants[i].mask partialKeyLengthHeader = header & partialKeyLengthHeaderMask return variantBits, partialKeyLengthHeader, partialKeyLengthHeaderMask, nil diff --git a/internal/trie/node/header_test.go b/internal/trie/node/header_test.go index 33301792e6c..d616c3e2b63 100644 --- a/internal/trie/node/header_test.go +++ b/internal/trie/node/header_test.go @@ -26,7 +26,7 @@ func Test_encodeHeader(t *testing.T) { Children: make([]*Node, ChildrenCapacity), }, writes: []writeCall{ - {written: []byte{0x80}}, + {written: []byte{branchVariant.bits}}, }, }, "branch with value": { @@ -35,7 +35,7 @@ func Test_encodeHeader(t *testing.T) { Children: make([]*Node, ChildrenCapacity), }, writes: []writeCall{ - {written: []byte{0xc0}}, + {written: []byte{branchWithValueVariant.bits}}, }, }, "branch with key of length 30": { @@ -44,7 +44,7 @@ func Test_encodeHeader(t *testing.T) { Children: make([]*Node, ChildrenCapacity), }, writes: []writeCall{ - {written: []byte{0x9e}}, + {written: []byte{branchVariant.bits | 30}}, }, }, "branch with key of length 62": { @@ -53,7 +53,7 @@ func Test_encodeHeader(t *testing.T) { Children: make([]*Node, ChildrenCapacity), }, writes: []writeCall{ - {written: []byte{0xbe}}, + {written: []byte{branchVariant.bits | 62}}, }, }, "branch with key of length 63": { @@ -62,8 +62,9 @@ func Test_encodeHeader(t *testing.T) { Children: make([]*Node, ChildrenCapacity), }, writes: []writeCall{ - {written: []byte{0xbf}}, - {written: []byte{0x0}}, + {written: []byte{branchVariant.bits | 63}}, + {written: []byte{0x00}}, // trailing 0 to indicate the partial + // key length is done here. }, }, "branch with key of length 64": { @@ -72,8 +73,8 @@ func Test_encodeHeader(t *testing.T) { Children: make([]*Node, ChildrenCapacity), }, writes: []writeCall{ - {written: []byte{0xbf}}, - {written: []byte{0x1}}, + {written: []byte{branchVariant.bits | 63}}, + {written: []byte{0x01}}, }, }, "branch with small key length write error": { @@ -82,7 +83,7 @@ func Test_encodeHeader(t *testing.T) { }, writes: []writeCall{ { - written: []byte{0x80}, + written: []byte{branchVariant.bits}, err: errTest, }, }, @@ -91,15 +92,15 @@ func Test_encodeHeader(t *testing.T) { }, "branch with long key length write error": { node: &Node{ - Key: make([]byte, 0b0011_1111+1), + Key: make([]byte, int(^branchVariant.mask)+1), Children: make([]*Node, ChildrenCapacity), }, writes: []writeCall{ { - written: []byte{0b1011_1111}, + written: []byte{branchVariant.bits | ^branchVariant.mask}, }, { - written: []byte{0b0000_0001}, + written: []byte{0x01}, err: errTest, }, }, @@ -109,7 +110,7 @@ func Test_encodeHeader(t *testing.T) { "leaf with no key": { node: &Node{}, writes: []writeCall{ - {written: []byte{0x40}}, + {written: []byte{leafVariant.bits}}, }, }, "leaf with key of length 30": { @@ -117,7 +118,7 @@ func Test_encodeHeader(t *testing.T) { Key: make([]byte, 30), }, writes: []writeCall{ - {written: []byte{0x5e}}, + {written: []byte{leafVariant.bits | 30}}, }, }, "leaf with short key write error": { @@ -126,7 +127,7 @@ func Test_encodeHeader(t *testing.T) { }, writes: []writeCall{ { - written: []byte{0x5e}, + written: []byte{leafVariant.bits | 30}, err: errTest, }, }, @@ -138,7 +139,7 @@ func Test_encodeHeader(t *testing.T) { Key: make([]byte, 62), }, writes: []writeCall{ - {written: []byte{0x7e}}, + {written: []byte{leafVariant.bits | 62}}, }, }, "leaf with key of length 63": { @@ -146,7 +147,7 @@ func Test_encodeHeader(t *testing.T) { Key: make([]byte, 63), }, writes: []writeCall{ - {written: []byte{0x7f}}, + {written: []byte{leafVariant.bits | 63}}, {written: []byte{0x0}}, }, }, @@ -155,7 +156,7 @@ func Test_encodeHeader(t *testing.T) { Key: make([]byte, 64), }, writes: []writeCall{ - {written: []byte{0x7f}}, + {written: []byte{leafVariant.bits | 63}}, {written: []byte{0x1}}, }, }, @@ -165,7 +166,7 @@ func Test_encodeHeader(t *testing.T) { }, writes: []writeCall{ { - written: []byte{0x7f}, + written: []byte{leafVariant.bits | 63}, err: errTest, }, }, @@ -174,21 +175,21 @@ func Test_encodeHeader(t *testing.T) { }, "leaf with key length over 3 bytes": { node: &Node{ - Key: make([]byte, 0b0011_1111+0b1111_1111+0b0000_0001), + Key: make([]byte, int(^leafVariant.mask)+0b1111_1111+0b0000_0001), }, writes: []writeCall{ - {written: []byte{0x7f}}, - {written: []byte{0xff}}, - {written: []byte{0x01}}, + {written: []byte{leafVariant.bits | ^leafVariant.mask}}, + {written: []byte{0b1111_1111}}, + {written: []byte{0b0000_0001}}, }, }, "leaf with key length over 3 bytes and last byte zero": { node: &Node{ - Key: make([]byte, 0b0011_1111+0b1111_1111), + Key: make([]byte, int(^leafVariant.mask)+0b1111_1111), }, writes: []writeCall{ - {written: []byte{0x7f}}, - {written: []byte{0xff}}, + {written: []byte{leafVariant.bits | ^leafVariant.mask}}, + {written: []byte{0b1111_1111}}, {written: []byte{0x00}}, }, },