@vechain.energy/gas
Version:
calculate estimated gas usage for transactions
50 lines (49 loc) • 2.34 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const intrinsic_1 = __importDefault(require("./intrinsic"));
const constants_1 = require("./constants");
describe('intrinsic(clause[])', () => {
it('returns basic tx gas for empty clauses', () => {
expect((0, intrinsic_1.default)([])).toEqual(constants_1.TX_GAS);
});
it('calculates contract creation speciality', () => {
expect((0, intrinsic_1.default)([{ to: null, data: '0x', value: '0x' }])).toEqual(constants_1.TX_GAS + constants_1.CLAUSE_GAS_CONTRACT_CREATION);
});
it('calculates gas for each clause', () => {
expect((0, intrinsic_1.default)([
{ to: null, data: '0x', value: '0x' },
{ to: null, data: '0x', value: '0x' }
])).toEqual(constants_1.TX_GAS + (constants_1.CLAUSE_GAS_CONTRACT_CREATION * 2));
});
it('calculates clause gas', () => {
expect((0, intrinsic_1.default)([
{ to: '0x', data: '0x', value: '0x' },
{ to: '0x', data: '0x', value: '0x' }
])).toEqual(constants_1.TX_GAS + (constants_1.CLAUSE_GAS * 2));
});
it('calculates zero bytes data gas', () => {
const amountZeroBytes = 3;
expect((0, intrinsic_1.default)([{ to: '0x', data: `0x${'00'.repeat(amountZeroBytes)}`, value: '0x' }])).toEqual(constants_1.TX_GAS + constants_1.CLAUSE_GAS + (amountZeroBytes * constants_1.ZERO_BYTES_GAS));
});
it('calculates non-zero bytes data gas', () => {
const amountNonZeroBytes = 4;
expect((0, intrinsic_1.default)([{ to: '0x', data: `0x${'11'.repeat(amountNonZeroBytes)}`, value: '0x' }])).toEqual(constants_1.TX_GAS + constants_1.CLAUSE_GAS + (amountNonZeroBytes * constants_1.NON_ZERO_BYTES_GAS));
});
it('calculates correctly a test clause', () => {
expect((0, intrinsic_1.default)([
{
to: "0x0000000000000000000000000000456E65726779",
value: 1,
data: "0x"
},
{
to: "0x0000000000000000000000000000456E65726779",
value: 1,
data: "0x11"
}
])).toEqual(37068);
});
});