From 8c041edc20e040e341a2f03821026ac3124258b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bylica?= Date: Wed, 28 Dec 2022 09:17:09 +0100 Subject: [PATCH] test: Add EOF data only contract test --- test/unittests/evm_eof_test.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/test/unittests/evm_eof_test.cpp b/test/unittests/evm_eof_test.cpp index f68e5a1a85..80592a6ec4 100644 --- a/test/unittests/evm_eof_test.cpp +++ b/test/unittests/evm_eof_test.cpp @@ -416,3 +416,26 @@ TEST_P(evm, eof_function_example2) EXPECT_GAS_USED(EVMC_SUCCESS, 44544); EXPECT_EQ(output, "0000000000000000000000000000000000000000000000000000000000000262"_hex); } + + +TEST_P(evm, eof_data_only_contract) +{ + if (is_advanced()) + return; + + rev = EVMC_SHANGHAI; + auto code = "EF0001 010004 020001 0001 03daaa 00 00000000 FE"_hex; + const auto data_size_ptr = &code[code.find(0xda)]; + + intx::be::unsafe::store(data_size_ptr, uint16_t{0}); + execute(code); + EXPECT_STATUS(EVMC_INVALID_INSTRUCTION); + + intx::be::unsafe::store(data_size_ptr, uint16_t{1}); + execute(code + "aa"_hex); + EXPECT_STATUS(EVMC_INVALID_INSTRUCTION); + + intx::be::unsafe::store(data_size_ptr, uint16_t{256}); + execute(code + bytes(256, 0x01)); + EXPECT_STATUS(EVMC_INVALID_INSTRUCTION); +}