Moved logic from ParentificationTransformer to NodeUtils.parentizeNode method

This commit is contained in:
sanex3339
2017-09-09 00:46:53 +03:00
parent ff0c93d314
commit 19111abe0e
7 changed files with 58 additions and 80 deletions
-1
View File
@@ -17,7 +17,6 @@ import './unit-tests/logger/Logger.spec';
import './unit-tests/node/node-appender/NodeAppender.spec';
import './unit-tests/node/node-utils/NodeUtils.spec';
import './unit-tests/node-transformers/preparing-transformers/ObfuscatingGuardsTransformer.spec';
import './unit-tests/node-transformers/preparing-transformers/ParentificationTransformer.spec';
import './unit-tests/obfuscation-result/ObfuscationResult.spec';
import './unit-tests/options/OptionsNormalizer.spec';
import './unit-tests/options/ValidationErrorsFormatter.spec';
@@ -1,66 +0,0 @@
import 'reflect-metadata';
import { assert } from 'chai';
import * as ESTree from 'estree';
import { ServiceIdentifiers } from '../../../../src/container/ServiceIdentifiers';
import { InversifyContainerFacade } from '../../../../src/container/InversifyContainerFacade';
import { IInversifyContainerFacade } from '../../../../src/interfaces/container/IInversifyContainerFacade';
import { INodeTransformer } from '../../../../src/interfaces/node-transformers/INodeTransformer';
import { NodeTransformer } from '../../../../src/enums/node-transformers/NodeTransformer';
import { Nodes } from '../../../../src/node/Nodes';
import { NodeUtils } from '../../../../src/node/NodeUtils';
describe('ParentificationTransformer', () => {
describe('transformNode (node: ESTree.Node, parentNode: ESTree.Node): ESTree.Node', () => {
let inversifyContainerFacade: IInversifyContainerFacade,
parentificationTransformer: INodeTransformer;
before(() => {
inversifyContainerFacade = new InversifyContainerFacade();
inversifyContainerFacade.load('', {});
parentificationTransformer = inversifyContainerFacade
.getNamed(ServiceIdentifiers.INodeTransformer, NodeTransformer.ParentificationTransformer);
});
describe('variant #1: node with parent node', () => {
const identifier: ESTree.Identifier = Nodes.getIdentifierNode('foo');
const breakStatement: ESTree.BreakStatement = Nodes.getBreakStatement(identifier);
const expectedResult: ESTree.Identifier = NodeUtils.clone(identifier);
let result: ESTree.Identifier;
before(() => {
expectedResult.parentNode = breakStatement;
result = <ESTree.Identifier>parentificationTransformer.transformNode(identifier, breakStatement);
});
it('should parentize given node', () => {
assert.deepEqual(result, expectedResult);
});
});
describe('variant #2: node without parent node', () => {
const identifier: ESTree.Identifier = Nodes.getIdentifierNode('Foo');
const expectedResult: ESTree.Identifier = NodeUtils.clone(identifier);
let result: ESTree.Identifier;
before(() => {
expectedResult.parentNode = expectedResult;
result = <ESTree.Identifier>parentificationTransformer.transformNode(identifier, <any>null);
});
it('should parentize given node', () => {
assert.deepEqual(result, expectedResult);
});
});
});
});
@@ -493,7 +493,7 @@ describe('NodeUtils', () => {
);
});
describe('parentize AST-tree with `ProgramNode` as root node', () => {
describe('variant #1: parentize AST-tree with `ProgramNode` as root node', () => {
beforeEach(() => {
programNode = Nodes.getProgramNode([
ifStatementNode
@@ -523,7 +523,7 @@ describe('NodeUtils', () => {
});
});
describe('parentize AST-tree', () => {
describe('variant #2: parentize AST-tree', () => {
beforeEach(() => {
ifStatementNode = NodeUtils.parentize(ifStatementNode);
});
@@ -545,4 +545,42 @@ describe('NodeUtils', () => {
});
});
});
describe('parentizeNode <T extends ESTree.Node = ESTree.Program> (node: T, parentNode: ESTree.Node): T', () => {
describe('variant #1: node with parent node', () => {
const identifier: ESTree.Identifier = Nodes.getIdentifierNode('foo');
const breakStatement: ESTree.BreakStatement = Nodes.getBreakStatement(identifier);
const expectedResult: ESTree.Identifier = NodeUtils.clone(identifier);
let result: ESTree.Identifier;
before(() => {
expectedResult.parentNode = breakStatement;
result = NodeUtils.parentizeNode(identifier, breakStatement);
});
it('should parentize given node', () => {
assert.deepEqual(result, expectedResult);
});
});
describe('variant #2: node without parent node', () => {
const identifier: ESTree.Identifier = Nodes.getIdentifierNode('Foo');
const expectedResult: ESTree.Identifier = NodeUtils.clone(identifier);
let result: ESTree.Identifier;
before(() => {
expectedResult.parentNode = expectedResult;
result = NodeUtils.parentizeNode(identifier, <any>null);
});
it('should parentize given node', () => {
assert.deepEqual(result, expectedResult);
});
});
});
});