infrastructure-upgrade/lib/v3-periphery/test/shared/snapshotGasCost.ts

28 lines
911 B
TypeScript
Raw Permalink Normal View History

2023-04-08 18:46:18 +00:00
import { TransactionReceipt, TransactionResponse } from '@ethersproject/abstract-provider'
import { expect } from './expect'
import { Contract, BigNumber, ContractTransaction } from 'ethers'
export default async function snapshotGasCost(
x:
| TransactionResponse
| Promise<TransactionResponse>
| ContractTransaction
| Promise<ContractTransaction>
| TransactionReceipt
| Promise<BigNumber>
| BigNumber
| Contract
| Promise<Contract>
): Promise<void> {
const resolved = await x
if ('deployTransaction' in resolved) {
const receipt = await resolved.deployTransaction.wait()
expect(receipt.gasUsed.toNumber()).toMatchSnapshot()
} else if ('wait' in resolved) {
const waited = await resolved.wait()
expect(waited.gasUsed.toNumber()).toMatchSnapshot()
} else if (BigNumber.isBigNumber(resolved)) {
expect(resolved.toNumber()).toMatchSnapshot()
}
}