From fd52565556ee4672769a0456a95864a6ef8f4d80 Mon Sep 17 00:00:00 2001 From: jonny rhea Date: Mon, 18 Nov 2019 23:50:00 -0600 Subject: [PATCH] implemented test_return_block_number --- .../test/java/org/ethereum/evmc/EvmcTest.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/bindings/java/java/src/test/java/org/ethereum/evmc/EvmcTest.java b/bindings/java/java/src/test/java/org/ethereum/evmc/EvmcTest.java index 8a8f005e0..d657e625e 100644 --- a/bindings/java/java/src/test/java/org/ethereum/evmc/EvmcTest.java +++ b/bindings/java/java/src/test/java/org/ethereum/evmc/EvmcTest.java @@ -70,6 +70,34 @@ void test_counter() { assert (gasLeft == 0); } + @Test + void test_return_block_number() { + EvmcVm.init(System.getProperty("user.dir") + "/../c/build/example_vm.so"); + HostContext context = new TestHostContext(); + int BYZANTIUM = 4; + int EVMC_CALL = 0; + int kind = EVMC_CALL; + char[] sender = "39bf71de1b7d7be3b51\0".toCharArray(); + char[] destination = "53cf77204eEef952e25\0".toCharArray(); + char[] value = "1\0".toCharArray(); + char[] inputData = "hello w\0".toCharArray(); + long gas = 200000; + int depth = 0; + ByteBuffer msg = + new TestMessage(kind, sender, destination, value, inputData, gas, depth).toByteBuffer(); + + byte[] code = {0x43, 0x60, 0x00, 0x52, 0x59, 0x60, 0x00, (byte) 0xf3}; // return_block_number( + ByteBuffer bbcode = ByteBuffer.allocateDirect(code.length).put(code); + + ByteBuffer result = + EvmcVm.execute(context, BYZANTIUM, msg, bbcode, code.length).order(ByteOrder.nativeOrder()); + int statusCode = result.getInt(); + result.getInt(); // padding + long gasLeft = result.getLong(); + assert (statusCode == 0); + assert (gasLeft == gas/2); + } + /** Tests callbacks: get_tx_context_fn & set_storage_fn */ @Test void test_save_return_block_number() {