Пример #1
0
        public static async Task SolidityV2StructTests()
        {
            var address           = "0x12890d2cce102216644c59daE5baed380d84830c";
            var privateKey        = "0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7";
            var web3              = new Web3.Web3(new Account(privateKey), defaultTimeOutForTests);
            var deploymentReceipt = await web3.Eth.GetContractDeploymentHandler <TestContractDeployment>()
                                    .SendRequestAndWaitForReceiptAsync();

            var functionTest = new TestFunction();
            var input        = new TestStructStrings()
            {
                Id         = 1,
                Id2        = "hello",
                SubStruct1 = new SubStructUintString()
                {
                    Id  = 200,
                    Id2 = "Giraffe",
                    Sub = new SubStructUInt()
                    {
                        Id = 20
                    }
                },
                SubStruct2 = new SubStructUintString()
                {
                    Id  = 300,
                    Id2 = "Elephant",
                    Sub = new SubStructUInt()
                    {
                        Id = 30000
                    }
                },
            };

            functionTest.TestStruct = input;

            var contractHandler = web3.Eth.GetContractHandler(deploymentReceipt.ContractAddress);

            var testStructArrayResult =
                await contractHandler.QueryDeserializingToObjectAsync <TestArray, TestArrayOuputDTO>();

            Assert.Equal(1, testStructArrayResult.SimpleStructs[0].Id1);
            Assert.Equal(2, testStructArrayResult.SimpleStructs[1].Id1);

            var id1Before = await contractHandler.QueryAsync <Id1Function, BigInteger>();

            Assert.Equal(1, id1Before);

            var receiptTransaction = await contractHandler.SendRequestAndWaitForReceiptAsync(functionTest);

            var id1After = await contractHandler.QueryAsync <Id1Function, BigInteger>();

            Assert.Equal(1, id1After);
            var id2After = await contractHandler.QueryAsync <Id2Function, BigInteger>();

            Assert.Equal(200, id2After);
            var id3After = await contractHandler.QueryAsync <Id3Function, BigInteger>();

            Assert.Equal(30000, id3After);
            var id4After = await contractHandler.QueryAsync <Id4Function, string>();

            Assert.Equal("Elephant", id4After);
            var testDataFromContract = await contractHandler.QueryDeserializingToObjectAsync <GetTestFunction, GetTestFunctionOuptputDTO>();

            Assert.Equal(5, testDataFromContract.Test1);
            var functionStorage = new SetStorageStructFunction {
                TestStruct = input
            };
            var receiptSending = await contractHandler.SendRequestAndWaitForReceiptAsync(functionStorage);

            var storageData = await contractHandler.QueryDeserializingToObjectAsync <GetTestStructStorageFunction, TestStructStrings>();

            Assert.Equal("hello", storageData.Id2);
            var eventStorage = contractHandler.GetEvent <TestStructStorageChangedEvent>();
            var eventOutputs = eventStorage.DecodeAllEventsForEvent(receiptSending.Logs);

            Assert.Equal(1, eventOutputs[0].Event.TestStruct.Id);

            var eventUntyped  = new Event(web3.Client, deploymentReceipt.ContractAddress, eventStorage.EventABI);
            var eventOutputs2 = eventUntyped.DecodeAllEventsDefaultForEvent(receiptSending.Logs);

            Assert.Equal("0x12890d2cce102216644c59dae5baed380d84830c", eventOutputs2[0].Event[0].Result);
            Assert.Equal("sender", eventOutputs2[0].Event[0].Parameter.Name);
        }
Пример #2
0
        public static async Task SuperFunSampleStringAsync()
        {
            var address           = "0x12890d2cce102216644c59daE5baed380d84830c";
            var privateKey        = "0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7";
            var web3              = new Web3.Web3(new Account(privateKey));
            var deploymentReceipt = await web3.Eth.GetContractDeploymentHandler <TestContractDeployment>()
                                    .SendRequestAndWaitForReceiptAsync();

            var functionTest = new TestFunction();
            var input        = new TestStructStrings()
            {
                Id         = 1,
                Id2        = "hello",
                SubStruct1 = new SubStructUintString()
                {
                    Id  = 200,
                    Id2 = "Giraffe",
                    Sub = new SubStructUInt()
                    {
                        Id = 20
                    }
                },
                SubStruct2 = new SubStructUintString()
                {
                    Id  = 300,
                    Id2 = "Elephant",
                    Sub = new SubStructUInt()
                    {
                        Id = 30000
                    }
                },
            };

            functionTest.TestStruct = input;

            var contractHandler = web3.Eth.GetContractHandler(deploymentReceipt.ContractAddress);

            var id1Before = await contractHandler.QueryAsync <Id1Function, BigInteger>();

            var receiptTransaction = await contractHandler.SendRequestAndWaitForReceiptAsync(functionTest);

            var id1After = await contractHandler.QueryAsync <Id1Function, BigInteger>();

            var id2After = await contractHandler.QueryAsync <Id2Function, BigInteger>();

            var id3After = await contractHandler.QueryAsync <Id3Function, BigInteger>();

            var id4After = await contractHandler.QueryAsync <Id4Function, string>();

            var testDataFromContract = await contractHandler.QueryDeserializingToObjectAsync <GetTestFunction, GetTestFunctionOuptputDTO>();

            var functionStorage = new SetStorageStructFunction {
                TestStruct = input
            };
            var receiptSending = await contractHandler.SendRequestAndWaitForReceiptAsync(functionStorage);

            var storageData = await contractHandler.QueryDeserializingToObjectAsync <GetTestStructStorageFunction, TestStructStrings>();

            var eventStorage = contractHandler.GetEvent <TestStructStorageChangedEvent>();
            var eventOutputs = eventStorage.DecodeAllEventsForEvent(receiptSending.Logs);
        }
