Esempio n. 1
0
        public async Task ValidateEndAndReturn()
        {
            Meadow.Core.EthTypes.UInt256 newPrice = 12345678;

            var txParams = new TransactionParams {
                From = Accounts[0]
            };                                                           // admin

            //fund with strike price of initPrice
            Fund _FundContract;

            _FundContract = await Fund.New(_contract.ContractAddress, RpcClient);

            //connect fund
            await _contract.connectFund(_FundContract.ContractAddress).SendTransaction(txParams);

            //end
            var txHash = await _contract.reportPrice(newPrice, "meadowUpdate").SendTransaction(txParams);

            //validate fund info
            var fundInfo = await _contract.funds(_FundContract.ContractAddress).Call();

            Assert.AreEqual(_FundContract.ContractAddress, fundInfo.fund);
            Assert.AreEqual(true, fundInfo.endPriceConditionsReached);
            Assert.AreEqual(newPrice, fundInfo.endPrice);
            Assert.AreEqual(initPrice, fundInfo.strikePrice);

            var hasFundEnded = await _contract.hasFundEnded(_FundContract.ContractAddress).Call();

            Assert.AreEqual(true, hasFundEnded);

            //back down from end
            await _contract.reportPrice(initPrice, "meadowUpdate").SendTransaction(txParams);

            //validate fund info again
            fundInfo = await _contract.funds(_FundContract.ContractAddress).Call();

            var EndPrice = await _contract.getEndPrice(_FundContract.ContractAddress).Call();

            Assert.AreEqual(_FundContract.ContractAddress, fundInfo.fund);
            Assert.AreEqual(true, fundInfo.endPriceConditionsReached);
            Assert.AreEqual(newPrice, fundInfo.endPrice); //end price was the peak
            Assert.AreEqual(newPrice, EndPrice);          //end price was the peak

            Assert.AreEqual(initPrice, fundInfo.strikePrice);

            hasFundEnded = await _contract.hasFundEnded(_FundContract.ContractAddress).Call();

            Assert.AreEqual(true, hasFundEnded);
        }