Skip to content

Commit adf2eb9

Browse files
committed
Merge branch 'boatiotsdk_2_0-dev' of https://github.com/aitos-io/BoAT-X-Framework into boatiotsdk_2_0-dev
2 parents c150ee0 + ea8500e commit adf2eb9

File tree

6 files changed

+215
-9
lines changed

6 files changed

+215
-9
lines changed

demo/demo_ethereum/demo_ethereum_transfer.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ BoatEthWallet *g_ethereum_wallet_ptr;
6161
__BOATSTATIC BOAT_RESULT ethereum_createOnetimeWallet()
6262
{
6363
BSINT32 index;
64-
BoatEthWalletConfig wallet_config = {0};
64+
BoatEthWalletConfig wallet_config;
65+
memset(&wallet_config,0U,sizeof(BoatEthWalletConfig));
6566
BUINT8 binFormatKey[32] = {0};
6667

6768
(void)binFormatKey; //avoid warning
@@ -113,7 +114,8 @@ __BOATSTATIC BOAT_RESULT ethereum_createOnetimeWallet()
113114
__BOATSTATIC BOAT_RESULT ethereum_createPersistWallet(BCHAR *wallet_name)
114115
{
115116
BSINT32 index;
116-
BoatEthWalletConfig wallet_config = {0};
117+
BoatEthWalletConfig wallet_config;
118+
memset(&wallet_config,0U,sizeof(BoatEthWalletConfig));
117119
BUINT8 binFormatKey[32] = {0};
118120

119121
(void)binFormatKey; //avoid warning

sdk/protocol/boathwbcs/boathwbcs.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ __BOATSTATIC BOAT_RESULT hwbcsPayloadPacked(BoatHwbcsTx *tx_ptr,
7171

7272
BOAT_RESULT result = BOAT_SUCCESS;
7373
boat_try_declare;
74-
if (tx_ptr->var.type == HWBCS_TYPE_PROPOSAL)
74+
if (tx_ptr->var.type == (BoatHlfabricType)HWBCS_TYPE_PROPOSAL)
7575
{
7676
/* contractInvocation info*/
7777
contractInvocation.contract_name = tx_ptr->var.contract_name;
@@ -145,7 +145,7 @@ __BOATSTATIC BOAT_RESULT hwbcsPayloadPacked(BoatHwbcsTx *tx_ptr,
145145
result = boat_exception;
146146
}
147147
/* free malloc */
148-
if (tx_ptr->var.type == HWBCS_TYPE_PROPOSAL){
148+
if (tx_ptr->var.type == (BoatHlfabricType)HWBCS_TYPE_PROPOSAL){
149149
if(NULL != contractInvocation.args){
150150
BoatFree(contractInvocation.args);
151151
}
@@ -179,7 +179,7 @@ BOAT_RESULT hwbcsProposalTransactionPacked(BoatHwbcsTx *tx_ptr)
179179
}
180180

181181
/* step-1: generate nonce once for proposal */
182-
if (tx_ptr->var.type == HWBCS_TYPE_PROPOSAL)
182+
if (tx_ptr->var.type == (BoatHlfabricType)HWBCS_TYPE_PROPOSAL)
183183
{
184184
tx_ptr->var.nonce.field_len = 8;
185185
result = BoatRandom(tx_ptr->var.nonce.field, tx_ptr->var.nonce.field_len, NULL);

sdk/utilities/boatutility.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -770,7 +770,8 @@ int UtilityGetTLV_L(BUINT8 *input,BUINT32 len){
770770

771771
BOAT_RESULT UtilityGetTLV(BUINT8 *input,BUINT32 inputlen,TLVStruct *tlv){
772772
BOAT_RESULT ret = BOAT_SUCCESS;
773-
BUINT32 offset = 0,len = 0;
773+
BUINT32 offset = 0;
774+
int len = 0;
774775
int ll = 0;
775776

776777
ll = UtilityGetTLV_LL(input,inputlen);

sdk/wallet/api_hw_bcs.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ __BOATSTATIC BOAT_RESULT BoatHwbcsTxExec(BoatHwbcsTx *tx_ptr,
140140
BoatLog(BOAT_LOG_CRITICAL, "[%s]:packed failed.", tx_ptr->var.args.args[0]);
141141
boat_throw(BOAT_ERROR_COMMON_PROTO_PACKET_FAIL, BoatHwbcsTxProposal_exception);
142142
}
143-
if (tx_ptr->var.type == HWBCS_TYPE_PROPOSAL)
143+
if (tx_ptr->var.type == (BoatHlfabricType)HWBCS_TYPE_PROPOSAL)
144144
{
145145
for (i = 0; i < nodeCfg.endorserLayoutNum; i++)
146146
{
@@ -608,7 +608,7 @@ BOAT_RESULT BoatHwbcsTxEvaluate(BoatHwbcsTx *tx_ptr)
608608
/* free the unpacked response data */
609609
for (int i = 0; i < tx_ptr->endorserResponse.responseCount; i++)
610610
{
611-
if (tx_ptr->endorserResponse.response[i].responseType == HWBCS_TYPE_PROPOSAL)
611+
if (tx_ptr->endorserResponse.response[i].responseType == (BoatHlfabricType)HWBCS_TYPE_PROPOSAL)
612612
{
613613
common__transaction__free_unpacked(tx_ptr->endorserResponse.response[i].contentPtr, NULL);
614614
if (tx_ptr->endorserResponse.response[i].payload.field_len != 0)
@@ -659,7 +659,7 @@ BOAT_RESULT BoatHwbcsTxSubmit(BoatHwbcsTx *tx_ptr)
659659
/* free the unpacked response data */
660660
for (int i = 0; i < tx_ptr->endorserResponse.responseCount; i++)
661661
{
662-
if (tx_ptr->endorserResponse.response[i].responseType == HWBCS_TYPE_PROPOSAL)
662+
if (tx_ptr->endorserResponse.response[i].responseType == (BoatHlfabricType)HWBCS_TYPE_PROPOSAL)
663663
{
664664
common__transaction__free_unpacked(tx_ptr->endorserResponse.response[i].contentPtr, NULL);
665665
}
Lines changed: 201 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,201 @@
1+
/******************************************************************************
2+
* Copyright (C) 2018-2021 aitos.io
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*****************************************************************************/
16+
#include "tcase_platon.h"
17+
#define EXCEED_STR_MAX_LEN 4097
18+
19+
#define TEST_EIP155_COMPATIBILITY BOAT_TRUE
20+
#define TEST_PLATON_CHAIN_ID 210309
21+
#define TEST_GAS_LIMIT "0x6691B7"
22+
#define TEST_GAS_PRICE "0x4A817C800"
23+
#define TEST_IS_SYNC_TX BOAT_TRUE
24+
#define TEST_RECIPIENT_ADDRESS "lat159js9hw63x2y8m65mhgprm3eu9f4c7xmv3lym4"
25+
26+
const BCHAR *hrp = "lat";
27+
28+
extern BoatPlatONWalletConfig get_platon_wallet_settings();
29+
30+
START_TEST(test_006GetBalance_0001GetSuccess)
31+
{
32+
BOAT_RESULT result;
33+
BoatPlatONTx tx_ctx;
34+
BCHAR *cur_balance_wei = NULL;
35+
BoatFieldVariable parse_result = {NULL, 0};
36+
37+
BoatIotSdkInit();
38+
39+
result = platonWalletPrepare();
40+
ck_assert(result == BOAT_SUCCESS);
41+
42+
result = BoatPlatONTxInit(g_platon_wallet_ptr, &tx_ctx, BOAT_TRUE, NULL,
43+
"0x333333",
44+
(BCHAR *)TEST_RECIPIENT_ADDRESS);
45+
ck_assert_int_eq(result, BOAT_SUCCESS);
46+
47+
48+
cur_balance_wei = BoatPlatONWalletGetBalance(g_platon_wallet_ptr, TEST_RECIPIENT_ADDRESS);
49+
result = BoatPlatONParseRpcResponseStringResult(cur_balance_wei, &parse_result);
50+
51+
ck_assert_int_eq(result, BOAT_SUCCESS);
52+
ck_assert_ptr_ne(parse_result.field_ptr, NULL);
53+
54+
BoatFree(parse_result.field_ptr);
55+
56+
BoatIotSdkDeInit();
57+
}
58+
END_TEST
59+
60+
START_TEST(test_006GetBalance_0002GetWalletDefaultAddressSuccess)
61+
{
62+
BOAT_RESULT result;
63+
BoatPlatONTx tx_ctx;
64+
BCHAR *cur_balance_wei = NULL;
65+
BoatFieldVariable parse_result = {NULL, 0};
66+
67+
BoatIotSdkInit();
68+
69+
result = platonWalletPrepare();
70+
ck_assert(result == BOAT_SUCCESS);
71+
72+
result = BoatPlatONTxInit(g_platon_wallet_ptr, &tx_ctx, BOAT_TRUE, NULL,
73+
"0x333333",
74+
(BCHAR *)TEST_RECIPIENT_ADDRESS);
75+
ck_assert_int_eq(result, BOAT_SUCCESS);
76+
77+
78+
cur_balance_wei = BoatPlatONWalletGetBalance(g_platon_wallet_ptr, NULL);
79+
result = BoatPlatONParseRpcResponseStringResult(cur_balance_wei, &parse_result);
80+
81+
ck_assert_ptr_ne(parse_result.field_ptr, NULL);
82+
ck_assert_int_eq(result, BOAT_SUCCESS);
83+
84+
BoatFree(parse_result.field_ptr);
85+
86+
BoatIotSdkDeInit();
87+
}
88+
END_TEST
89+
90+
START_TEST(test_006GetBalance_0003GetFailureNullWallet)
91+
{
92+
BCHAR *cur_balance_wei = NULL;
93+
94+
BoatIotSdkInit();
95+
96+
cur_balance_wei = BoatPlatONWalletGetBalance(NULL, NULL);
97+
98+
ck_assert_ptr_eq(cur_balance_wei, NULL);
99+
100+
BoatIotSdkDeInit();
101+
}
102+
END_TEST
103+
104+
START_TEST(test_007Transfer_0001TransferSuccess)
105+
{
106+
BOAT_RESULT result;
107+
BoatPlatONTx tx_ctx;
108+
109+
BoatIotSdkInit();
110+
111+
result = platonWalletPrepare();
112+
ck_assert(result == BOAT_SUCCESS);
113+
114+
result = BoatPlatONTxInit(g_platon_wallet_ptr, &tx_ctx, BOAT_TRUE, NULL,
115+
"0x333333",
116+
(BCHAR *)TEST_RECIPIENT_ADDRESS, hrp);
117+
ck_assert_int_eq(result, BOAT_SUCCESS);
118+
119+
result = BoatPlatONTransfer(&tx_ctx, "0x1");
120+
ck_assert_int_eq(result, BOAT_SUCCESS);
121+
122+
BoatIotSdkDeInit();
123+
}
124+
END_TEST
125+
126+
START_TEST(test_007Transfer_0002TransferFailureNullParam)
127+
{
128+
BOAT_RESULT result;
129+
BoatPlatONTx tx_ctx;
130+
131+
BoatIotSdkInit();
132+
133+
result = platonWalletPrepare();
134+
ck_assert(result == BOAT_SUCCESS);
135+
136+
result = BoatPlatONTxInit(g_platon_wallet_ptr, &tx_ctx, BOAT_TRUE, NULL,
137+
"0x333333",
138+
(BCHAR *)TEST_RECIPIENT_ADDRESS);
139+
ck_assert_int_eq(result, BOAT_SUCCESS);
140+
141+
result = BoatPlatONTransfer(&tx_ctx, NULL);
142+
ck_assert_int_eq(result, BOAT_ERROR_COMMON_INVALID_ARGUMENT);
143+
144+
BoatIotSdkDeInit();
145+
}
146+
END_TEST
147+
148+
START_TEST(test_007Transfer_0003TransferWithSpecifyChainIDSuccess)
149+
{
150+
BSINT32 rtnVal;
151+
BOAT_RESULT result;
152+
BoatPlatONTx tx_ctx;
153+
154+
BoatIotSdkInit();
155+
156+
BoatPlatONWalletConfig wallet = get_platon_wallet_settings();
157+
158+
wallet.eip155_compatibility = BOAT_TRUE;
159+
wallet.chain_id = TEST_EPLATON_CHAIN_ID;
160+
/* 1. execute unit test */
161+
rtnVal = BoatWalletCreate(BOAT_PROTOCOL_PLATON, NULL, &wallet, sizeof(BoatPlatONWalletConfig));
162+
ck_assert_int_eq(rtnVal, 0);
163+
164+
g_platon_wallet_ptr = BoatGetWalletByIndex(rtnVal);
165+
166+
result = BoatPlatONTxInit(g_platon_wallet_ptr, &tx_ctx, BOAT_TRUE, NULL,
167+
"0x333333",
168+
(BCHAR *)TEST_RECIPIENT_ADDRESS, hrp);
169+
ck_assert_int_eq(result, BOAT_SUCCESS);
170+
171+
result = BoatPlatONTransfer(&tx_ctx, "0x1");
172+
ck_assert_int_eq(result, BOAT_SUCCESS);
173+
174+
BoatIotSdkDeInit();
175+
}
176+
END_TEST
177+
178+
Suite *make_transactions_suite(void)
179+
{
180+
/* Create Suite */
181+
Suite *s_transaction = suite_create("transaction");
182+
183+
184+
/* Create test cases */
185+
TCase *tc_transaction_api = tcase_create("transaction_api");
186+
187+
188+
/* Add a test case to the Suite */
189+
suite_add_tcase(s_transaction, tc_transaction_api);
190+
191+
/* Test cases are added to the test set */
192+
tcase_add_test(tc_transaction_api, test_006GetBalance_0001GetSuccess);
193+
tcase_add_test(tc_transaction_api, test_006GetBalance_0002GetWalletDefaultAddressSuccess);
194+
tcase_add_test(tc_transaction_api, test_006GetBalance_0003GetFailureNullWallet);
195+
196+
tcase_add_test(tc_transaction_api, test_007Transfer_0001TransferSuccess);
197+
tcase_add_test(tc_transaction_api, test_007Transfer_0002TransferFailureNullParam);
198+
tcase_add_test(tc_transaction_api, test_007Transfer_0003TransferWithSpecifyChainIDSuccess);
199+
200+
return s_transaction;
201+
}

tests/BoAT_platon_linuxDefault/tcase_platon.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
#include "boatwallet.h"
2424
#include "protocolapi/api_platon.h"
2525

26+
extern BOAT_RESULT platonWalletPrepare(void);
27+
2628
#define TEST_KEY_TYPE BOAT_WALLET_PRIKEY_FORMAT_NATIVE
2729
extern char platon_private_key_buf[1024];
2830
extern BoatPlatONWallet *g_platon_wallet_ptr;

0 commit comments

Comments
 (0)