Пример #3
0
        public async Task SolidityV2StructTests()
        {
            var web3 = _ethereumClientIntegrationFixture.GetWeb3();
            var deploymentReceipt = await web3.Eth.GetContractDeploymentHandler <TestContractDeployment>()
                                    .SendRequestAndWaitForReceiptAsync().ConfigureAwait(false);

            var functionTest = new TestFunction();
            var input        = new TestStructStrings()
            {
                Id         = 1,
                Id2        = "hello",
                SubStruct1 = new SubStructUintString()
                {
                    Id  = 200,
                    Id2 = "Giraffe",
                    Sub = new SubStructUInt()
                    {
                        Id = 20
                    }
                },
                SubStruct2 = new SubStructUintString()
                {
                    Id  = 300,
                    Id2 = "Elephant",
                    Sub = new SubStructUInt()
                    {
                        Id = 30000
                    }
                },
            };

            functionTest.TestStruct = input;

            var contractHandler = web3.Eth.GetContractHandler(deploymentReceipt.ContractAddress);

            var testStructArrayResult =
                await contractHandler.QueryDeserializingToObjectAsync <TestArray, TestArrayOuputDTO>().ConfigureAwait(false);

            Assert.Equal(1, testStructArrayResult.SimpleStructs[0].Id1);
            Assert.Equal(2, testStructArrayResult.SimpleStructs[1].Id1);

            var id1Before = await contractHandler.QueryAsync <Id1Function, BigInteger>().ConfigureAwait(false);

            Assert.Equal(1, id1Before);

            var receiptTransaction = await contractHandler.SendRequestAndWaitForReceiptAsync(functionTest).ConfigureAwait(false);

            var id1After = await contractHandler.QueryAsync <Id1Function, BigInteger>().ConfigureAwait(false);

            Assert.Equal(1, id1After);
            var id2After = await contractHandler.QueryAsync <Id2Function, BigInteger>().ConfigureAwait(false);

            Assert.Equal(200, id2After);
            var id3After = await contractHandler.QueryAsync <Id3Function, BigInteger>().ConfigureAwait(false);

            Assert.Equal(30000, id3After);
            var id4After = await contractHandler.QueryAsync <Id4Function, string>().ConfigureAwait(false);

            Assert.Equal("Elephant", id4After);
            var testDataFromContract = await contractHandler.QueryDeserializingToObjectAsync <GetTestFunction, GetTestFunctionOuptputDTO>().ConfigureAwait(false);

            Assert.Equal(5, testDataFromContract.Test1);
            var functionStorage = new SetStorageStructFunction {
                TestStruct = input
            };
            var receiptSending = await contractHandler.SendRequestAndWaitForReceiptAsync(functionStorage).ConfigureAwait(false);

            var storageData = await contractHandler.QueryDeserializingToObjectAsync <GetTestStructStorageFunction, TestStructStrings>().ConfigureAwait(false);

            Assert.Equal("hello", storageData.Id2);
            var eventStorage = contractHandler.GetEvent <TestStructStorageChangedEvent>();
            var eventOutputs = eventStorage.DecodeAllEventsForEvent(receiptSending.Logs);

            Assert.Equal(1, eventOutputs[0].Event.TestStruct.Id);

            var eventUntyped  = new Event(web3.Client, deploymentReceipt.ContractAddress, eventStorage.EventABI);
            var eventOutputs2 = eventUntyped.DecodeAllEventsDefaultForEvent(receiptSending.Logs);

            Assert.True("0x12890D2cce102216644c59daE5baed380d84830c".IsTheSameAddress(eventOutputs2[0].Event[0].Result.ToString()));
            Assert.Equal("sender", eventOutputs2[0].Event[0].Parameter.Name);
        }