add Fund Me Foundry Smart Contract
This commit is contained in:
74
fund-me/test/mocks/MockV3Aggregator.sol
Normal file
74
fund-me/test/mocks/MockV3Aggregator.sol
Normal file
@@ -0,0 +1,74 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.0;
|
||||
|
||||
import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.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 AggregatorV3Interface {
|
||||
uint256 public constant version = 4;
|
||||
|
||||
uint8 public decimals;
|
||||
int256 public latestAnswer;
|
||||
uint256 public latestTimestamp;
|
||||
uint256 public latestRound;
|
||||
|
||||
mapping(uint256 => int256) public getAnswer;
|
||||
mapping(uint256 => uint256) public getTimestamp;
|
||||
mapping(uint256 => uint256) private getStartedAt;
|
||||
|
||||
constructor(uint8 _decimals, int256 _initialAnswer) {
|
||||
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
|
||||
returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)
|
||||
{
|
||||
return (_roundId, getAnswer[_roundId], getStartedAt[_roundId], getTimestamp[_roundId], _roundId);
|
||||
}
|
||||
|
||||
function latestRoundData()
|
||||
external
|
||||
view
|
||||
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 pure returns (string memory) {
|
||||
return "v0.6/test/mock/MockV3Aggregator.sol";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user