@vlocode/apex
Version:
Salesforce APEX Parser and Grammar
54 lines • 2.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const types_1 = require("../types");
const blockVisitor_1 = require("../visitors/blockVisitor");
describe('BlockVisitor', () => {
describe('resolveBlockHierarchy', () => {
it('should return the block hierarchy', () => {
const state = {
name: 'R',
sourceRange: types_1.ApexSourceRange.empty,
blocks: [
{
name: 'A',
sourceRange: types_1.ApexSourceRange.empty,
blocks: [
{ name: 'A1', sourceRange: types_1.ApexSourceRange.empty }
]
},
{
name: 'B',
sourceRange: types_1.ApexSourceRange.empty,
blocks: [
{ name: 'B1', sourceRange: types_1.ApexSourceRange.empty },
{ name: 'B2', sourceRange: types_1.ApexSourceRange.empty },
{
name: 'B3', sourceRange: types_1.ApexSourceRange.empty,
blocks: [
{ name: 'B3-1', sourceRange: types_1.ApexSourceRange.empty },
{ name: 'B3-2', sourceRange: types_1.ApexSourceRange.empty }
]
}
]
}
]
};
const visitor = new blockVisitor_1.BlockVisitor(state);
const result = Array.from(visitor.resolveBlockHierarchy());
// Assert
const blockNames = result.map(blocks => blocks.map(block => block['name']));
expect(blockNames).toEqual([
['R'],
['R', 'A'],
['R', 'A', 'A1'],
['R', 'B'],
['R', 'B', 'B1'],
['R', 'B', 'B2'],
['R', 'B', 'B3'],
['R', 'B', 'B3', 'B3-1'],
['R', 'B', 'B3', 'B3-2']
]);
});
});
});
//# sourceMappingURL=blockVistor.test.js.map