コード例 #1
0
        public async Task WaitFor()
        {
            var now = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
            // get new client here to avoid lock another tests
            var request = GetNewClient().Net.WaitForCollection(new ParamsOfWaitForCollection
            {
                Collection = "transactions",
                Filter     = new { now = new { gt = now } }.ToJsonElement(),
                Result     = "id now"
            });

            await Task.Delay(TimeSpan.FromSeconds(1));

            await _tonClient.SendGramsFromLocalGiver();

            ResultOfWaitForCollection result = await request;

            result.Result.Get <long>("now").Should().BeGreaterThan(now);
        }
コード例 #2
0
        public static async Task <string> DeployWithGiver(this ITonClient tonClient, ParamsOfEncodeMessage encodeMessageParams)
        {
            ResultOfEncodeMessage address = await tonClient.Abi.EncodeMessage(encodeMessageParams);

            await tonClient.SendGramsFromLocalGiver(address.Address);

            await tonClient.Processing.ProcessMessage(new ParamsOfProcessMessage { MessageEncodeParams = encodeMessageParams });

            return(address.Address);
        }
コード例 #3
0
        public async Task WaitMessage()
        {
            //arrange
            KeyPair keys = await _tonClient.Crypto.GenerateRandomSignKeys();

            ResultOfEncodeMessage encoded = await _tonClient.Abi.EncodeMessage(new ParamsOfEncodeMessage
            {
                Abi = TestsEnv.Packages.Events.Abi, DeploySet = new DeploySet
                {
                    Tvc = TestsEnv.Packages.Events.Tvc
                },
                CallSet = new CallSet
                {
                    FunctionName = "constructor",
                    Header       = new FunctionHeader
                    {
                        Pubkey = keys.Public
                    }
                },
                Signer = new Signer.Keys
                {
                    KeysAccessor = keys
                }
            });

            await _tonClient.SendGramsFromLocalGiver(encoded.Address);

            var events = new List <ProcessingEvent>();

            void ProcessingCallback(ProcessingEvent @event, uint code)
            {
                code.Should().Be(100);
                @event.Should().NotBeNull();
                events.Add(@event);
            }

            ResultOfSendMessage sendMessageResult = await _tonClient.Processing.SendMessage(new ParamsOfSendMessage
            {
                Message    = encoded.Message,
                Abi        = TestsEnv.Packages.Events.Abi,
                SendEvents = true
            }, ProcessingCallback);

            //act
            ResultOfProcessMessage waitForTransactionResult = await _tonClient.Processing.WaitForTransaction(new ParamsOfWaitForTransaction
            {
                Message      = encoded.Message,
                ShardBlockId = sendMessageResult.ShardBlockId,
                SendEvents   = true,
                Abi          = TestsEnv.Packages.Events.Abi
            }, ProcessingCallback);

            //assert
            waitForTransactionResult.OutMessages.Should().BeEmpty();
            waitForTransactionResult.Decoded.OutMessages.Should().BeEmpty();
            waitForTransactionResult.Decoded.Output.Should().BeNull();

            events.Count.Should().BeGreaterOrEqualTo(4);
            events[0].Should().BeOfType <ProcessingEvent.WillFetchFirstBlock>();
            events[1].Should().BeOfType <ProcessingEvent.WillSend>();
            events[2].Should().BeOfType <ProcessingEvent.DidSend>();
            events.GetRange(3, events.Count - 3).Should().AllBeOfType <ProcessingEvent.WillFetchNextBlock>();
        }