96 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import "@nomicfoundation/hardhat-chai-matchers";
 | |
| import { loadFixture } from "@nomicfoundation/hardhat-network-helpers";
 | |
| import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
 | |
| import { expect } from "chai";
 | |
| import { ethers, network } from "hardhat";
 | |
| 
 | |
| import { Reputation } from "../src/types";
 | |
| import { curve, repFixture } from "./utils/fixtures";
 | |
| 
 | |
| describe("Reputation", () => {
 | |
|   // contract deployer/admin
 | |
|   let owner: SignerWithAddress;
 | |
|   // Reputation Interface instance;
 | |
|   let reputation: Reputation;
 | |
| 
 | |
|   before("Set signers and reset network", async () => {
 | |
|     // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | |
|     [owner] = await ethers.getSigners();
 | |
| 
 | |
|     await network.provider.send("hardhat_reset");
 | |
|   });
 | |
|   beforeEach("Load deployment fixtures", async () => {
 | |
|     ({ reputation } = await loadFixture(repFixture));
 | |
|   });
 | |
| 
 | |
|   // describe("Limiter", async () => {
 | |
|   //   it("Curve reliability", async () => {
 | |
|   //     const tx1 = await reputation.connect(owner).limiter(0);
 | |
|   //     const tx2 = await reputation.limiter(500);
 | |
|   //     const tx3 = await reputation
 | |
|   //       .connect(owner)
 | |
|   //       .limiter(444444);
 | |
|   //     const tx4 = await reputation.limiter(988700);
 | |
| 
 | |
|   //     expect(tx1).to.eq(curve(0));
 | |
|   //     expect(tx2).to.eq(curve(500));
 | |
|   //     expect(tx3).to.eq(curve(444444));
 | |
|   //     expect(tx4).to.eq(curve(988700));
 | |
|   //   });
 | |
|   // });
 | |
| 
 | |
|   describe("Limiter", async () => {
 | |
|     it("Curve reliability", async () => {
 | |
|       const testCases = [
 | |
|         {
 | |
|           x: 0,
 | |
|           expected: curve(0),
 | |
|         },
 | |
|         {
 | |
|           x: 500,
 | |
|           expected: curve(500),
 | |
|         },
 | |
|         {
 | |
|           x: 444444,
 | |
|           expected: curve(444444),
 | |
|         },
 | |
|         {
 | |
|           x: 988700,
 | |
|           expected: curve(988700),
 | |
|         },
 | |
|         {
 | |
|           x: Number.MAX_SAFE_INTEGER,
 | |
|           expected: curve(Number.MAX_SAFE_INTEGER),
 | |
|         },
 | |
|         {
 | |
|           x: Number.POSITIVE_INFINITY,
 | |
|           shouldRevert: "overflow",
 | |
|         },
 | |
|         {
 | |
|           x: Number.NEGATIVE_INFINITY,
 | |
|           shouldRevert: "overflow",
 | |
|         },
 | |
|         {
 | |
|           x: -1,
 | |
|           shouldRevert: "value out-of-bounds",
 | |
|         },
 | |
|         {
 | |
|           x: Number.NaN,
 | |
|           shouldRevert: "invalid BigNumber string",
 | |
|         },
 | |
|       ];
 | |
| 
 | |
|       for (const testCase of testCases) {
 | |
|         if (testCase.shouldRevert != undefined) {
 | |
|           await expect(reputation.limiter(testCase.x)).to.be
 | |
|             .rejected;
 | |
|         } else {
 | |
|           const result = await reputation.limiter(testCase.x);
 | |
|           expect(result).to.eq(testCase.expected).and.to.be
 | |
|             .ok;
 | |
|         }
 | |
|       }
 | |
|     });
 | |
|   });
 | |
| });
 |