88- Edge cases and error handling
99"""
1010
11+ from typing import Dict
1112from unittest .mock import MagicMock , patch
1213
1314import pytest
2425 add_storage_write ,
2526 add_touched_account ,
2627 build_block_access_list ,
28+ track_address_access ,
2729)
2830from ethereum .forks .amsterdam .block_access_lists .rlp_types import (
2931 MAX_CODE_CHANGES ,
3840 track_nonce_change ,
3941 track_storage_write ,
4042)
43+ from ethereum .forks .amsterdam .fork_types import Address
44+ from ethereum .forks .amsterdam .state import State
45+ from ethereum .forks .amsterdam .trie import Trie
4146
4247
4348class TestBALCore :
@@ -199,7 +204,7 @@ def test_tracker_set_block_access_index(self) -> None:
199204 builder = BlockAccessListBuilder ()
200205 tracker = StateChangeTracker (builder )
201206
202- set_block_access_index (tracker , 5 )
207+ set_block_access_index (tracker , Uint ( 5 ) )
203208 assert tracker .current_block_access_index == 5
204209 # Pre-storage cache should be cleared for new block access index
205210 assert tracker .pre_storage_cache == {}
@@ -239,7 +244,7 @@ def test_tracker_storage_write_actual_change(
239244 """Test tracking storage write with actual change."""
240245 builder = BlockAccessListBuilder ()
241246 tracker = StateChangeTracker (builder )
242- tracker .current_block_access_index = 1
247+ tracker .current_block_access_index = Uint ( 1 )
243248
244249 mock_state = MagicMock ()
245250 address = Bytes20 (b"\x01 " * 20 )
@@ -269,7 +274,7 @@ def test_tracker_storage_write_no_change(
269274 """Test tracking storage write with no actual change."""
270275 builder = BlockAccessListBuilder ()
271276 tracker = StateChangeTracker (builder )
272- tracker .current_block_access_index = 1
277+ tracker .current_block_access_index = Uint ( 1 )
273278
274279 mock_state = MagicMock ()
275280 address = Bytes20 (b"\x01 " * 20 )
@@ -289,7 +294,7 @@ def test_tracker_balance_change(self) -> None:
289294 """Test tracking balance changes."""
290295 builder = BlockAccessListBuilder ()
291296 tracker = StateChangeTracker (builder )
292- tracker .current_block_access_index = 2
297+ tracker .current_block_access_index = Uint ( 2 )
293298
294299 address = Bytes20 (b"\x01 " * 20 )
295300 new_balance = U256 (1000 )
@@ -308,7 +313,7 @@ def test_tracker_nonce_change(self) -> None:
308313 """Test tracking nonce changes."""
309314 builder = BlockAccessListBuilder ()
310315 tracker = StateChangeTracker (builder )
311- tracker .current_block_access_index = 3
316+ tracker .current_block_access_index = Uint ( 3 )
312317
313318 address = Bytes20 (b"\x01 " * 20 )
314319 new_nonce = U64 (10 )
@@ -326,7 +331,7 @@ def test_tracker_code_change(self) -> None:
326331 """Test tracking code changes."""
327332 builder = BlockAccessListBuilder ()
328333 tracker = StateChangeTracker (builder )
329- tracker .current_block_access_index = 1
334+ tracker .current_block_access_index = Uint ( 1 )
330335
331336 address = Bytes20 (b"\x01 " * 20 )
332337 new_code = Bytes (b"\x60 \x80 \x60 \x40 " )
@@ -624,11 +629,10 @@ class TestValueCalls:
624629 """Test value call scenarios including 0 ETH calls."""
625630
626631 def test_zero_eth_value_call_tracks_address_without_balance (self ) -> None :
627- """Test that 0 ETH calls track recipient address without balance changes."""
628- from ethereum .forks .amsterdam .block_access_lists .tracker import (
629- track_address_access ,
630- )
631-
632+ """
633+ Test that 0 ETH calls track recipient address without
634+ balance changes.
635+ """
632636 builder = BlockAccessListBuilder ()
633637 tracker = StateChangeTracker (builder )
634638 set_block_access_index (tracker , Uint (1 ))
@@ -651,7 +655,10 @@ def test_zero_eth_value_call_tracks_address_without_balance(self) -> None:
651655 assert recipient_found
652656
653657 def test_nonzero_eth_value_call_tracks_with_balance (self ) -> None :
654- """Test that non-zero ETH calls track addresses with balance changes."""
658+ """
659+ Test that non-zero ETH calls track addresses with balance
660+ changes.
661+ """
655662 builder = BlockAccessListBuilder ()
656663 tracker = StateChangeTracker (builder )
657664 set_block_access_index (tracker , Uint (1 ))
@@ -683,10 +690,6 @@ def test_nonzero_eth_value_call_tracks_with_balance(self) -> None:
683690
684691 def test_multiple_zero_eth_calls_deduplication (self ) -> None :
685692 """Test that multiple 0 ETH calls to same address are deduplicated."""
686- from ethereum .forks .amsterdam .block_access_lists .tracker import (
687- track_address_access ,
688- )
689-
690693 builder = BlockAccessListBuilder ()
691694 tracker = StateChangeTracker (builder )
692695 set_block_access_index (tracker , Uint (1 ))
@@ -740,8 +743,8 @@ def test_storage_write_becomes_read_on_revert(
740743 begin_call_frame (tracker )
741744
742745 # Mock state for storage operations
743- class MockState :
744- _storage_tries = {}
746+ class MockState ( State ) :
747+ _storage_tries : Dict [ Address , Trie [ Bytes32 , U256 ]] = {}
745748
746749 state = MockState ()
747750
@@ -778,7 +781,10 @@ class MockState:
778781 assert account_found
779782
780783 def test_balance_changes_removed_on_revert (self ) -> None :
781- """Test that balance changes are removed on revert but address remains."""
784+ """
785+ Test that balance changes are removed on revert but address
786+ remains.
787+ """
782788 from ethereum .forks .amsterdam .block_access_lists .tracker import (
783789 begin_call_frame ,
784790 rollback_call_frame ,
@@ -813,7 +819,10 @@ def test_balance_changes_removed_on_revert(self) -> None:
813819 assert account_found
814820
815821 def test_nested_call_frames_with_partial_revert (self ) -> None :
816- """Test nested call frames where inner frame reverts but outer succeeds."""
822+ """
823+ Test nested call frames where inner frame reverts but outer
824+ succeeds.
825+ """
817826 from ethereum .forks .amsterdam .block_access_lists .tracker import (
818827 begin_call_frame ,
819828 commit_call_frame ,
0 commit comments