Skip to content

Commit d975f65

Browse files
committed
func(vm): add unit test cases
1 parent 709b645 commit d975f65

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed

framework/src/test/java/org/tron/common/runtime/vm/BatchValidateSignContractTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import org.tron.core.db.TransactionTrace;
1616
import org.tron.core.vm.PrecompiledContracts;
1717
import org.tron.core.vm.PrecompiledContracts.BatchValidateSign;
18+
import org.tron.core.vm.config.VMConfig;
1819

1920

2021
@Slf4j
@@ -74,6 +75,13 @@ public void staticCallTest() {
7475
ret = validateMultiSign(hash, signatures, addresses);
7576
Assert.assertEquals(ret.getValue().length, 32);
7677
Assert.assertArrayEquals(ret.getValue(), new byte[32]);
78+
79+
//after optimized
80+
VMConfig.initAllowTvmSelfdestructRestriction(1);
81+
ret = validateMultiSign(hash, signatures, addresses);
82+
Assert.assertEquals(ret.getValue().length, 32);
83+
Assert.assertArrayEquals(ret.getValue(), new byte[32]);
84+
VMConfig.initAllowTvmSelfdestructRestriction(0);
7785
System.gc(); // force triggering full gc to avoid timeout for next test
7886
}
7987

framework/src/test/java/org/tron/common/runtime/vm/OperationsTest.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,26 @@
1616
import org.junit.Ignore;
1717
import org.junit.Test;
1818
import org.mockito.Mockito;
19+
import org.springframework.beans.factory.annotation.Autowired;
1920
import org.springframework.util.StringUtils;
2021
import org.tron.common.BaseTest;
2122
import org.tron.common.parameter.CommonParameter;
2223
import org.tron.common.runtime.InternalTransaction;
2324
import org.tron.common.utils.DecodeUtil;
2425
import org.tron.core.Constant;
26+
import org.tron.core.Wallet;
2527
import org.tron.core.capsule.AccountCapsule;
2628
import org.tron.core.config.args.Args;
2729
import org.tron.core.exception.ContractValidateException;
2830
import org.tron.core.store.StoreFactory;
2931
import org.tron.core.vm.EnergyCost;
3032
import org.tron.core.vm.JumpTable;
33+
import org.tron.core.vm.MessageCall;
3134
import org.tron.core.vm.Op;
3235
import org.tron.core.vm.Operation;
3336
import org.tron.core.vm.OperationActions;
3437
import org.tron.core.vm.OperationRegistry;
38+
import org.tron.core.vm.PrecompiledContracts;
3539
import org.tron.core.vm.VM;
3640
import org.tron.core.vm.config.ConfigLoader;
3741
import org.tron.core.vm.config.VMConfig;
@@ -46,6 +50,8 @@ public class OperationsTest extends BaseTest {
4650
private ProgramInvokeMockImpl invoke;
4751
private Program program;
4852
private final JumpTable jumpTable = OperationRegistry.getTable();
53+
@Autowired
54+
private Wallet wallet;
4955

5056
@BeforeClass
5157
public static void init() {
@@ -755,6 +761,30 @@ public void testPushDupSwapAndLogOperations() throws ContractValidateException {
755761
Assert.assertEquals(2158, program.getResult().getEnergyUsed());
756762
}
757763

764+
@Test
765+
public void testCallOperations() throws ContractValidateException {
766+
invoke = new ProgramInvokeMockImpl();
767+
Protocol.Transaction trx = Protocol.Transaction.getDefaultInstance();
768+
InternalTransaction interTrx =
769+
new InternalTransaction(trx, InternalTransaction.TrxType.TRX_UNKNOWN_TYPE);
770+
771+
byte prePrefixByte = DecodeUtil.addressPreFixByte;
772+
DecodeUtil.addressPreFixByte = Constant.ADD_PRE_FIX_BYTE_MAINNET;
773+
VMConfig.initAllowTvmSelfdestructRestriction(1);
774+
775+
program = new Program(new byte[0], new byte[0], invoke, interTrx);
776+
MessageCall messageCall = new MessageCall(
777+
Op.CALL, new DataWord(10000),
778+
DataWord.ZERO(), DataWord.ZERO(),
779+
DataWord.ZERO(), DataWord.ZERO(),
780+
DataWord.ZERO(), DataWord.ZERO(),
781+
DataWord.ZERO(), false);
782+
program.callToPrecompiledAddress(messageCall, new PrecompiledContracts.ECRecover());
783+
784+
DecodeUtil.addressPreFixByte = prePrefixByte;
785+
VMConfig.initAllowTvmSelfdestructRestriction(0);
786+
}
787+
758788
@Test
759789
public void testOtherOperations() throws ContractValidateException {
760790
invoke = new ProgramInvokeMockImpl();

framework/src/test/java/org/tron/common/runtime/vm/ValidateMultiSignContractTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.tron.core.config.args.Args;
2626
import org.tron.core.store.StoreFactory;
2727
import org.tron.core.vm.PrecompiledContracts.ValidateMultiSign;
28+
import org.tron.core.vm.config.VMConfig;
2829
import org.tron.core.vm.repository.Repository;
2930
import org.tron.core.vm.repository.RepositoryImpl;
3031
import org.tron.protos.Protocol;
@@ -123,6 +124,13 @@ public void testDifferentCase() {
123124
validateMultiSign(StringUtil.encode58Check(key.getAddress()), permissionId, data, signs)
124125
.getValue(), DataWord.ONE().getData());
125126

127+
//after optimized
128+
VMConfig.initAllowTvmSelfdestructRestriction(1);
129+
Assert.assertArrayEquals(
130+
validateMultiSign(StringUtil.encode58Check(key.getAddress()), permissionId, data, signs)
131+
.getValue(), DataWord.ONE().getData());
132+
VMConfig.initAllowTvmSelfdestructRestriction(0);
133+
126134
//weight not enough
127135
signs = new ArrayList<>();
128136
signs.add(Hex.toHexString(key1.sign(toSign).toByteArray()));

0 commit comments

Comments
 (0)