123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- import 'reflect-metadata';
- import * as ESTree from 'estree';
- import { assert } from 'chai';
- import { TNumberNumericalExpressionData } from '../../../../src/types/analyzers/number-numerical-expression-analyzer/TNumberNumericalExpressionData';
- import { NodeFactory } from '../../../../src/node/NodeFactory';
- import { NumericalExpressionDataToNodeConverter } from '../../../../src/node/NumericalExpressionDataToNodeConverter';
- describe('NumericalExpressionDataToNodeConverter', () => {
- describe('convertIntegerNumberData', () => {
- describe('Variant #1: base', () => {
- const numberNumericalExpressionData: TNumberNumericalExpressionData = [
- 1, [-2, 3], 4
- ];
- const expectedExpressionNode: ESTree.Expression = NodeFactory.binaryExpressionNode(
- '+',
- NodeFactory.binaryExpressionNode(
- '+',
- NodeFactory.literalNode(1),
- NodeFactory.binaryExpressionNode(
- '*',
- NodeFactory.unaryExpressionNode(
- '-',
- NodeFactory.literalNode(2),
- ),
- NodeFactory.literalNode(3)
- ),
- ),
- NodeFactory.literalNode(4)
- );
- let expressionNode: ESTree.Expression;
- before(() => {
- expressionNode = NumericalExpressionDataToNodeConverter.convertIntegerNumberData(
- numberNumericalExpressionData,
- (number: number, isPositiveNumber: boolean): ESTree.Expression => {
- const numberLiteralNode: ESTree.Literal = NodeFactory.literalNode(number);
- return isPositiveNumber
- ? numberLiteralNode
- : NodeFactory.unaryExpressionNode(
- '-',
- numberLiteralNode
- );
- }
- );
- });
- it('should convert number numerical expression data to expression node', () => {
- assert.deepEqual(expressionNode, expectedExpressionNode);
- });
- });
- });
- describe('convertFloatNumberData', () => {
- describe('Variant #1: base', () => {
- const integerNumberNumericalExpressionData: TNumberNumericalExpressionData = [
- 1, [-2, 3], 4
- ];
- const decimalPart: number = 0.000000001;
- const expectedExpressionNode: ESTree.Expression = NodeFactory.binaryExpressionNode(
- '+',
- NodeFactory.binaryExpressionNode(
- '+',
- NodeFactory.binaryExpressionNode(
- '+',
- NodeFactory.literalNode(1),
- NodeFactory.binaryExpressionNode(
- '*',
- NodeFactory.unaryExpressionNode(
- '-',
- NodeFactory.literalNode(2),
- ),
- NodeFactory.literalNode(3)
- ),
- ),
- NodeFactory.literalNode(4)
- ),
- NodeFactory.literalNode(decimalPart)
- );
- let expressionNode: ESTree.Expression;
- before(() => {
- expressionNode = NumericalExpressionDataToNodeConverter.convertFloatNumberData(
- integerNumberNumericalExpressionData,
- decimalPart,
- (number: number, isPositiveNumber: boolean): ESTree.Expression => {
- const numberLiteralNode: ESTree.Literal = NodeFactory.literalNode(number);
- return isPositiveNumber
- ? numberLiteralNode
- : NodeFactory.unaryExpressionNode(
- '-',
- numberLiteralNode
- );
- }
- );
- });
- it('should convert number numerical expression data to expression node', () => {
- assert.deepEqual(expressionNode, expectedExpressionNode);
- });
- });
- });
- });
|