public async Task TestEvent()
        {
            var senderAddress = EthereumClientIntegrationFixture.AccountAddress;
            var web3          = _ethereumClientIntegrationFixture.GetWeb3();

            var deploymentMessage = new TestAnonymousEventContractDeployment {
                FromAddress = senderAddress
            };
            var deploymentHandler            = web3.Eth.GetContractDeploymentHandler <TestAnonymousEventContractDeployment>();
            var deploymentTransactionReceipt =
                await deploymentHandler.SendRequestAndWaitForReceiptAsync(deploymentMessage);

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

            var eventFilter = contractHandler.GetEvent <ItemCreatedEventDTO>();
            var filterId    = await eventFilter.CreateFilterAsync(1);

            var transactionReceiptSend = await contractHandler.SendRequestAndWaitForReceiptAsync(
                new NewItemFunction()
            {
                FromAddress = senderAddress,
                Id          = 1,
                Price       = 100
            });

            var result = await eventFilter.GetFilterChangesAsync(filterId);

            Assert.Single(result);
        }
        public async Task TestEvent()
        {
            var senderAddress = EthereumClientIntegrationFixture.AccountAddress;
            var web3          = _ethereumClientIntegrationFixture.GetWeb3();

            var deploymentMessage = new TestAnonymousEventContractDeployment {
                FromAddress = senderAddress
            };
            var deploymentHandler            = web3.Eth.GetContractDeploymentHandler <TestAnonymousEventContractDeployment>();
            var deploymentTransactionReceipt =
                await deploymentHandler.SendRequestAndWaitForReceiptAsync(deploymentMessage);

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

            var itemCreatedEvent = contractHandler.GetEvent <ItemCreatedEventDTO>();

            var eventFilter1 = await itemCreatedEvent.CreateFilterAsync(1);

            var eventFilter2 = await itemCreatedEvent.CreateFilterAsync(2);

            var eventFilter12 = await itemCreatedEvent.CreateFilterAsync(new[] { 1, 2 });

            var newItem1FunctionTransactionReceipt = await contractHandler.SendRequestAndWaitForReceiptAsync(
                new NewItemFunction
            {
                FromAddress = senderAddress,
                Id          = 1,
                Price       = 100
            });

            var newItem2FunctionTransactionReceipt = await contractHandler.SendRequestAndWaitForReceiptAsync(
                new NewItemFunction
            {
                FromAddress = senderAddress,
                Id          = 2,
                Price       = 100
            });

            var logs1Result = await itemCreatedEvent.GetFilterChangesAsync(eventFilter1);

            Assert.Single(logs1Result);
            Assert.Equal(1, logs1Result[0].Event.ItemId);

            var logs2Result = await itemCreatedEvent.GetFilterChangesAsync(eventFilter2);

            Assert.Single(logs2Result);
            Assert.Equal(2, logs2Result[0].Event.ItemId);

            var logs12Result = await itemCreatedEvent.GetFilterChangesAsync(eventFilter12);

            Assert.Equal(2, logs12Result.Count);
            Assert.Contains(logs12Result, el => el.Event.ItemId == 1);
            Assert.Contains(logs12Result, el => el.Event.ItemId == 2);
        }
        public async Task TestEvent()
        {
            var senderAddress = EthereumClientIntegrationFixture.AccountAddress;
            var web3          = _ethereumClientIntegrationFixture.GetWeb3();

            var deploymentMessage = new TestAnonymousEventContractDeployment {
                FromAddress = senderAddress
            };
            var deploymentHandler            = web3.Eth.GetContractDeploymentHandler <TestAnonymousEventContractDeployment>();
            var deploymentTransactionReceipt =
                await deploymentHandler.SendRequestAndWaitForReceiptAsync(deploymentMessage);

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

            var itemCreatedEvent = contractHandler.GetEvent <ItemCreatedEventDTO>();


            var eventFilter1__ = await itemCreatedEvent.CreateFilterAsync(1);

            var eventFilter__SenderAddress =
                await itemCreatedEvent.CreateFilterAsync <object, object, string>(null, null, senderAddress);

            var newItem1FunctionTransactionReceipt = await contractHandler.SendRequestAndWaitForReceiptAsync(
                new NewItemFunction
            {
                Id    = 1,
                Price = 100
            });

            var newItem2FunctionTransactionReceipt = await contractHandler.SendRequestAndWaitForReceiptAsync(
                new NewItemFunction
            {
                Id    = 2,
                Price = 100
            });

            var logs1__Result = await itemCreatedEvent.GetAllChangesAsync(eventFilter1__);

            Assert.Single(logs1__Result);
            Assert.Equal(1, logs1__Result[0].Event.ItemId);
            Assert.Equal(100, logs1__Result[0].Event.Price);
            Assert.Equal(senderAddress.ToLower(), logs1__Result[0].Event.Result.ToLower());

            var logs__SenderAddress = await itemCreatedEvent.GetAllChangesAsync(eventFilter__SenderAddress);

            Assert.Equal(2, logs__SenderAddress.Count);
            Assert.Contains(logs__SenderAddress, el => el.Event.ItemId == 1);
            Assert.Contains(logs__SenderAddress, el => el.Event.ItemId == 2);
        }