@kstasi/jest-tolk
Version:
<p align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/tonkite/tonkite/main/assets/logo-dark.svg"> <img alt="tonkite logo" src="https://raw.githubusercontent.com/tonkite/tonkite/main/a
115 lines (114 loc) • 4.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tlb_1 = require("./tlb");
const tlb_codegen_1 = require("@ton-community/tlb-codegen");
describe('extractTLBCode', () => {
it('should return TLBCode for valid fuzzTlb input', () => {
const fuzzTlb = '_ a:int b:coins = Args;';
const result = (0, tlb_1.extractTLBCode)(fuzzTlb);
expect(result).toBeInstanceOf(tlb_codegen_1.TLBCode);
});
});
describe('extractIntFieldFromTLB', () => {
const mockTLBCode = {
types: new Map([
[
'Args',
new tlb_codegen_1.TLBType('Args', [
new tlb_codegen_1.TLBConstructor([], // parameters
[], // variables
new Map(), // variablesMap
new Map(), // parametersMap
'ArgsConstructor', // name
[
{
name: 'field1',
anonymous: false,
fieldType: {
kind: 'TLBNumberType',
maxBits: 128,
signed: false,
storeBits: new tlb_codegen_1.TLBNumberExpr(128),
bits: new tlb_codegen_1.TLBNumberExpr(128),
},
subFields: [],
},
{
name: 'field2',
anonymous: false,
fieldType: {
kind: 'TLBNamedType',
name: 'coins',
arguments: [],
},
subFields: [],
},
], { bitLen: 0, binary: '' }, // tag
[], // constraints
'', // declaration
''),
]),
],
]),
};
it('should return correct bits and signed for TLBNumberType', () => {
const result = (0, tlb_1.extractIntFieldFromTLB)(mockTLBCode, 'field1');
expect(result).toEqual({ bits: 128, signed: false });
});
it('should return correct bits and signed for TLBNamedType coins', () => {
const result = (0, tlb_1.extractIntFieldFromTLB)(mockTLBCode, 'field2');
expect(result).toEqual({ bits: 120, signed: false });
});
it('should throw an error for non-TLBNumberType fields', () => {
expect(() => (0, tlb_1.extractIntFieldFromTLB)(mockTLBCode, 'nonExistentField')).toThrow('Field nonExistentField is not of type TLBNumberType');
});
});
describe('extractSliceFieldFromTLB', () => {
const mockTLBCode = {
types: new Map([
[
'Args',
new tlb_codegen_1.TLBType('Args', [
new tlb_codegen_1.TLBConstructor([], // parameters
[], // variables
new Map(), // variablesMap
new Map(), // parametersMap
'ArgsConstructor', // name
[
{
name: 'field1',
anonymous: false,
fieldType: {
kind: 'TLBNamedType',
name: 'address',
arguments: [],
},
subFields: [],
},
{
name: 'field2',
anonymous: false,
fieldType: {
kind: 'TLBNamedType',
name: 'other',
arguments: [],
},
subFields: [],
},
], { bitLen: 0, binary: '' }, // tag
[], // constraints
'', // declaration
''),
]),
],
]),
};
it('should return "address" for address type', () => {
const result = (0, tlb_1.extractSliceFieldFromTLB)(mockTLBCode, 'field1');
expect(result).toBe('address');
});
it('should return "slice" for non-address type', () => {
const result = (0, tlb_1.extractSliceFieldFromTLB)(mockTLBCode, 'field2');
expect(result).toBe('slice');
});
});