Skip to content

Commit 8352b9c

Browse files
committed
relocate TreeNode tests
1 parent 021c01f commit 8352b9c

File tree

3 files changed

+38
-17
lines changed

3 files changed

+38
-17
lines changed

src/TreeNodeCbor.sol

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ library TreeNodeCbor {
9696
TreeNodeE[] memory e;
9797
(e, byteIdx) = readNodeE(cborData, byteIdx);
9898
node.entries = buildEntryKeys(e);
99+
//node.entries = dummyEntryKeys(e); // skipping rebuild saves approx 300k gas
99100
}
100101
}
101102
return (node, byteIdx);

test/TreeCbor.t.sol

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ contract TreeTest is Test {
2323
bytes[] private nodeCbors;
2424
TreeCbor.Tree private tree;
2525

26-
TreeNodeCbor.TreeNodeE[] private e;
27-
2826
function setUp() public {
2927
nodeCbors = new bytes[](4);
3028
nodeCbors[0] =
@@ -41,7 +39,6 @@ contract TreeTest is Test {
4139
require(byteIdx == rootCborWithoutSig.length, "expected to read all root commit bytes");
4240
rootCid = CidCbor.readCidBytes32(TreeTest.rootCborWithoutSig, rootCommit.data);
4341
tree = TreeCbor.readTree(nodeCbors);
44-
(e,) = TreeNodeCbor.readNodeE(nodeCbors[0], 3);
4542
}
4643

4744
function test_readTree_only() public view {
@@ -60,12 +57,4 @@ contract TreeTest is Test {
6057
console.log("node.left index", CidCbor.CidIndex.unwrap(rootNode.left));
6158
console.log("node.entries length", rootNode.entries.length);
6259
}
63-
64-
function test_readNodeE_only() public view {
65-
TreeNodeCbor.readNodeE(nodeCbors[0], 3);
66-
}
67-
68-
function test_buildEntryKeys_only() public view {
69-
TreeNodeCbor.buildEntryKeys(e);
70-
}
7160
}

test/TreeNodeCbor.t.sol

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,28 @@ import "../src/CborDecode.sol";
66
import "../src/TreeNodeCbor.sol";
77
import "../src/CidCbor.sol";
88

9-
contract TreeNodeCborTest {
10-
bytes private constant treeNode =
9+
contract TreeNodeCborTest is Test {
10+
bytes private constant treeNodeBytes =
1111
hex"a2616585a4616b58236170702e62736b792e67726170682e666f6c6c6f772f336b77767534737665647332346170006174d82a58250001711220b000383f1466f65b0a02da763f46cf0e4510d832f6c609a9df56db73b81259376176d82a582500017112205cd7382608fb47afda979840cf0024b3d2d2e9e43448713909e998b6a1849490a4616b486679656a776332346170181b6174d82a58250001711220b295211bc0bfc8a6c8404f4877e96c37b25272c85e4942a29b178d26803f13996176d82a5825000171122017428f68c9c19f59b08b4b2d71ce96e04cdaf6139b94baf0a2c5ee51aa74493fa4616b486d77686f6e3232346170181b6174d82a58250001711220752be9d63155323fc5ce8753bdb5832fc7f5ad762c4e37944a6de84bbb9516876176d82a582500017112200fe8a27c597fcc6059888660b321e473bdaa94b45d0a702f3bd05e013ff17564a4616b486e337667376332346170181b6174d82a58250001711220ff7f6bd81b38a383101aec250c290ec6cd33555baf1e644f4b6d9b60a2e1fb856176d82a58250001711220a9f192fea504ecf8ae900d2a4f9f37551865132ae50bf680ac1687636afee7e1a4616b486f797875373232346170181b6174d82a582500017112204afcab072750efa8755714ca8477b35e871b71856a329c9973c4b94b7a4c98986176d82a58250001711220c46c805c774dcd3eaf4f90cef5e63f1f2a53f9c6bdb14b7397e736678b54dc97616cd82a582500017112206e7335ed248edae3ed49d47b88a5fcad2985e15f416f8ae23a49dfc1231aeb91";
1212

13+
TreeNodeCbor.TreeNodeE[] private e;
14+
15+
function setUp() public {
16+
(e,) = TreeNodeCbor.readNodeE(treeNodeBytes, 3);
17+
}
18+
1319
function test_readTreeNode_only() public pure {
14-
TreeNodeCbor.readTreeNode(treeNode, 0);
20+
TreeNodeCbor.readTreeNode(treeNodeBytes, 0);
1521
}
1622

1723
function test_readTreeNode_valid() public pure {
18-
(TreeNodeCbor.TreeNode memory node, uint byteIdx) = TreeNodeCbor.readTreeNode(treeNode, 0);
24+
(TreeNodeCbor.TreeNode memory node, uint byteIdx) = TreeNodeCbor.readTreeNode(treeNodeBytes, 0);
1925

20-
require(byteIdx == treeNode.length, "expected to read all bytes");
26+
require(byteIdx == treeNodeBytes.length, "expected to read all bytes");
2127
require(node.entries.length == 5, "expected 5 entries");
2228
require(CidCbor.CidIndex.unwrap(node.left) != 0, "expected left cid to be non-null");
2329

24-
CidCbor.CidBytes32 leftCid = CidCbor.readCidBytes32(treeNode, node.left);
30+
CidCbor.CidBytes32 leftCid = CidCbor.readCidBytes32(treeNodeBytes, node.left);
2531

2632
require(
2733
CidCbor.CidBytes32.unwrap(leftCid) == hex"6e7335ed248edae3ed49d47b88a5fcad2985e15f416f8ae23a49dfc1231aeb91",
@@ -34,4 +40,29 @@ contract TreeNodeCborTest {
3440
console.log("tree", CidCbor.CidIndex.unwrap(node.entries[i].tree));
3541
}
3642
}
43+
44+
function test_readNodeE_only() public pure {
45+
TreeNodeCbor.readNodeE(treeNodeBytes, 3);
46+
}
47+
48+
function test_buildEntryKeys_only() public view {
49+
TreeNodeCbor.buildEntryKeys(e);
50+
}
51+
52+
function test_dummyEntryKeys() public view {
53+
dummyEntryKeys(e);
54+
}
55+
56+
// like buildEntryKeys but without the actual key rebuild
57+
function dummyEntryKeys(TreeNodeCbor.TreeNodeE[] memory de)
58+
internal
59+
pure
60+
returns (TreeNodeCbor.TreeNodeEntry[] memory)
61+
{
62+
TreeNodeCbor.TreeNodeEntry[] memory entries = new TreeNodeCbor.TreeNodeEntry[](de.length);
63+
for (uint i = 0; i < de.length; i++) {
64+
entries[i] = TreeNodeCbor.TreeNodeEntry(string(de[i].k), de[i].v, de[i].t);
65+
}
66+
return entries;
67+
}
3768
}

0 commit comments

Comments
 (0)