Return results as opaque structs from ffi calls

This commit is contained in:
Steve Myers
2021-06-19 22:53:26 -07:00
parent 87c823d497
commit 9e5aac759d
8 changed files with 447 additions and 112 deletions

View File

@@ -6,40 +6,56 @@
int main (int argc, char const * const argv[])
{
char const * name = "test_wallet";
char const * desc = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)";
char const * change = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/1/*)";
// test new wallet error
{
WalletResult_t *wallet_result = new_wallet_result("bad", "bad", NULL);
assert(wallet_result != NULL);
char *wallet_error = get_wallet_err(wallet_result);
assert(wallet_error != NULL);
//printf("wallet error: %s\n", wallet_error);
free_string(wallet_error);
free_wallet_result(wallet_result);
}
// test new_wallet
// test new wallet
{
WalletPtr_t * wallet = new_wallet(name, desc, change);
assert(wallet != NULL);
char const *name = "test_wallet";
char const *desc = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)";
char const *change = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/1/*)";
WalletResult_t *wallet_result = new_wallet_result(name, desc, change);
assert(wallet_result != NULL);
// test sync_wallet
sync_wallet(wallet);
VoidResult_t *sync_result = sync_wallet(wallet_result);
free_void_result(sync_result);
// test new_address
char * address1 = new_address(wallet);
StringResult_t *address_result1 = new_address(wallet_result);
char *address1 = get_string_ok(address_result1);
//printf("address1: %s\n", address1);
assert( 0 == strcmp(address1,"tb1qgkhp034fyxeta00h0nne9tzfm0vsxq4prduzxp"));
free_string(address1);
free_string_result(address_result1);
char * address2 = new_address(wallet);
StringResult_t *address_result2 = new_address(wallet_result);
char *address2 = get_string_ok(address_result2);
//printf("address2: %s\n", address2);
assert(0 == strcmp(address2,"tb1qd6u9q327sru2ljvwzdtfrdg36sapax7udz97wf"));
free_string(address2);
free_string_result(address_result2);
// test free_wallet
free_wallet(wallet);
free_wallet_result(wallet_result);
// test free_wallet NULL doesn't crash
free_wallet(NULL);
free_wallet_result(NULL);
// verify free_wallet after free_wallet fails (core dumped)
////free_wallet(wallet);
////free_wallet_result(wallet_result);
// verify sync_wallet after free_wallet fails (core dumped)
////sync_wallet(wallet);
////VoidResult_t sync_result2 = sync_wallet(wallet_result);
}
return EXIT_SUCCESS;