def test_generate_custom_genesis_state(self): state_overrides = {"balance": to_wei(900000, "ether")} invalid_overrides = {"gato": "con botas"} # Test creating a specific number of accounts account_keys = get_default_account_keys(quantity=2) assert len(account_keys) == 2 account_keys = get_default_account_keys(quantity=10) assert len(account_keys) == 10 # Test the underlying state merging functionality genesis_state = generate_genesis_state_for_keys( account_keys=account_keys, overrides=state_overrides) assert len(genesis_state) == len(account_keys) == 10 for _public_address, account_state in genesis_state.items(): assert account_state["balance"] == state_overrides["balance"] assert account_state["code"] == b"" # Only existing default genesis state keys can be overridden with pytest.raises(ValueError): _invalid_genesis_state = generate_genesis_state_for_keys( account_keys=account_keys, overrides=invalid_overrides) # Use staticmethod state overriding genesis_state = PyEVMBackend.generate_genesis_state( overrides=state_overrides, num_accounts=3) assert len(genesis_state) == 3 for _public_address, account_state in genesis_state.items(): assert account_state["balance"] == state_overrides["balance"] assert account_state["code"] == b"" # Only existing default genesis state keys can be overridden with pytest.raises(ValueError): _invalid_genesis_state = PyEVMBackend.generate_genesis_state( overrides=invalid_overrides)
def test_override_genesis_state(self): state_overrides = {"balance": to_wei(900000, "ether")} test_accounts = 3 # Initialize PyEVM backend with custom genesis state genesis_state = PyEVMBackend.generate_genesis_state( overrides=state_overrides, num_accounts=test_accounts) # Test the correct number of accounts are created with the specified balance override pyevm_backend = PyEVMBackend(genesis_state=genesis_state) assert len(pyevm_backend.account_keys) == test_accounts for private_key in pyevm_backend.account_keys: account = private_key.public_key.to_canonical_address() balance = pyevm_backend.get_balance(account=account) assert balance == state_overrides["balance"] # Test integration with EthereumTester tester = EthereumTester(backend=pyevm_backend) for private_key in pyevm_backend.account_keys: account = private_key.public_key.to_checksum_address() balance = tester.get_balance(account=account) assert balance == state_overrides["balance"]