From fc179a8ee53c4f76b3b69c0afb960b4f86690d97 Mon Sep 17 00:00:00 2001 From: Juliya Smith Date: Tue, 30 Jan 2024 14:01:45 -0600 Subject: [PATCH 1/3] fix: issue when changing default in smt --- tests/test_smt.py | 7 +++++-- trie/smt.py | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/tests/test_smt.py b/tests/test_smt.py index b68331d..0d97305 100644 --- a/tests/test_smt.py +++ b/tests/test_smt.py @@ -14,9 +14,12 @@ @given( k=st.binary(min_size=1, max_size=32), v=st.binary(min_size=1, max_size=32), + default=st.binary(min_size=1, max_size=32), ) -def test_simple_kv(k, v): - smt = SparseMerkleTree(key_size=len(k)) +def test_simple_kv(k, v, default): + # default must be different than v + default = BLANK_NODE if default == v else default + smt = SparseMerkleTree(key_size=len(k), default=default) empty_root = smt.root_hash # Nothing has been added yet diff --git a/trie/smt.py b/trie/smt.py index 6a7fe86..795bed3 100644 --- a/trie/smt.py +++ b/trie/smt.py @@ -252,7 +252,7 @@ def get(self, key: bytes) -> bytes: value, _ = self._get(key) # Ensure that it isn't blank! - if value == BLANK_NODE: + if value == self._default: raise KeyError("Key does not exist") return value @@ -261,7 +261,7 @@ def branch(self, key: bytes) -> Tuple[Hash32]: value, branch = self._get(key) # Ensure that it isn't blank! - if value == BLANK_NODE: + if value == self._default: raise KeyError("Key does not exist") return branch From 400cc1dc62130c939104014f8598a251c0c1522e Mon Sep 17 00:00:00 2001 From: Juliya Smith Date: Tue, 30 Jan 2024 15:02:37 -0600 Subject: [PATCH 2/3] test: use strat where v=def --- tests/test_smt.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tests/test_smt.py b/tests/test_smt.py index 0d97305..3c80ddc 100644 --- a/tests/test_smt.py +++ b/tests/test_smt.py @@ -1,4 +1,5 @@ from hypothesis import ( + given, strategies as st, ) @@ -11,13 +12,21 @@ ) +@st.composite +def binary_tuples(draw): + size = draw(st.integers(min_value=1, max_value=32)) + v = draw(st.binary(min_size=size, max_size=size)) + default = draw(st.binary(min_size=size, max_size=size)) + return (v, default) + + @given( k=st.binary(min_size=1, max_size=32), - v=st.binary(min_size=1, max_size=32), - default=st.binary(min_size=1, max_size=32), + values=binary_tuples(), ) -def test_simple_kv(k, v, default): +def test_simple_kv(k, values): # default must be different than v + v, default = values default = BLANK_NODE if default == v else default smt = SparseMerkleTree(key_size=len(k), default=default) empty_root = smt.root_hash From 9a79146a50d499d9288e05169ca7974e1e90ebb3 Mon Sep 17 00:00:00 2001 From: Juliya Smith Date: Tue, 30 Jan 2024 15:11:26 -0600 Subject: [PATCH 3/3] test: exc def==v cases --- tests/test_smt.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/test_smt.py b/tests/test_smt.py index 3c80ddc..ccd8544 100644 --- a/tests/test_smt.py +++ b/tests/test_smt.py @@ -1,5 +1,5 @@ from hypothesis import ( - + assume, given, strategies as st, ) @@ -17,6 +17,10 @@ def binary_tuples(draw): size = draw(st.integers(min_value=1, max_value=32)) v = draw(st.binary(min_size=size, max_size=size)) default = draw(st.binary(min_size=size, max_size=size)) + + # Ensure v and default are not equal + assume(v != default) + return (v, default) @@ -25,9 +29,7 @@ def binary_tuples(draw): values=binary_tuples(), ) def test_simple_kv(k, values): - # default must be different than v v, default = values - default = BLANK_NODE if default == v else default smt = SparseMerkleTree(key_size=len(k), default=default) empty_root = smt.root_hash