UNPKG

@vechain.energy/gas

Version:

calculate estimated gas usage for transactions

50 lines (49 loc) 2.34 kB
"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); }); });