-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMockJokeRaceContest.sol
61 lines (51 loc) · 1.83 KB
/
MockJokeRaceContest.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.20;
import {IJokeRaceContest} from "../../src/SwanDebate.sol";
/// @dev Mock implementation of `IJokeRaceContest`
contract MockJokeRaceContest is IJokeRaceContest {
ContestState private _currentState;
mapping(uint256 => uint256) private _votes;
mapping(uint256 => address) private _authors;
uint256[] private _proposalIds;
uint256[] private _sortedProposals;
function setState(ContestState _state) external {
_currentState = _state;
}
function state() external view override returns (ContestState) {
return _currentState;
}
function setProposalVotes(uint256 proposalId, uint256 votes) external {
_votes[proposalId] = votes;
if (!_proposalExists(proposalId)) {
_proposalIds.push(proposalId);
}
}
function setProposalAuthor(uint256 proposalId, address author) external {
_authors[proposalId] = author;
if (!_proposalExists(proposalId)) {
_proposalIds.push(proposalId);
}
}
function proposalVotes(uint256 proposalId) external view override returns (uint256 votes) {
return (_votes[proposalId]);
}
function getAllProposalIds() external view override returns (uint256[] memory) {
return _proposalIds;
}
function proposals(uint256 proposalId)
external
view
override
returns (address author, bool exists, string memory description)
{
return (_authors[proposalId], _proposalExists(proposalId), "Mock Proposal");
}
function _proposalExists(uint256 proposalId) internal view returns (bool) {
for (uint256 i = 0; i < _proposalIds.length; i++) {
if (_proposalIds[i] == proposalId) {
return true;
}
}
return false;
}
}