From c3bd7dc308c5fa938d935fa8283beaa667e8bb27 Mon Sep 17 00:00:00 2001 From: goodlyrottenapple Date: Tue, 21 Oct 2025 11:09:51 -0400 Subject: [PATCH] switch test_state tests to TraitsTest --- .../ethereum/state2/test/test_state.cpp | 289 ++++++++++-------- 1 file changed, 167 insertions(+), 122 deletions(-) diff --git a/category/execution/ethereum/state2/test/test_state.cpp b/category/execution/ethereum/state2/test/test_state.cpp index 8e3c56cd9..66bfee6ca 100644 --- a/category/execution/ethereum/state2/test/test_state.cpp +++ b/category/execution/ethereum/state2/test/test_state.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -92,7 +93,7 @@ namespace byte_string{0x6e, 0x65, 0x20, 0x2d, 0x20, 0x45, 0x55, 0x31, 0x34}; auto const icode2 = vm::make_shared_intercode(code2); - struct InMemoryTrieDbFixture : public ::testing::Test + struct InMemoryStateTestBase { InMemoryMachine machine; mpt::Db db{machine}; @@ -100,7 +101,7 @@ namespace vm::VM vm; }; - struct OnDiskTrieDbFixture : public ::testing::Test + struct OnDiskStateTest : public ::testing::Test { OnDiskMachine machine; mpt::Db db{machine, mpt::OnDiskDbConfig{}}; @@ -108,6 +109,19 @@ namespace vm::VM vm; }; + struct InMemoryStateTest + : public InMemoryStateTestBase + , public ::testing::Test + { + }; + + template + struct InMemoryStateTraitsTest + : public InMemoryStateTestBase + , public TraitsTest + { + }; + struct TwoOnDisk : public ::testing::Test { OnDiskMachine machine; @@ -119,15 +133,9 @@ namespace }; } -template -struct StateTest : public TDB -{ -}; - -using DBTypes = ::testing::Types; -TYPED_TEST_SUITE(StateTest, DBTypes); +DEFINE_TRAITS_FIXTURE(InMemoryStateTraitsTest); -TYPED_TEST(StateTest, access_account) +TEST_F(InMemoryStateTest, access_account) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -147,7 +155,7 @@ TYPED_TEST(StateTest, access_account) EXPECT_EQ(s.access_account(b), EVMC_ACCESS_WARM); } -TYPED_TEST(StateTest, account_exists) +TEST_F(InMemoryStateTest, account_exists) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -167,7 +175,7 @@ TYPED_TEST(StateTest, account_exists) EXPECT_FALSE(s.account_exists(b)); } -TYPED_TEST(StateTest, create_contract) +TEST_F(InMemoryStateTest, create_contract) { BlockState bs{this->tdb, this->vm}; @@ -181,7 +189,7 @@ TYPED_TEST(StateTest, create_contract) EXPECT_TRUE(s.account_exists(b)); } -TYPED_TEST(StateTest, get_balance) +TEST_F(InMemoryStateTest, get_balance) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -200,7 +208,7 @@ TYPED_TEST(StateTest, get_balance) EXPECT_EQ(s.get_current_balance_pessimistic(c), bytes32_t{0}); } -TYPED_TEST(StateTest, add_to_balance) +TEST_F(InMemoryStateTest, add_to_balance) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -218,7 +226,7 @@ TYPED_TEST(StateTest, add_to_balance) EXPECT_EQ(s.get_current_balance_pessimistic(b), bytes32_t{20'000}); } -TYPED_TEST(StateTest, get_nonce) +TEST_F(InMemoryStateTest, get_nonce) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -235,7 +243,7 @@ TYPED_TEST(StateTest, get_nonce) EXPECT_EQ(s.get_nonce(c), 0); } -TYPED_TEST(StateTest, set_nonce) +TEST_F(InMemoryStateTest, set_nonce) { BlockState bs{this->tdb, this->vm}; @@ -245,7 +253,7 @@ TYPED_TEST(StateTest, set_nonce) EXPECT_EQ(s.get_nonce(b), 1); } -TYPED_TEST(StateTest, get_code_hash) +TEST_F(InMemoryStateTest, get_code_hash) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -264,7 +272,7 @@ TYPED_TEST(StateTest, get_code_hash) EXPECT_EQ(s.get_code_hash(c), NULL_HASH); } -TYPED_TEST(StateTest, set_code_hash) +TEST_F(InMemoryStateTest, set_code_hash) { BlockState bs{this->tdb, this->vm}; @@ -275,7 +283,7 @@ TYPED_TEST(StateTest, set_code_hash) EXPECT_EQ(s.get_code_hash(b), hash1); } -TYPED_TEST(StateTest, selfdestruct) +TYPED_TEST(InMemoryStateTraitsTest, selfdestruct) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -293,22 +301,27 @@ TYPED_TEST(StateTest, selfdestruct) s.create_contract(b); s.add_to_balance(b, 28'000); - EXPECT_TRUE(s.selfdestruct>(a, c)); + EXPECT_TRUE(s.selfdestruct(a, c)); EXPECT_EQ(s.get_current_balance_pessimistic(a), bytes32_t{}); EXPECT_EQ(s.get_current_balance_pessimistic(c), bytes32_t{56'000}); - EXPECT_FALSE(s.selfdestruct>(a, c)); + EXPECT_FALSE(s.selfdestruct(a, c)); - EXPECT_TRUE(s.selfdestruct>(b, c)); + EXPECT_TRUE(s.selfdestruct(b, c)); EXPECT_EQ(s.get_current_balance_pessimistic(b), bytes32_t{}); EXPECT_EQ(s.get_current_balance_pessimistic(c), bytes32_t{84'000}); - EXPECT_FALSE(s.selfdestruct>(b, c)); + EXPECT_FALSE(s.selfdestruct(b, c)); - s.destruct_suicides>(); - EXPECT_FALSE(s.account_exists(a)); + s.destruct_suicides(); + if constexpr (TestFixture::Trait::evm_rev() >= EVMC_CANCUN) { + EXPECT_TRUE(s.account_exists(a)); + } + else { + EXPECT_FALSE(s.account_exists(a)); + } EXPECT_FALSE(s.account_exists(b)); } -TYPED_TEST(StateTest, selfdestruct_cancun_separate_tx) +TYPED_TEST(InMemoryStateTraitsTest, selfdestruct_separate_tx) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -333,16 +346,21 @@ TYPED_TEST(StateTest, selfdestruct_cancun_separate_tx) State s{bs, Incarnation{1, 2}}; - EXPECT_TRUE(s.selfdestruct>(a, c)); + EXPECT_TRUE(s.selfdestruct(a, c)); EXPECT_EQ(s.get_current_balance_pessimistic(a), bytes32_t{}); EXPECT_EQ(s.get_current_balance_pessimistic(c), bytes32_t{56'000}); - EXPECT_FALSE(s.selfdestruct>(a, c)); + EXPECT_FALSE(s.selfdestruct(a, c)); - s.destruct_suicides>(); - EXPECT_TRUE(s.account_exists(a)); + s.destruct_suicides(); + if constexpr (TestFixture::Trait::evm_rev() >= EVMC_CANCUN) { + EXPECT_TRUE(s.account_exists(a)); + } + else { + EXPECT_FALSE(s.account_exists(a)); + } } -TYPED_TEST(StateTest, selfdestruct_cancun_same_tx) +TYPED_TEST(InMemoryStateTraitsTest, selfdestruct_same_tx) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -367,16 +385,16 @@ TYPED_TEST(StateTest, selfdestruct_cancun_same_tx) State s{bs, Incarnation{1, 1}}; - EXPECT_TRUE(s.selfdestruct>(a, c)); + EXPECT_TRUE(s.selfdestruct(a, c)); EXPECT_EQ(s.get_current_balance_pessimistic(a), bytes32_t{}); EXPECT_EQ(s.get_current_balance_pessimistic(c), bytes32_t{56'000}); - EXPECT_FALSE(s.selfdestruct>(a, c)); + EXPECT_FALSE(s.selfdestruct(a, c)); - s.destruct_suicides>(); + s.destruct_suicides(); EXPECT_FALSE(s.account_exists(a)); } -TYPED_TEST(StateTest, selfdestruct_self_separate_tx) +TYPED_TEST(InMemoryStateTraitsTest, selfdestruct_self_separate_tx) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -388,31 +406,26 @@ TYPED_TEST(StateTest, selfdestruct_self_separate_tx) Code{}, BlockHeader{}); - { - // Pre-cancun behavior - State s{bs, Incarnation{1, 1}}; + State s{bs, Incarnation{1, 1}}; - EXPECT_TRUE(s.selfdestruct>(a, a)); - EXPECT_EQ(s.get_current_balance_pessimistic(a), bytes32_t{}); + EXPECT_TRUE(s.selfdestruct(a, a)); + auto balance_after_selfdestruct = s.get_current_balance_pessimistic(a); + s.destruct_suicides(); - s.destruct_suicides>(); + if constexpr (TestFixture::Trait::evm_rev() < EVMC_CANCUN) { + // Pre-cancun behavior + EXPECT_EQ(balance_after_selfdestruct, bytes32_t{}); EXPECT_FALSE(s.account_exists(a)); } - { + else { // Post-cancun behavior - State s{bs, Incarnation{1, 1}}; - - EXPECT_TRUE(s.selfdestruct>(a, a)); EXPECT_EQ( - s.get_current_balance_pessimistic(a), - bytes32_t{18'000}); // no ether burned - - s.destruct_suicides>(); + balance_after_selfdestruct, bytes32_t{18'000}); // no ether burned EXPECT_TRUE(s.account_exists(a)); } } -TYPED_TEST(StateTest, selfdestruct_self_same_tx) +TYPED_TEST(InMemoryStateTraitsTest, selfdestruct_self_same_tx) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -428,21 +441,17 @@ TYPED_TEST(StateTest, selfdestruct_self_same_tx) Code{}, BlockHeader{}); - auto run = [&]() { - State s{bs, Incarnation{1, 1}}; - - EXPECT_TRUE(s.selfdestruct(a, a)); - EXPECT_EQ(s.get_current_balance_pessimistic(a), bytes32_t{}); + State s{bs, Incarnation{1, 1}}; - s.destruct_suicides(); - EXPECT_FALSE(s.account_exists(a)); - }; // Behavior doesn't change in cancun if in same txn - run.template operator()>(); - run.template operator()>(); + EXPECT_TRUE(s.selfdestruct(a, a)); + EXPECT_EQ(s.get_current_balance_pessimistic(a), bytes32_t{}); + + s.destruct_suicides(); + EXPECT_FALSE(s.account_exists(a)); } -TYPED_TEST(StateTest, selfdestruct_merge_incarnation) +TYPED_TEST(InMemoryStateTraitsTest, selfdestruct_merge_incarnation) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -457,21 +466,26 @@ TYPED_TEST(StateTest, selfdestruct_merge_incarnation) { State s1{bs, Incarnation{1, 1}}; - s1.selfdestruct>(a, a); - s1.destruct_suicides>(); + s1.selfdestruct(a, a); + s1.destruct_suicides(); EXPECT_TRUE(bs.can_merge(s1)); bs.merge(s1); } { State s2{bs, Incarnation{1, 2}}; - EXPECT_FALSE(s2.account_exists(a)); + if constexpr (TestFixture::Trait::evm_rev() >= EVMC_CANCUN) { + EXPECT_TRUE(s2.account_exists(a)); + } + else { + EXPECT_FALSE(s2.account_exists(a)); + } s2.create_contract(a); EXPECT_EQ(s2.get_storage(a, key1), bytes32_t{}); } } -TYPED_TEST(StateTest, selfdestruct_merge_create_incarnation) +TYPED_TEST(InMemoryStateTraitsTest, selfdestruct_merge_create_incarnation) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -486,15 +500,20 @@ TYPED_TEST(StateTest, selfdestruct_merge_create_incarnation) { State s1{bs, Incarnation{1, 1}}; - s1.selfdestruct>(a, b); - s1.destruct_suicides>(); + s1.selfdestruct(a, b); + s1.destruct_suicides(); EXPECT_TRUE(bs.can_merge(s1)); bs.merge(s1); } { State s2{bs, Incarnation{1, 2}}; - EXPECT_FALSE(s2.account_exists(a)); + if constexpr (TestFixture::Trait::evm_rev() >= EVMC_CANCUN) { + EXPECT_TRUE(s2.account_exists(a)); + } + else { + EXPECT_FALSE(s2.account_exists(a)); + } s2.create_contract(a); EXPECT_EQ(s2.get_storage(a, key1), bytes32_t{}); @@ -515,7 +534,7 @@ TYPED_TEST(StateTest, selfdestruct_merge_create_incarnation) } } -TYPED_TEST(StateTest, selfdestruct_merge_commit_incarnation) +TYPED_TEST(InMemoryStateTraitsTest, selfdestruct_merge_commit_incarnation) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -530,8 +549,8 @@ TYPED_TEST(StateTest, selfdestruct_merge_commit_incarnation) { State s1{bs, Incarnation{1, 1}}; - s1.selfdestruct>(a, a); - s1.destruct_suicides>(); + s1.selfdestruct(a, a); + s1.destruct_suicides(); EXPECT_TRUE(bs.can_merge(s1)); bs.merge(s1); @@ -558,7 +577,8 @@ TYPED_TEST(StateTest, selfdestruct_merge_commit_incarnation) } } -TYPED_TEST(StateTest, selfdestruct_merge_create_commit_incarnation) +TYPED_TEST( + InMemoryStateTraitsTest, selfdestruct_merge_create_commit_incarnation) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -575,8 +595,8 @@ TYPED_TEST(StateTest, selfdestruct_merge_create_commit_incarnation) { State s1{bs, Incarnation{1, 1}}; - s1.selfdestruct>(a, a); - s1.destruct_suicides>(); + s1.selfdestruct(a, a); + s1.destruct_suicides(); EXPECT_TRUE(bs.can_merge(s1)); bs.merge(s1); @@ -605,13 +625,26 @@ TYPED_TEST(StateTest, selfdestruct_merge_create_commit_incarnation) this->tdb.set_block_and_prefix(1); EXPECT_EQ(this->tdb.read_storage(a, Incarnation{1, 2}, key1), value1); EXPECT_EQ(this->tdb.read_storage(a, Incarnation{1, 2}, key2), value2); - EXPECT_EQ( - this->tdb.state_root(), - 0x5B853ED6066181BF0E0D405DA0926FD7707446BCBE670DE13C9EDA7A84F6A401_bytes32); + if constexpr (TestFixture::Trait::evm_rev() >= EVMC_CANCUN) { + EXPECT_EQ( + this->tdb.read_storage(a, Incarnation{1, 2}, key3), value3); + + EXPECT_EQ( + this->tdb.state_root(), + 0x425AE06EDEDEC27A17412E8A2BC2F148A4AF94EE510FFB7AEA81E1ABF5450768_bytes32); + } + else { + EXPECT_EQ(this->tdb.read_storage(a, Incarnation{1, 2}, key3), null); + EXPECT_EQ( + this->tdb.state_root(), + 0x5B853ED6066181BF0E0D405DA0926FD7707446BCBE670DE13C9EDA7A84F6A401_bytes32); + } } } -TYPED_TEST(StateTest, selfdestruct_create_destroy_create_commit_incarnation) +TYPED_TEST( + InMemoryStateTraitsTest, + selfdestruct_create_destroy_create_commit_incarnation) { BlockState bs{this->tdb, this->vm}; { @@ -619,8 +652,8 @@ TYPED_TEST(StateTest, selfdestruct_create_destroy_create_commit_incarnation) s1.create_contract(a); s1.set_storage(a, key1, value1); - s1.selfdestruct>(a, b); - s1.destruct_suicides>(); + s1.selfdestruct(a, b); + s1.destruct_suicides(); EXPECT_TRUE(bs.can_merge(s1)); bs.merge(s1); @@ -652,7 +685,7 @@ TYPED_TEST(StateTest, selfdestruct_create_destroy_create_commit_incarnation) } } -TYPED_TEST(StateTest, create_conflict_address_incarnation) +TEST_F(InMemoryStateTest, create_conflict_address_incarnation) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -674,7 +707,7 @@ TYPED_TEST(StateTest, create_conflict_address_incarnation) EXPECT_EQ(s1.get_storage(a, key2), value2); } -TYPED_TEST(StateTest, destruct_touched_dead) +TYPED_TEST(InMemoryStateTraitsTest, destruct_touched_dead) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -689,37 +722,37 @@ TYPED_TEST(StateTest, destruct_touched_dead) State s{bs, Incarnation{1, 1}}; EXPECT_TRUE(s.account_exists(a)); s.destruct_touched_dead(); - s.destruct_suicides>(); + s.destruct_suicides(); EXPECT_TRUE(s.account_exists(a)); EXPECT_TRUE(s.account_exists(b)); s.subtract_from_balance(a, 10'000); s.destruct_touched_dead(); - s.destruct_suicides>(); + s.destruct_suicides(); EXPECT_FALSE(s.account_exists(a)); EXPECT_TRUE(s.account_exists(b)); s.touch(b); s.destruct_touched_dead(); - s.destruct_suicides>(); + s.destruct_suicides(); EXPECT_FALSE(s.account_exists(b)); s.add_to_balance(a, 0); EXPECT_TRUE(s.account_exists(a)); s.destruct_touched_dead(); - s.destruct_suicides>(); + s.destruct_suicides(); EXPECT_FALSE(s.account_exists(a)); s.subtract_from_balance(a, 0); EXPECT_TRUE(s.account_exists(a)); s.destruct_touched_dead(); - s.destruct_suicides>(); + s.destruct_suicides(); EXPECT_FALSE(s.account_exists(a)); } // Storage -TYPED_TEST(StateTest, access_storage) +TEST_F(InMemoryStateTest, access_storage) { BlockState bs{this->tdb, this->vm}; @@ -734,7 +767,7 @@ TYPED_TEST(StateTest, access_storage) EXPECT_EQ(s.access_storage(b, key2), EVMC_ACCESS_WARM); } -TYPED_TEST(StateTest, get_storage) +TEST_F(InMemoryStateTest, get_storage) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -764,7 +797,7 @@ TYPED_TEST(StateTest, get_storage) EXPECT_EQ(s.get_storage(b, key3), null); } -TYPED_TEST(StateTest, set_storage_modified) +TEST_F(InMemoryStateTest, set_storage_modified) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -784,7 +817,7 @@ TYPED_TEST(StateTest, set_storage_modified) EXPECT_EQ(s.get_storage(a, key2), value3); } -TYPED_TEST(StateTest, set_storage_deleted) +TEST_F(InMemoryStateTest, set_storage_deleted) { BlockState bs{this->tdb, this->vm}; @@ -808,7 +841,7 @@ TYPED_TEST(StateTest, set_storage_deleted) EXPECT_EQ(s.get_storage(b, key1), value2); } -TYPED_TEST(StateTest, set_storage_added) +TEST_F(InMemoryStateTest, set_storage_added) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -827,7 +860,7 @@ TYPED_TEST(StateTest, set_storage_added) EXPECT_EQ(s.get_storage(b, key1), value2); } -TYPED_TEST(StateTest, set_storage_different_assigned) +TEST_F(InMemoryStateTest, set_storage_different_assigned) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -849,7 +882,7 @@ TYPED_TEST(StateTest, set_storage_different_assigned) EXPECT_EQ(s.get_storage(a, key2), value1); } -TYPED_TEST(StateTest, set_storage_unchanged_assigned) +TEST_F(InMemoryStateTest, set_storage_unchanged_assigned) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -869,7 +902,7 @@ TYPED_TEST(StateTest, set_storage_unchanged_assigned) EXPECT_EQ(s.get_storage(a, key2), value2); } -TYPED_TEST(StateTest, set_storage_added_deleted) +TEST_F(InMemoryStateTest, set_storage_added_deleted) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -886,7 +919,7 @@ TYPED_TEST(StateTest, set_storage_added_deleted) EXPECT_EQ(s.get_storage(b, key1), null); } -TYPED_TEST(StateTest, set_storage_added_deleted_null) +TEST_F(InMemoryStateTest, set_storage_added_deleted_null) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -903,7 +936,7 @@ TYPED_TEST(StateTest, set_storage_added_deleted_null) EXPECT_EQ(s.get_storage(b, key1), null); } -TYPED_TEST(StateTest, set_storage_modify_delete) +TEST_F(InMemoryStateTest, set_storage_modify_delete) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -924,7 +957,7 @@ TYPED_TEST(StateTest, set_storage_modify_delete) EXPECT_EQ(s.get_storage(b, key2), null); } -TYPED_TEST(StateTest, set_storage_delete_restored) +TEST_F(InMemoryStateTest, set_storage_delete_restored) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -945,7 +978,7 @@ TYPED_TEST(StateTest, set_storage_delete_restored) EXPECT_EQ(s.get_storage(b, key2), value2); } -TYPED_TEST(StateTest, set_storage_modified_restored) +TEST_F(InMemoryStateTest, set_storage_modified_restored) { BlockState bs{this->tdb, this->vm}; commit_sequential( @@ -967,7 +1000,7 @@ TYPED_TEST(StateTest, set_storage_modified_restored) } // Code -TYPED_TEST(StateTest, get_code_size) +TEST_F(InMemoryStateTest, get_code_size) { BlockState bs{this->tdb, this->vm}; Account acct{.code_hash = code_hash1}; @@ -981,7 +1014,7 @@ TYPED_TEST(StateTest, get_code_size) EXPECT_EQ(s.get_code_size(a), code1.size()); } -TYPED_TEST(StateTest, copy_code) +TEST_F(InMemoryStateTest, copy_code) { BlockState bs{this->tdb, this->vm}; Account acct_a{.code_hash = code_hash1}; @@ -1033,7 +1066,7 @@ TYPED_TEST(StateTest, copy_code) } } -TYPED_TEST(StateTest, get_code) +TEST_F(InMemoryStateTest, get_code) { byte_string const contract{0x60, 0x34, 0x00}; @@ -1061,7 +1094,7 @@ TYPED_TEST(StateTest, get_code) } } -TYPED_TEST(StateTest, set_code) +TEST_F(InMemoryStateTest, set_code) { BlockState bs{this->tdb, this->vm}; @@ -1078,7 +1111,7 @@ TYPED_TEST(StateTest, set_code) byte_string_view(b_icode->code(), b_icode->size()), byte_string{}); } -TYPED_TEST(StateTest, can_merge_same_account_different_storage) +TEST_F(InMemoryStateTest, can_merge_same_account_different_storage) { BlockState bs{this->tdb, this->vm}; @@ -1113,7 +1146,7 @@ TYPED_TEST(StateTest, can_merge_same_account_different_storage) bs.merge(cs); } -TYPED_TEST(StateTest, cant_merge_colliding_storage) +TEST_F(InMemoryStateTest, cant_merge_colliding_storage) { BlockState bs{this->tdb, this->vm}; @@ -1149,7 +1182,7 @@ TYPED_TEST(StateTest, cant_merge_colliding_storage) } } -TYPED_TEST(StateTest, merge_txn0_and_txn1) +TYPED_TEST(InMemoryStateTraitsTest, merge_txn0_and_txn1) { BlockState bs{this->tdb, this->vm}; @@ -1185,13 +1218,13 @@ TYPED_TEST(StateTest, merge_txn0_and_txn1) EXPECT_TRUE(cs.account_exists(c)); EXPECT_EQ(cs.set_storage(c, key1, null), EVMC_STORAGE_DELETED); EXPECT_EQ(cs.set_storage(c, key2, null), EVMC_STORAGE_DELETED); - EXPECT_TRUE(cs.selfdestruct>(c, a)); - cs.destruct_suicides>(); + EXPECT_TRUE(cs.selfdestruct(c, a)); + cs.destruct_suicides(); EXPECT_TRUE(bs.can_merge(cs)); bs.merge(cs); } -TYPED_TEST(StateTest, commit_storage_and_account_together_regression) +TEST_F(InMemoryStateTest, commit_storage_and_account_together_regression) { BlockState bs{this->tdb, this->vm}; State as{bs, Incarnation{1, 1}}; @@ -1218,7 +1251,7 @@ TYPED_TEST(StateTest, commit_storage_and_account_together_regression) EXPECT_EQ(this->tdb.read_storage(a, Incarnation{1, 1}, key1), value1); } -TYPED_TEST(StateTest, set_and_then_clear_storage_in_same_commit) +TEST_F(InMemoryStateTest, set_and_then_clear_storage_in_same_commit) { using namespace intx; BlockState bs{this->tdb, this->vm}; @@ -1234,7 +1267,7 @@ TYPED_TEST(StateTest, set_and_then_clear_storage_in_same_commit) this->tdb.read_storage(a, Incarnation{1, 1}, key1), monad::bytes32_t{}); } -TYPED_TEST(StateTest, commit_twice) +TYPED_TEST(InMemoryStateTraitsTest, commit_twice) { this->tdb.reset_root( load_header({}, this->db, BlockHeader{.number = 8}), 8); @@ -1291,8 +1324,8 @@ TYPED_TEST(StateTest, commit_twice) EXPECT_TRUE(cs.account_exists(c)); EXPECT_EQ(cs.set_storage(c, key1, null), EVMC_STORAGE_DELETED); EXPECT_EQ(cs.set_storage(c, key2, value1), EVMC_STORAGE_MODIFIED); - EXPECT_TRUE(cs.selfdestruct>(c, a)); - cs.destruct_suicides>(); + EXPECT_TRUE(cs.selfdestruct(c, a)); + cs.destruct_suicides(); EXPECT_TRUE(bs.can_merge(cs)); bs.merge(cs); bs.commit( @@ -1300,9 +1333,15 @@ TYPED_TEST(StateTest, commit_twice) EXPECT_EQ( this->tdb.read_storage(c, Incarnation{2, 1}, key1), monad::bytes32_t{}); - EXPECT_EQ( - this->tdb.read_storage(c, Incarnation{2, 1}, key2), - monad::bytes32_t{}); + if constexpr (TestFixture::Trait::evm_rev() >= EVMC_CANCUN) { + EXPECT_EQ( + this->tdb.read_storage(c, Incarnation{2, 1}, key2), value1); + } + else { + EXPECT_EQ( + this->tdb.read_storage(c, Incarnation{2, 1}, key2), + monad::bytes32_t{}); + } // verify finalized state is the same as round 6 this->tdb.finalize(11, bytes32_t{11}); @@ -1310,13 +1349,19 @@ TYPED_TEST(StateTest, commit_twice) EXPECT_EQ( this->tdb.read_storage(c, Incarnation{2, 1}, key1), monad::bytes32_t{}); - EXPECT_EQ( - this->tdb.read_storage(c, Incarnation{2, 1}, key2), - monad::bytes32_t{}); + if constexpr (TestFixture::Trait::evm_rev() >= EVMC_CANCUN) { + EXPECT_EQ( + this->tdb.read_storage(c, Incarnation{2, 1}, key2), value1); + } + else { + EXPECT_EQ( + this->tdb.read_storage(c, Incarnation{2, 1}, key2), + monad::bytes32_t{}); + } } } -TEST_F(OnDiskTrieDbFixture, commit_multiple_proposals) +TEST_F(OnDiskStateTest, commit_multiple_proposals) { load_header({}, this->db, BlockHeader{.number = 9}); @@ -1427,7 +1472,7 @@ TEST_F(OnDiskTrieDbFixture, commit_multiple_proposals) EXPECT_EQ(state_root_round8, this->tdb.state_root()); } -TEST_F(OnDiskTrieDbFixture, proposal_basics) +TEST_F(OnDiskStateTest, proposal_basics) { this->tdb.reset_root( load_header({}, this->db, BlockHeader{.number = 9}), 9); @@ -1464,7 +1509,7 @@ TEST_F(OnDiskTrieDbFixture, proposal_basics) EXPECT_EQ(db_cache.read_account(a).value().balance, 40'000); } -TEST_F(OnDiskTrieDbFixture, undecided_proposals) +TEST_F(OnDiskStateTest, undecided_proposals) { load_header({}, this->db, BlockHeader{.number = 9}); DbCache db_cache(this->tdb);