123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- import 'reflect-metadata';
- import { assert } from 'chai';
- import * as ESTree from 'estree';
- import { ServiceIdentifiers } from '../../../../src/container/ServiceIdentifiers';
- import { IInversifyContainerFacade } from '../../../../src/interfaces/container/IInversifyContainerFacade';
- import { IPrevailingKindOfVariablesAnalyzer } from '../../../../src/interfaces/analyzers/calls-graph-analyzer/IPrevailingKindOfVariablesAnalyzer';
- import { InversifyContainerFacade } from '../../../../src/container/InversifyContainerFacade';
- import { NodeFactory } from '../../../../src/node/NodeFactory';
- describe('PrevailingKindOfVariablesAnalyzer', () => {
- let prevailingKindOfVariablesAnalyzer: IPrevailingKindOfVariablesAnalyzer;
- before(() => {
- const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade();
- inversifyContainerFacade.load('', '', {});
- prevailingKindOfVariablesAnalyzer = inversifyContainerFacade
- .get<IPrevailingKindOfVariablesAnalyzer>(ServiceIdentifiers.IPrevailingKindOfVariablesAnalyzer);
- });
- describe('analyze', () => {
- let prevailingKindOfVariables: ESTree.VariableDeclaration['kind'];
- describe('Prevailing `var` kind', () => {
- const expectedPrevailingKind: ESTree.VariableDeclaration['kind'] = 'var';
- before(() => {
- const astTree: ESTree.Program = NodeFactory.programNode([
- NodeFactory.variableDeclarationNode(
- [
- NodeFactory.variableDeclaratorNode(
- NodeFactory.identifierNode('foo'),
- null
- )
- ],
- 'var'
- ),
- NodeFactory.variableDeclarationNode(
- [
- NodeFactory.variableDeclaratorNode(
- NodeFactory.identifierNode('bar'),
- null
- )
- ],
- 'const'
- ),
- NodeFactory.variableDeclarationNode(
- [
- NodeFactory.variableDeclaratorNode(
- NodeFactory.identifierNode('baz'),
- null
- )
- ],
- 'var'
- )
- ]);
- prevailingKindOfVariablesAnalyzer.analyze(astTree);
- prevailingKindOfVariables = prevailingKindOfVariablesAnalyzer.getPrevailingKind();
- });
- it('should return correct prevailing kind of variables', () => {
- assert.equal(prevailingKindOfVariables, expectedPrevailingKind);
- });
- });
- describe('Prevailing `let` kind', () => {
- const expectedPrevailingKind: ESTree.VariableDeclaration['kind'] = 'let';
- before(() => {
- const astTree: ESTree.Program = NodeFactory.programNode([
- NodeFactory.variableDeclarationNode(
- [
- NodeFactory.variableDeclaratorNode(
- NodeFactory.identifierNode('foo'),
- null
- )
- ],
- 'let'
- ),
- NodeFactory.variableDeclarationNode(
- [
- NodeFactory.variableDeclaratorNode(
- NodeFactory.identifierNode('bar'),
- null
- )
- ],
- 'var'
- ),
- NodeFactory.variableDeclarationNode(
- [
- NodeFactory.variableDeclaratorNode(
- NodeFactory.identifierNode('baz'),
- null
- )
- ],
- 'let'
- )
- ]);
- prevailingKindOfVariablesAnalyzer.analyze(astTree);
- prevailingKindOfVariables = prevailingKindOfVariablesAnalyzer.getPrevailingKind();
- });
- it('should return correct prevailing kind of variables', () => {
- assert.equal(prevailingKindOfVariables, expectedPrevailingKind);
- });
- });
- describe('Prevailing `const` kind', () => {
- const expectedPrevailingKind: ESTree.VariableDeclaration['kind'] = 'const';
- before(() => {
- const astTree: ESTree.Program = NodeFactory.programNode([
- NodeFactory.variableDeclarationNode(
- [
- NodeFactory.variableDeclaratorNode(
- NodeFactory.identifierNode('foo'),
- null
- )
- ],
- 'let'
- ),
- NodeFactory.variableDeclarationNode(
- [
- NodeFactory.variableDeclaratorNode(
- NodeFactory.identifierNode('bar'),
- null
- )
- ],
- 'const'
- ),
- NodeFactory.variableDeclarationNode(
- [
- NodeFactory.variableDeclaratorNode(
- NodeFactory.identifierNode('baz'),
- null
- )
- ],
- 'const'
- )
- ]);
- prevailingKindOfVariablesAnalyzer.analyze(astTree);
- prevailingKindOfVariables = prevailingKindOfVariablesAnalyzer.getPrevailingKind();
- });
- it('should return correct prevailing kind of variables', () => {
- assert.equal(prevailingKindOfVariables, expectedPrevailingKind);
- });
- });
- describe('No variables', () => {
- const expectedPrevailingKind: ESTree.VariableDeclaration['kind'] = 'var';
- before(() => {
- const astTree: ESTree.Program = NodeFactory.programNode();
- prevailingKindOfVariablesAnalyzer.analyze(astTree);
- prevailingKindOfVariables = prevailingKindOfVariablesAnalyzer.getPrevailingKind();
- });
- it('should return correct prevailing kind of variables', () => {
- assert.equal(prevailingKindOfVariables, expectedPrevailingKind);
- });
- });
- });
- });
|