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); }