public Task <List <byte[]> > CallManyOtherContractsVariableArrayReturnQueryAsync(CallManyOtherContractsVariableArrayReturnFunction callManyOtherContractsVariableArrayReturnFunction, BlockParameter blockParameter = null)
 {
     return(ContractHandler.QueryAsync <CallManyOtherContractsVariableArrayReturnFunction, List <byte[]> >(callManyOtherContractsVariableArrayReturnFunction, blockParameter));
 }
Ejemplo n.º 2
0
        public async void ShouldDecodeFixedWithVariableElementsAndVariableElements()
        {
            if (_ethereumClientIntegrationFixture.Geth)
            {
                //also should be able to call another contract and get the output as bytes and bytes arrays
                var web3 = _ethereumClientIntegrationFixture.GetWeb3();

                var deploymentHandler = web3.Eth.GetContractDeploymentHandler <TheOtherDeployment>();
                var deploymentReceipt = await deploymentHandler.SendRequestAndWaitForReceiptAsync();

                var deploymentCallerHandler =
                    web3.Eth
                    .GetContractDeploymentHandler <SolidityCallAnotherContract.Contracts.Test.CQS.TestDeployment>();
                var deploymentReceiptCaller = await deploymentCallerHandler.SendRequestAndWaitForReceiptAsync();

                ;

                var contracthandler = web3.Eth.GetContractHandler(deploymentReceiptCaller.ContractAddress);

                var callManyOthersFunctionMessage = new CallManyOtherContractsFixedArrayReturnFunction()
                {
                    TheOther = deploymentReceipt.ContractAddress
                };

                var callOtherFunctionMessage = new CallAnotherContractFunction()
                {
                    TheOther = deploymentReceipt.ContractAddress
                };

                var returnValue = await contracthandler.QueryRawAsync(callManyOthersFunctionMessage);

                var inHex = returnValue.ToHex();

                var expected =
                    "Hello Solidity Welcome something much much biggger jlkjfslkfjslkdfjsldfjasdflkjsafdlkjasdfljsadfljasdfkljasdkfljsadfljasdfldsfaj booh!";

                var returnByteArray =
                    await contracthandler.QueryAsync <CallManyOtherContractsFixedArrayReturnFunction, List <Byte[]> >(
                        callManyOthersFunctionMessage);

                //var inHex = returnValue.ToHex();
                var first  = new StringTypeDecoder().Decode(returnByteArray[0]);
                var second = new StringTypeDecoder().Decode(returnByteArray[1]);
                var third  = new StringTypeDecoder().Decode(returnByteArray[2]);
                Assert.Equal(expected, first);
                Assert.Equal(expected, second);
                Assert.Equal(expected, third);

                var callManyOthersVariableFunctionMessage = new CallManyOtherContractsVariableArrayReturnFunction()
                {
                    TheOther = deploymentReceipt.ContractAddress
                };

                var returnVarByteArray =
                    await contracthandler.QueryAsync <CallManyOtherContractsVariableArrayReturnFunction, List <Byte[]> >(
                        callManyOthersVariableFunctionMessage);

                //var inHex = returnValue.ToHex();
                var firstVar  = new StringTypeDecoder().Decode(returnVarByteArray[0]);
                var secondVar = new StringTypeDecoder().Decode(returnVarByteArray[1]);
                var thirdVar  = new StringTypeDecoder().Decode(returnVarByteArray[2]);

                Assert.Equal(expected, firstVar);
                Assert.Equal(expected, secondVar);
                Assert.Equal(expected, thirdVar);

                var returnValue1Call =
                    await contracthandler.QueryAsync <CallAnotherContractFunction, byte[]>(callOtherFunctionMessage);

                var return1ValueString = new StringTypeDecoder().Decode(returnValue1Call);
                Assert.Equal(expected, return1ValueString);
            }
        }