use of org.aion.precompiled.ContractFactory in project aion by aionnetwork.
the class EDVerifyContractTest method invalidInputLengthTest.
@Test
public void invalidInputLengthTest() {
// note the length is 129
byte[] input = new byte[129];
input[128] = 0x1;
PrecompiledTransactionContext ctx = new PrecompiledTransactionContext(ContractInfo.ED_VERIFY.contractAddress, origin, caller, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), txHash, txHash, blockNumber, nrgLimit, depth);
PrecompiledContract contract = new ContractFactory().getPrecompiledContract(ctx, externalStateForTests);
PrecompiledTransactionResult result = contract.execute(input, 21000L);
assertEquals("FAILURE", result.getStatus().causeOfError);
}
use of org.aion.precompiled.ContractFactory in project aion by aionnetwork.
the class EDVerifyContractTest method incorrectInputTest.
@Test
public void incorrectInputTest() {
byte[] input = setupInput();
// modify sig
input[22] = (byte) ((int) (input[32]) - 10);
// modify sig
input[33] = (byte) ((int) (input[33]) + 4);
// modify sig
input[99] = (byte) ((int) (input[33]) - 40);
PrecompiledTransactionContext ctx = new PrecompiledTransactionContext(ContractInfo.ED_VERIFY.contractAddress, origin, caller, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), txHash, txHash, blockNumber, nrgLimit, depth);
PrecompiledContract contract = new ContractFactory().getPrecompiledContract(ctx, externalStateForTests);
assertNotNull(contract);
PrecompiledTransactionResult result = contract.execute(input, 21000L);
assertThat(result.getStatus().isSuccess());
assertThat(Arrays.equals(result.getReturnData(), AddressUtils.ZERO_ADDRESS.toByteArray()));
}
use of org.aion.precompiled.ContractFactory in project aion by aionnetwork.
the class EDVerifyContractTest method shouldFailIfNotEnoughEnergy.
@Test
public void shouldFailIfNotEnoughEnergy() {
byte[] input = setupInput();
PrecompiledTransactionContext ctx = new PrecompiledTransactionContext(ContractInfo.ED_VERIFY.contractAddress, origin, caller, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), txHash, txHash, blockNumber, nrgLimit, depth);
PrecompiledContract contract = new ContractFactory().getPrecompiledContract(ctx, externalStateForTests);
PrecompiledTransactionResult result = contract.execute(input, 2999L);
assertEquals("OUT_OF_NRG", result.getStatus().causeOfError);
}
use of org.aion.precompiled.ContractFactory in project aion by aionnetwork.
the class BenchmarkTest method setup.
@Before
public void setup() {
cf = new ContractFactory();
txHash = RandomUtils.nextBytes(32);
origin = new AionAddress(RandomUtils.nextBytes(32));
caller = origin;
blockNumber = 2000001;
nrgLimit = 20000;
depth = 0;
}
use of org.aion.precompiled.ContractFactory in project aion by aionnetwork.
the class EDVerifyContractTest method shouldFailIfNotEnoughEnergy.
@Test
public void shouldFailIfNotEnoughEnergy() {
byte[] input = setupInput();
PrecompiledTransactionContext ctx = new PrecompiledTransactionContext(ContractInfo.ED_VERIFY.contractAddress, origin, caller, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), txHash, txHash, blockNumber, nrgLimit, depth);
PrecompiledContract contract = new ContractFactory().getPrecompiledContract(ctx, externalStateForTests);
PrecompiledTransactionResult result = contract.execute(input, 2999L);
assertEquals("OUT_OF_NRG", result.getStatus().causeOfError);
}
Aggregations