From 1d41828bc7b588c6292de3c1258c8310ca59ced7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20B=C4=83ncioiu?= Date: Mon, 13 May 2024 10:14:08 +0300 Subject: [PATCH 1/2] Minor refactoring: use "isTyped". --- src/smartContractQueriesController.ts | 9 ++------- src/smartcontracts/nativeSerializer.ts | 3 ++- .../smartContractTransactionsFactory.ts | 9 ++------- 3 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/smartContractQueriesController.ts b/src/smartContractQueriesController.ts index 233d8337..e73920d9 100644 --- a/src/smartContractQueriesController.ts +++ b/src/smartContractQueriesController.ts @@ -2,6 +2,7 @@ import { Err } from "./errors"; import { IContractQueryResponse } from "./interfaceOfNetwork"; import { SmartContractQuery, SmartContractQueryResponse } from "./smartContractQuery"; import { ArgSerializer, ContractFunction, EndpointDefinition, NativeSerializer, ResultsParser } from "./smartcontracts"; +import { isTyped } from "./smartcontracts/typesystem"; interface IAbi { getEndpoint(name: string | ContractFunction): EndpointDefinition; @@ -62,13 +63,7 @@ export class SmartContractQueriesController { } private areArgsOfTypedValue(args: any[]): boolean { - for (const arg of args) { - if (!arg.belongsToTypesystem) { - return false; - } - } - - return true; + return args.every((arg) => isTyped(arg)); } private areArgsBuffers(args: any[]): boolean { diff --git a/src/smartcontracts/nativeSerializer.ts b/src/smartcontracts/nativeSerializer.ts index e99ed2db..b3d098b1 100644 --- a/src/smartcontracts/nativeSerializer.ts +++ b/src/smartcontracts/nativeSerializer.ts @@ -31,6 +31,7 @@ import { I64Value, I8Type, I8Value, + isTyped, List, ListType, NumericalType, @@ -168,7 +169,7 @@ export namespace NativeSerializer { } function convertToTypedValue(value: any, type: Type, errorContext: ArgumentErrorContext): TypedValue { - if (value && value.belongsToTypesystem) { + if (value && isTyped(value)) { // Value is already typed, no need to convert it. return value; } diff --git a/src/transactionsFactories/smartContractTransactionsFactory.ts b/src/transactionsFactories/smartContractTransactionsFactory.ts index e6982c7d..20c6b3f6 100644 --- a/src/transactionsFactories/smartContractTransactionsFactory.ts +++ b/src/transactionsFactories/smartContractTransactionsFactory.ts @@ -5,6 +5,7 @@ import { IAddress } from "../interface"; import { Logger } from "../logger"; import { ArgSerializer, CodeMetadata, ContractFunction, EndpointDefinition } from "../smartcontracts"; import { NativeSerializer } from "../smartcontracts/nativeSerializer"; +import { isTyped } from "../smartcontracts/typesystem"; import { TokenComputer, TokenTransfer } from "../tokens"; import { Transaction } from "../transaction"; import { byteArrayToHex, utf8ToHex } from "../utils.codec"; @@ -228,12 +229,6 @@ export class SmartContractTransactionsFactory { } private areArgsOfTypedValue(args: any[]): boolean { - for (const arg of args) { - if (!arg.belongsToTypesystem) { - return false; - } - } - - return true; + return args.every((arg) => isTyped(arg)); } } From a2e9df63a0436c44a83d3d945786ae473092abc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20B=C4=83ncioiu?= Date: Mon, 13 May 2024 12:35:45 +0300 Subject: [PATCH 2/2] Minor tests adjustments (extra assertions) --- .../smartContract.local.net.spec.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/smartcontracts/smartContract.local.net.spec.ts b/src/smartcontracts/smartContract.local.net.spec.ts index 75040dc0..99219622 100644 --- a/src/smartcontracts/smartContract.local.net.spec.ts +++ b/src/smartcontracts/smartContract.local.net.spec.ts @@ -1,8 +1,14 @@ import { assert } from "chai"; +import { promises } from "fs"; +import { QueryRunnerAdapter } from "../adapters/queryRunnerAdapter"; import { Logger } from "../logger"; +import { SmartContractQueriesController } from "../smartContractQueriesController"; import { prepareDeployment } from "../testutils"; import { createLocalnetProvider } from "../testutils/networkProviders"; import { loadTestWallets, TestWallet } from "../testutils/wallets"; +import { TransactionComputer } from "../transactionComputer"; +import { SmartContractTransactionsFactory } from "../transactionsFactories/smartContractTransactionsFactory"; +import { TransactionsFactoryConfig } from "../transactionsFactories/transactionsFactoryConfig"; import { TransactionWatcher } from "../transactionWatcher"; import { decodeUnsignedNumber } from "./codec"; import { ContractFunction } from "./function"; @@ -10,12 +16,6 @@ import { ResultsParser } from "./resultsParser"; import { SmartContract } from "./smartContract"; import { AddressValue, BigUIntValue, OptionalValue, OptionValue, TokenIdentifierValue, U32Value } from "./typesystem"; import { BytesValue } from "./typesystem/bytes"; -import { TransactionsFactoryConfig } from "../transactionsFactories/transactionsFactoryConfig"; -import { SmartContractTransactionsFactory } from "../transactionsFactories/smartContractTransactionsFactory"; -import { promises } from "fs"; -import { TransactionComputer } from "../transactionComputer"; -import { QueryRunnerAdapter } from "../adapters/queryRunnerAdapter"; -import { SmartContractQueriesController } from "../smartContractQueriesController"; describe("test on local testnet", function () { let alice: TestWallet, bob: TestWallet, carol: TestWallet; @@ -258,6 +258,7 @@ describe("test on local testnet", function () { // Check counter let query = contract.createQuery({ func: new ContractFunction("get") }); let queryResponse = await provider.queryContract(query); + assert.lengthOf(queryResponse.getReturnDataParts(), 1); assert.equal(3, decodeUnsignedNumber(queryResponse.getReturnDataParts()[0])); }); @@ -336,6 +337,7 @@ describe("test on local testnet", function () { }); const queryResponse = await smartContractQueriesController.runQuery(query); + assert.lengthOf(queryResponse.returnDataParts, 1); assert.equal(3, decodeUnsignedNumber(Buffer.from(queryResponse.returnDataParts[0]))); }); @@ -398,6 +400,7 @@ describe("test on local testnet", function () { // Query state, do some assertions let query = contract.createQuery({ func: new ContractFunction("totalSupply") }); let queryResponse = await provider.queryContract(query); + assert.lengthOf(queryResponse.getReturnDataParts(), 1); assert.equal(10000, decodeUnsignedNumber(queryResponse.getReturnDataParts()[0])); query = contract.createQuery({ @@ -501,6 +504,7 @@ describe("test on local testnet", function () { arguments: [], }); let queryResponse = await smartContractQueriesController.runQuery(query); + assert.lengthOf(queryResponse.returnDataParts, 1); assert.equal(10000, decodeUnsignedNumber(Buffer.from(queryResponse.returnDataParts[0]))); query = smartContractQueriesController.createQuery({