Skip to content

Commit 1ec48e1

Browse files
luraismorgan.peng
andauthored
feat(test): add unit tests of framework module (#5534)
Co-authored-by: morgan.peng <[email protected]>
1 parent 942981f commit 1ec48e1

File tree

7 files changed

+345
-0
lines changed

7 files changed

+345
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.tron.core.capsule.utils;
2+
3+
import org.bouncycastle.util.encoders.Hex;
4+
import org.junit.Assert;
5+
import org.junit.Test;
6+
import org.tron.common.utils.ByteUtil;
7+
8+
public class DecodeResultTest {
9+
10+
@Test
11+
public void testConstruct() {
12+
DecodeResult decodeResult = new DecodeResult(0, "decoded");
13+
Assert.assertEquals(decodeResult.getPos(), 0);
14+
Assert.assertEquals(decodeResult.getDecoded(), "decoded");
15+
Assert.assertEquals(decodeResult.toString(), "decoded");
16+
}
17+
18+
@Test
19+
public void testToString() {
20+
DecodeResult decodeResult = new DecodeResult(0, "decoded");
21+
Assert.assertEquals(decodeResult.toString(), "decoded");
22+
decodeResult = new DecodeResult(0, ByteUtil.intToBytes(1000));
23+
Assert.assertEquals(Hex.toHexString(ByteUtil.intToBytes(1000)), decodeResult.toString());
24+
Object[] decodedData = {"aa","bb"};
25+
decodeResult = new DecodeResult(0, decodedData);
26+
Assert.assertEquals("aabb", decodeResult.toString());
27+
}
28+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package org.tron.core.capsule.utils;
2+
3+
import org.junit.Assert;
4+
import org.junit.Test;
5+
6+
public class RLPListTest {
7+
8+
@Test
9+
public void testRecursivePrint() {
10+
RLPItem element = new RLPItem("rlpItem".getBytes());
11+
Assert.assertEquals(new String(element.getRLPData()), "rlpItem");
12+
RLPList.recursivePrint(element);
13+
RLPList rlpList = new RLPList();
14+
rlpList.add(new RLPItem("rlpItem0".getBytes()));
15+
RLPList.recursivePrint(rlpList);
16+
Assert.assertThrows(RuntimeException.class, () -> RLPList.recursivePrint(null));
17+
}
18+
19+
@Test
20+
public void testGetRLPData() {
21+
RLPList rlpList = new RLPList();
22+
rlpList.setRLPData("rlpData".getBytes());
23+
Assert.assertEquals(new String(rlpList.getRLPData()), "rlpData");
24+
}
25+
26+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package org.tron.core.services.jsonrpc;
2+
3+
import com.google.protobuf.ByteString;
4+
import javax.annotation.Resource;
5+
import org.junit.Assert;
6+
import org.junit.Test;
7+
import org.tron.common.BaseTest;
8+
import org.tron.common.utils.ByteArray;
9+
import org.tron.core.Constant;
10+
import org.tron.core.Wallet;
11+
import org.tron.core.capsule.BlockCapsule;
12+
import org.tron.core.config.args.Args;
13+
import org.tron.core.services.jsonrpc.types.BlockResult;
14+
import org.tron.protos.Protocol;
15+
16+
public class BlockResultTest extends BaseTest {
17+
18+
@Resource
19+
private Wallet wallet;
20+
21+
static {
22+
Args.setParam(new String[]{"-d", dbPath()}, Constant.TEST_CONF);
23+
}
24+
25+
@Test
26+
public void testBlockResult() {
27+
Protocol.Transaction.raw.Builder raw = Protocol.Transaction.raw.newBuilder();
28+
Protocol.Transaction.Contract.Builder contract = Protocol.Transaction.Contract.newBuilder();
29+
contract.setType(Protocol.Transaction.Contract.ContractType.UpdateBrokerageContract);
30+
raw.addContract(contract.build());
31+
32+
Protocol.Transaction transaction = Protocol.Transaction.newBuilder().setRawData(raw).build();
33+
BlockCapsule blockCapsule = new BlockCapsule(Protocol.Block.newBuilder().setBlockHeader(
34+
Protocol.BlockHeader.newBuilder().setRawData(Protocol.BlockHeader.raw.newBuilder()
35+
.setParentHash(ByteString.copyFrom(ByteArray.fromHexString(
36+
"0304f784e4e7bae517bcab94c3e0c9214fb4ac7ff9d7d5a937d1f40031f87b82")))
37+
.setNumber(0))).addTransactions(transaction).build());
38+
39+
BlockResult blockResult = new BlockResult(blockCapsule.getInstance(),true, wallet);
40+
Assert.assertEquals(blockResult.getHash(),
41+
"0x000000000000000036393ced0658419d3c251bc14ffab8d10c8b0898451054fa");
42+
Assert.assertEquals(blockResult.getTransactions().length, 1);
43+
Assert.assertEquals(blockResult.getGasUsed(),"0x0");
44+
}
45+
46+
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package org.tron.core.services.jsonrpc;
2+
3+
import javax.annotation.Resource;
4+
import org.junit.Assert;
5+
import org.junit.Before;
6+
import org.junit.Test;
7+
import org.tron.common.BaseTest;
8+
import org.tron.core.Constant;
9+
import org.tron.core.Wallet;
10+
import org.tron.core.config.args.Args;
11+
import org.tron.core.exception.JsonRpcInvalidParamsException;
12+
import org.tron.core.exception.JsonRpcInvalidRequestException;
13+
import org.tron.core.services.jsonrpc.types.BuildArguments;
14+
import org.tron.core.services.jsonrpc.types.CallArguments;
15+
import org.tron.protos.Protocol;
16+
17+
public class BuildArgumentsTest extends BaseTest {
18+
19+
@Resource
20+
private Wallet wallet;
21+
22+
private BuildArguments buildArguments;
23+
24+
static {
25+
Args.setParam(new String[]{"-d", dbPath()}, Constant.TEST_CONF);
26+
}
27+
28+
@Before
29+
public void initBuildArgs() {
30+
buildArguments = new BuildArguments(
31+
"0x0000000000000000000000000000000000000000",
32+
"0x0000000000000000000000000000000000000001","0x10","0.01","0x100",
33+
"","0",9L,10000L,"",10L,
34+
2000L,"args",1,"",true);
35+
}
36+
37+
38+
@Test
39+
public void testBuildArgument() {
40+
CallArguments callArguments = new CallArguments(
41+
"0x0000000000000000000000000000000000000000",
42+
"0x0000000000000000000000000000000000000001","0x10","0.01","0x100",
43+
"","0");
44+
BuildArguments buildArguments = new BuildArguments(callArguments);
45+
Assert.assertEquals(buildArguments.getFrom(),
46+
"0x0000000000000000000000000000000000000000");
47+
Assert.assertEquals(buildArguments.getTo(),
48+
"0x0000000000000000000000000000000000000001");
49+
Assert.assertEquals(buildArguments.getGas(), "0x10");
50+
Assert.assertEquals(buildArguments.getGasPrice(), "0.01");
51+
}
52+
53+
@Test
54+
public void testGetContractType()
55+
throws JsonRpcInvalidRequestException, JsonRpcInvalidParamsException {
56+
Protocol.Transaction.Contract.ContractType contractType =
57+
buildArguments.getContractType(wallet);
58+
Assert.assertEquals(contractType, Protocol.Transaction.Contract.ContractType.TransferContract);
59+
}
60+
61+
@Test
62+
public void testParseValue() throws JsonRpcInvalidParamsException {
63+
long value = buildArguments.parseValue();
64+
Assert.assertEquals(value, 256L);
65+
}
66+
67+
@Test
68+
public void testParseGas() throws JsonRpcInvalidParamsException {
69+
long gas = buildArguments.parseGas();
70+
Assert.assertEquals(gas, 16L);
71+
}
72+
73+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package org.tron.core.services.jsonrpc;
2+
3+
import javax.annotation.Resource;
4+
import org.junit.Assert;
5+
import org.junit.Before;
6+
import org.junit.Test;
7+
import org.tron.common.BaseTest;
8+
import org.tron.core.Constant;
9+
import org.tron.core.Wallet;
10+
import org.tron.core.config.args.Args;
11+
import org.tron.core.exception.JsonRpcInvalidParamsException;
12+
import org.tron.core.exception.JsonRpcInvalidRequestException;
13+
import org.tron.core.services.jsonrpc.types.CallArguments;
14+
import org.tron.protos.Protocol;
15+
16+
public class CallArgumentsTest extends BaseTest {
17+
18+
@Resource
19+
private Wallet wallet;
20+
21+
private CallArguments callArguments;
22+
23+
static {
24+
Args.setParam(new String[]{"-d", dbPath()}, Constant.TEST_CONF);
25+
}
26+
27+
@Before
28+
public void init() {
29+
callArguments = new CallArguments("0x0000000000000000000000000000000000000000",
30+
"0x0000000000000000000000000000000000000001","0x10","0.01","0x100",
31+
"","0");
32+
}
33+
34+
@Test
35+
public void testGetContractType()
36+
throws JsonRpcInvalidRequestException, JsonRpcInvalidParamsException {
37+
Protocol.Transaction.Contract.ContractType contractType = callArguments.getContractType(wallet);
38+
Assert.assertEquals(Protocol.Transaction.Contract.ContractType.TransferContract, contractType);
39+
}
40+
41+
@Test
42+
public void testParseValue() throws JsonRpcInvalidParamsException {
43+
long value = callArguments.parseValue();
44+
Assert.assertEquals(256L, value);
45+
}
46+
47+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package org.tron.core.services.jsonrpc;
2+
3+
import com.google.protobuf.ByteString;
4+
import javax.annotation.Resource;
5+
import org.junit.Assert;
6+
import org.junit.Test;
7+
import org.tron.common.BaseTest;
8+
import org.tron.common.utils.ByteArray;
9+
import org.tron.core.Constant;
10+
import org.tron.core.Wallet;
11+
import org.tron.core.capsule.TransactionRetCapsule;
12+
import org.tron.core.config.args.Args;
13+
import org.tron.core.services.jsonrpc.types.TransactionReceipt;
14+
import org.tron.core.store.TransactionRetStore;
15+
import org.tron.protos.Protocol;
16+
17+
public class TransactionReceiptTest extends BaseTest {
18+
19+
@Resource
20+
private Wallet wallet;
21+
22+
@Resource
23+
private TransactionRetStore transactionRetStore;
24+
25+
static {
26+
Args.setParam(new String[]{"-d", dbPath()}, Constant.TEST_CONF);
27+
}
28+
29+
@Test
30+
public void testTransactionReceipt() {
31+
Protocol.TransactionInfo transactionInfo = Protocol.TransactionInfo.newBuilder()
32+
.setId(ByteString.copyFrom("1".getBytes()))
33+
.setContractAddress(ByteString.copyFrom("address1".getBytes()))
34+
.setReceipt(Protocol.ResourceReceipt.newBuilder()
35+
.setEnergyUsageTotal(0L)
36+
.setResult(Protocol.Transaction.Result.contractResult.DEFAULT)
37+
.build())
38+
.addLog(Protocol.TransactionInfo.Log.newBuilder()
39+
.setAddress(ByteString.copyFrom("address1".getBytes()))
40+
.setData(ByteString.copyFrom("data".getBytes()))
41+
.build())
42+
.build();
43+
TransactionRetCapsule transactionRetCapsule = new TransactionRetCapsule();
44+
transactionRetCapsule.addTransactionInfo(transactionInfo);
45+
transactionRetStore.put(ByteArray.fromLong(1), transactionRetCapsule);
46+
47+
Protocol.Transaction.raw.Builder raw = Protocol.Transaction.raw.newBuilder();
48+
Protocol.Transaction.Contract.Builder contract = Protocol.Transaction.Contract.newBuilder();
49+
contract.setType(Protocol.Transaction.Contract.ContractType.UpdateBrokerageContract);
50+
raw.addContract(contract.build());
51+
Protocol.Transaction transaction = Protocol.Transaction.newBuilder().setRawData(raw).build();
52+
53+
TransactionReceipt transactionReceipt = new TransactionReceipt(
54+
Protocol.Block.newBuilder().setBlockHeader(
55+
Protocol.BlockHeader.newBuilder().setRawData(
56+
Protocol.BlockHeader.raw.newBuilder().setNumber(1))).addTransactions(
57+
transaction).build(), transactionInfo, wallet);
58+
59+
Assert.assertEquals(transactionReceipt.getBlockNumber(),"0x1");
60+
Assert.assertEquals(transactionReceipt.getTransactionIndex(),"0x0");
61+
Assert.assertEquals(transactionReceipt.getLogs().length,1);
62+
Assert.assertEquals(transactionReceipt.getBlockHash(),
63+
"0x0000000000000001464f071c8a336fd22eb5145dff1b245bda013ec89add8497");
64+
}
65+
66+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package org.tron.core.services.jsonrpc;
2+
3+
import com.google.protobuf.ByteString;
4+
import javax.annotation.Resource;
5+
import org.junit.Assert;
6+
import org.junit.Test;
7+
import org.tron.common.BaseTest;
8+
import org.tron.common.utils.ByteArray;
9+
import org.tron.core.Constant;
10+
import org.tron.core.Wallet;
11+
import org.tron.core.capsule.BlockCapsule;
12+
import org.tron.core.config.args.Args;
13+
import org.tron.core.services.jsonrpc.types.TransactionResult;
14+
import org.tron.protos.Protocol;
15+
16+
public class TransactionResultTest extends BaseTest {
17+
18+
@Resource
19+
private Wallet wallet;
20+
21+
static {
22+
Args.setParam(new String[]{"-d", dbPath()}, Constant.TEST_CONF);
23+
}
24+
25+
@Test
26+
public void testBuildTransactionResultWithBlock() {
27+
Protocol.Transaction.raw.Builder raw = Protocol.Transaction.raw.newBuilder().addContract(
28+
Protocol.Transaction.Contract.newBuilder().setType(
29+
Protocol.Transaction.Contract.ContractType.TriggerSmartContract));
30+
Protocol.Transaction transaction = Protocol.Transaction.newBuilder().setRawData(raw).build();
31+
BlockCapsule blockCapsule = new BlockCapsule(Protocol.Block.newBuilder().setBlockHeader(
32+
Protocol.BlockHeader.newBuilder().setRawData(Protocol.BlockHeader.raw.newBuilder()
33+
.setParentHash(ByteString.copyFrom(ByteArray.fromHexString(
34+
"0304f784e4e7bae517bcab94c3e0c9214fb4ac7ff9d7d5a937d1f40031f87b82")))
35+
.setNumber(9))).addTransactions(transaction).build());
36+
37+
TransactionResult transactionResult = new TransactionResult(blockCapsule,0, transaction,
38+
100,1, wallet);
39+
Assert.assertEquals(transactionResult.getBlockNumber(), "0x9");
40+
Assert.assertEquals(transactionResult.getHash(),
41+
"0xdebef90d0a8077620711b1b5af2b702665887ddcbf80868108026e1ab5e0bfb7");
42+
Assert.assertEquals(transactionResult.getGasPrice(), "0x1");
43+
Assert.assertEquals(transactionResult.getGas(), "0x64");
44+
}
45+
46+
@Test
47+
public void testBuildTransactionResult() {
48+
Protocol.Transaction.raw.Builder raw = Protocol.Transaction.raw.newBuilder().addContract(
49+
Protocol.Transaction.Contract.newBuilder().setType(
50+
Protocol.Transaction.Contract.ContractType.TriggerSmartContract));
51+
Protocol.Transaction transaction = Protocol.Transaction.newBuilder().setRawData(raw).build();
52+
TransactionResult transactionResult = new TransactionResult(transaction, wallet);
53+
Assert.assertEquals(transactionResult.getHash(),
54+
"0xdebef90d0a8077620711b1b5af2b702665887ddcbf80868108026e1ab5e0bfb7");
55+
Assert.assertEquals(transactionResult.getGasPrice(), "0x");
56+
Assert.assertEquals(transactionResult.getNonce(), "0x0000000000000000");
57+
}
58+
59+
}

0 commit comments

Comments
 (0)