Last active
May 25, 2022 21:03
-
-
Save zyzo/5592a7ff9479af87dd6494b74c99eeea to your computer and use it in GitHub Desktop.
MockV3Aggregator-0.8.7.sol
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.7; | |
import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol"; | |
/** | |
* @title MockV3Aggregator | |
* @notice Based on the FluxAggregator contract | |
* @notice Use this contract when you need to test | |
* other contract's ability to read data from an | |
* aggregator contract, but how the aggregator got | |
* its answer is unimportant | |
*/ | |
contract MockV3Aggregator is AggregatorV2V3Interface { | |
uint256 constant public override version = 0; | |
uint8 public override decimals; | |
int256 public override latestAnswer; | |
uint256 public override latestTimestamp; | |
uint256 public override latestRound; | |
mapping(uint256 => int256) public override getAnswer; | |
mapping(uint256 => uint256) public override getTimestamp; | |
mapping(uint256 => uint256) private getStartedAt; | |
constructor( | |
uint8 _decimals, | |
int256 _initialAnswer | |
) public { | |
decimals = _decimals; | |
updateAnswer(_initialAnswer); | |
} | |
function updateAnswer( | |
int256 _answer | |
) public { | |
latestAnswer = _answer; | |
latestTimestamp = block.timestamp; | |
latestRound++; | |
getAnswer[latestRound] = _answer; | |
getTimestamp[latestRound] = block.timestamp; | |
getStartedAt[latestRound] = block.timestamp; | |
} | |
function updateRoundData( | |
uint80 _roundId, | |
int256 _answer, | |
uint256 _timestamp, | |
uint256 _startedAt | |
) public { | |
latestRound = _roundId; | |
latestAnswer = _answer; | |
latestTimestamp = _timestamp; | |
getAnswer[latestRound] = _answer; | |
getTimestamp[latestRound] = _timestamp; | |
getStartedAt[latestRound] = _startedAt; | |
} | |
function getRoundData(uint80 _roundId) | |
external | |
view | |
override | |
returns ( | |
uint80 roundId, | |
int256 answer, | |
uint256 startedAt, | |
uint256 updatedAt, | |
uint80 answeredInRound | |
) | |
{ | |
return ( | |
_roundId, | |
getAnswer[_roundId], | |
getStartedAt[_roundId], | |
getTimestamp[_roundId], | |
_roundId | |
); | |
} | |
function latestRoundData() | |
external | |
view | |
override | |
returns ( | |
uint80 roundId, | |
int256 answer, | |
uint256 startedAt, | |
uint256 updatedAt, | |
uint80 answeredInRound | |
) | |
{ | |
return ( | |
uint80(latestRound), | |
getAnswer[latestRound], | |
getStartedAt[latestRound], | |
getTimestamp[latestRound], | |
uint80(latestRound) | |
); | |
} | |
function description() | |
external | |
view | |
override | |
returns (string memory) | |
{ | |
return "v0.8/tests/MockV3Aggregator.sol"; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment