Skip to content

Commit

Permalink
refactor: reorganize tests
Browse files Browse the repository at this point in the history
  • Loading branch information
amusingaxl committed Feb 4, 2025
1 parent be4a645 commit a7d205a
Show file tree
Hide file tree
Showing 3 changed files with 127 additions and 180 deletions.
132 changes: 126 additions & 6 deletions src/DSPC.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ pragma solidity ^0.8.24;

import {Test} from "forge-std/Test.sol";
import {DSPC} from "./DSPC.sol";
import {Rates} from "./test/Rates.sol";
import {RatesMock} from "./mocks/RatesMock.sol";

contract MockJug {
mapping(bytes32 => uint256) public duty;
Expand Down Expand Up @@ -38,10 +38,10 @@ contract MockSUSDS {

contract MockConv {
uint256 constant RAY = 1e27;
Rates public rates;
RatesMock public rates;

constructor() {
rates = new Rates();
rates = new RatesMock();
}

function turn(uint256 bps) external view returns (uint256) {
Expand All @@ -50,7 +50,15 @@ contract MockConv {
}
}

contract DSPCTest is Test {
contract DSPCHarness is DSPC {
constructor(address _jug, address _pot, address _susds, address _conv) DSPC(_jug, _pot, _susds, _conv) {}

function exposed_back(uint256 ray) public pure returns (uint256) {
return _back(ray);
}
}

contract DSPCTest is Test, RatesMock {
// --- Events ---
event Rely(address indexed usr);
event Deny(address indexed usr);
Expand All @@ -62,7 +70,7 @@ contract DSPCTest is Test {
event Zap();
event Halt();

DSPC dspc;
DSPCHarness dspc;
MockJug jug;
MockPot pot;
MockSUSDS susds;
Expand All @@ -81,7 +89,7 @@ contract DSPCTest is Test {
pot = new MockPot();
susds = new MockSUSDS();
conv = new MockConv();
dspc = new DSPC(address(jug), address(pot), address(susds), address(conv));
dspc = new DSPCHarness(address(jug), address(pot), address(susds), address(conv));

// Initialize mock rates
jug.file(ILK, "duty", conv.turn(100)); // 1%
Expand Down Expand Up @@ -272,4 +280,116 @@ contract DSPCTest is Test {
assertEq(storedUpdates.length, 1);
assertEq(eta, block.timestamp + 1 days);
}

function test_back() public {
uint256[] memory validKeys = new uint256[](450);
uint256 idx;

// Add all keys that exist in the mapping
validKeys[idx++] = 0;
validKeys[idx++] = 1;
validKeys[idx++] = 2;
validKeys[idx++] = 5;
validKeys[idx++] = 6;
validKeys[idx++] = 10;
validKeys[idx++] = 25;
validKeys[idx++] = 50;
validKeys[idx++] = 75;
validKeys[idx++] = 100;
validKeys[idx++] = 125;
validKeys[idx++] = 133;
validKeys[idx++] = 150;
validKeys[idx++] = 175;
validKeys[idx++] = 200;
validKeys[idx++] = 225;
validKeys[idx++] = 250;
validKeys[idx++] = 275;
validKeys[idx++] = 300;
validKeys[idx++] = 319;
validKeys[idx++] = 325;
validKeys[idx++] = 333;
validKeys[idx++] = 344;
validKeys[idx++] = 345;
validKeys[idx++] = 349;
validKeys[idx++] = 350;
validKeys[idx++] = 358;
validKeys[idx++] = 370;
validKeys[idx++] = 374;
validKeys[idx++] = 375;
validKeys[idx++] = 394;
validKeys[idx++] = 400;
validKeys[idx++] = 408;
validKeys[idx++] = 420;
validKeys[idx++] = 424;
validKeys[idx++] = 425;
validKeys[idx++] = 450;
validKeys[idx++] = 475;
validKeys[idx++] = 490;
validKeys[idx++] = 500;
validKeys[idx++] = 520;
validKeys[idx++] = 525;
validKeys[idx++] = 537;
validKeys[idx++] = 544;
validKeys[idx++] = 550;
validKeys[idx++] = 554;
validKeys[idx++] = 555;
validKeys[idx++] = 561;
validKeys[idx++] = 569;
validKeys[idx++] = 575;
validKeys[idx++] = 579;
validKeys[idx++] = 580;
validKeys[idx++] = 586;
validKeys[idx++] = 600;
validKeys[idx++] = 616;
validKeys[idx++] = 619;
validKeys[idx++] = 625;
validKeys[idx++] = 629;
validKeys[idx++] = 630;
validKeys[idx++] = 636;
validKeys[idx++] = 640;
validKeys[idx++] = 641;
validKeys[idx++] = 643;
validKeys[idx++] = 645;
validKeys[idx++] = 649;
validKeys[idx++] = 650;
validKeys[idx++] = 665;
validKeys[idx++] = 668;
validKeys[idx++] = 670;
validKeys[idx++] = 674;
validKeys[idx++] = 675;
validKeys[idx++] = 691;
validKeys[idx++] = 700;
validKeys[idx++] = 716;
validKeys[idx++] = 718;
validKeys[idx++] = 720;
validKeys[idx++] = 724;
validKeys[idx++] = 725;
validKeys[idx++] = 750;
validKeys[idx++] = 775;
validKeys[idx++] = 800;
validKeys[idx++] = 825;
validKeys[idx++] = 850;
validKeys[idx++] = 875;
validKeys[idx++] = 900;
validKeys[idx++] = 925;
validKeys[idx++] = 931;
validKeys[idx++] = 950;
validKeys[idx++] = 975;
validKeys[idx++] = 1000;

// Add all remaining multiples of 25 from 1025 to 10000
for (uint256 i = 1025; i <= 10000; i += 25) {
validKeys[idx++] = i;
}

// Test all valid keys
for (uint256 i = 0; i < validKeys.length; i++) {
uint256 key = validKeys[i];
uint256 rate = rates[key];
require(rate > 0, string(abi.encodePacked("Rate not found for key: ", vm.toString(key))));

uint256 bps = dspc.exposed_back(rate);
assertEq(bps, key, string(abi.encodePacked("Incorrect BPS conversion for rate index: ", vm.toString(key))));
}
}
}
2 changes: 1 addition & 1 deletion src/test/Rates.sol → src/mocks/RatesMock.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity ^0.8.24;

contract Rates {
contract RatesMock {
mapping(uint256 => uint256) public rates;

constructor() {
Expand Down
173 changes: 0 additions & 173 deletions src/test/RayToBps.t.sol

This file was deleted.

0 comments on commit a7d205a

Please sign in to comment.