-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhelper.ts
42 lines (38 loc) · 1.37 KB
/
helper.ts
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
import { Network } from 'hardhat/types';
import { BigNumberish } from '@ethersproject/bignumber';
import { BigNumber } from 'ethers';
import { assert, expect } from 'chai';
export async function timeTravel(network: Network, time: number) {
await network.provider.request({
method: 'evm_increaseTime',
params: [time],
});
}
export async function blocksTravel(network: Network, blocks: number) {
for (let index = 0; index < blocks; index++) {
await network.provider.request({
method: 'evm_mine',
params: [],
});
}
}
// delta = 10**18 means 1 percent
export function expectApproxEqual(a: BigNumberish, b: BigNumberish, errorMsg: string, delta: BigNumber = BigNumber.from(10).pow(16)) {
let e18 = BigNumber.from(10).pow(18);
let _a: BigNumber = BigNumber.from(a);
let _b: BigNumber = BigNumber.from(b);
let aGreaterThanB = _a.gte(_b);
if (aGreaterThanB) {
_a = BigNumber.from(a);
_b = BigNumber.from(b);
} else {
_a = BigNumber.from(b);
_b = BigNumber.from(a);
}
let _delta = _a.sub(_b).mul(e18).div(_a);
// expect(_delta).lte(delta, errorMsg);
assert(_delta.lte(delta), errorMsg);
}
export const onePercent = BigNumber.from(10).pow(16);
export const pointOnePercent = BigNumber.from(10).pow(15);
export const pointZeroOnePercent = BigNumber.from(10).pow(14);