@hyperlane-xyz/core
Version:
Core solidity contracts for Hyperlane
38 lines (31 loc) • 1.09 kB
text/typescript
import '../setup'
import { BigNumber } from '@ethersproject/bignumber'
import { zeroesAndOnes, calldataCost } from '../../src'
describe('Fees', () => {
it('should count zeros and ones', () => {
const cases = [
{ input: Buffer.from('0001', 'hex'), zeros: 1, ones: 1 },
{ input: '0x0001', zeros: 1, ones: 1 },
{ input: '0x', zeros: 0, ones: 0 },
{ input: '0x1111', zeros: 0, ones: 2 },
]
for (const test of cases) {
const [zeros, ones] = zeroesAndOnes(test.input)
zeros.should.eq(test.zeros)
ones.should.eq(test.ones)
}
})
it('should compute calldata costs', () => {
const cases = [
{ input: '0x', output: BigNumber.from(0) },
{ input: '0x00', output: BigNumber.from(4) },
{ input: '0xff', output: BigNumber.from(16) },
{ input: Buffer.alloc(32), output: BigNumber.from(4 * 32) },
{ input: Buffer.alloc(32, 0xff), output: BigNumber.from(16 * 32) },
]
for (const test of cases) {
const cost = calldataCost(test.input)
cost.should.deep.eq(test.output)
}
})
})