private void assertAccountsMatch( final WorldState worldState, final List<Account> expectedAccounts) { for (Account expectedAccount : expectedAccounts) { Account actualAccount = worldState.get(expectedAccount.getAddress()); assertThat(actualAccount).isNotNull(); // Check each field assertThat(actualAccount.getNonce()).isEqualTo(expectedAccount.getNonce()); assertThat(actualAccount.getCode()).isEqualTo(expectedAccount.getCode()); assertThat(actualAccount.getBalance()).isEqualTo(expectedAccount.getBalance()); Map<Bytes32, UInt256> actualStorage = actualAccount.storageEntriesFrom(Bytes32.ZERO, 500); Map<Bytes32, UInt256> expectedStorage = expectedAccount.storageEntriesFrom(Bytes32.ZERO, 500); assertThat(actualStorage).isEqualTo(expectedStorage); } } }
private TransactionReceipt createReceipt( final TransactionProcessor.Result result, final WorldState worldState, final long gasUsed) { return new TransactionReceipt(worldState.rootHash(), gasUsed, Lists.newArrayList()); }
@Test public void containsAccount_AccountDoesNotExist() { final WorldState worldState = createEmpty(); assertNull(worldState.get(ADDRESS)); }
assertEquals("VM output differs", spec.getOut(), frame.getOutputData()); assertEquals( "Final world state differs", spec.getFinalWorldState().rootHash(), worldState.rootHash());
@Test public void getAccountStorageBlockNumber() { final List<Address> addresses = Arrays.asList(gen.address(), gen.address(), gen.address()); final List<UInt256> storageKeys = Arrays.asList(gen.storageKey(), gen.storageKey(), gen.storageKey()); final BlockchainWithData data = setupBlockchain(3, addresses, storageKeys); final BlockchainQueries queries = data.blockchainQueries; final Hash latestStateRoot0 = data.blockData.get(2).block.getHeader().getStateRoot(); final WorldState worldState0 = data.worldStateArchive.get(latestStateRoot0); addresses.forEach( address -> storageKeys.forEach( storageKey -> { final Account actualAccount0 = worldState0.get(address); final UInt256 result = queries.storageAt(address, storageKey, 2L).get(); assertEquals(actualAccount0.getStorageValue(storageKey), result); })); final Hash latestStateRoot1 = data.blockData.get(1).block.getHeader().getStateRoot(); final WorldState worldState1 = data.worldStateArchive.get(latestStateRoot1); addresses.forEach( address -> storageKeys.forEach( storageKey -> { final Account actualAccount1 = worldState1.get(address); final UInt256 result = queries.storageAt(address, storageKey, 1L).get(); assertEquals(actualAccount1.getStorageValue(storageKey), result); })); }
@Test public void getAccountBalanceAtBlockNumber() { final List<Address> addresses = Arrays.asList(gen.address(), gen.address(), gen.address()); final int blockCount = 3; final BlockchainWithData data = setupBlockchain(blockCount, addresses); final BlockchainQueries queries = data.blockchainQueries; for (int i = 0; i < blockCount; i++) { final long curBlockNumber = i; final Hash stateRoot = data.blockData.get(i).block.getHeader().getStateRoot(); final WorldState worldState = data.worldStateArchive.get(stateRoot); assertTrue(addresses.size() > 0); addresses.forEach( address -> { final Account actualAccount = worldState.get(address); final Wei result = queries.accountBalance(address, curBlockNumber).get(); assertEquals(actualAccount.getBalance(), result); }); } }
assertThat(localWorldState.get(otherAccount.getAddress())).isNull();