( a: BigNumberish, b: BigNumberish, variance: string = "0.02", reason: string = "", )
| 32 | } |
| 33 | |
| 34 | export function assertBigNumberClosePercent( |
| 35 | a: BigNumberish, |
| 36 | b: BigNumberish, |
| 37 | variance: string = "0.02", |
| 38 | reason: string = "", |
| 39 | ) { |
| 40 | const aBigNumber = BigNumber.from(a); |
| 41 | const bBigNumber = BigNumber.from(b); |
| 42 | const varianceBigNumber = ethers.utils.parseUnits(variance, 16); |
| 43 | |
| 44 | if (aBigNumber.eq(bBigNumber)) return; |
| 45 | |
| 46 | const diff = aBigNumber.sub(bBigNumber).abs().mul(ethers.constants.WeiPerEther).div(aBigNumber.add(bBigNumber)); |
| 47 | assert.ok( |
| 48 | diff.lte(varianceBigNumber), |
| 49 | `${reason}: diff exceeded ${variance}: ${aBigNumber.toString()} ${bBigNumber.toString()}`, |
| 50 | ); |
| 51 | } |
nothing calls this directly
no outgoing calls
no test coverage detected