private void StartTest(bool arg2_isComp, string opSymbol, ComponentType compType, TestExprType[] dataTypes)
        {
            IExpression expr1 = TestExprFactory.GetExpression(dataTypes[0]);
            IExpression expr2 = TestExprFactory.GetExpression(dataTypes[1]);

            expr1.ExpressionText     = expr1.Structure.Components[0].ComponentName = "Component";
            expr1.OperatorDefinition = ModelResolvers.OperatorResolver("comp");

            if (arg2_isComp)
            {
                expr2.ExpressionText     = expr2.Structure.Components[0].ComponentName = "Component";
                expr2.OperatorDefinition = ModelResolvers.OperatorResolver("comp");
            }

            IExpression compCreateExpr = TestExprFactory.FoldExpression(expr1, expr2);

            compCreateExpr.OperatorDefinition = ModelResolvers.OperatorResolver(opSymbol);

            compCreateExpr.OperatorDefinition.Keyword = this.GetKeywordByCompType(compType);
            compCreateExpr.Structure = compCreateExpr.OperatorDefinition.GetOutputStructure(compCreateExpr);
            StructureComponent[] components = this.GetComponentsByCompType(compCreateExpr.Structure, compType);

            for (int i = 0; i < compCreateExpr.Structure.Components.Count; i++)
            {
                Assert.True(compCreateExpr.Structure.Components[i].ComponentName == expr1.Structure.Components[i].ComponentName);
            }

            BasicDataType type = expr2.Structure.Components[0].ValueDomain.DataType;

            if (type == BasicDataType.None || (type == BasicDataType.Integer && expr1.Structure.Components[0].ValueDomain.DataType == BasicDataType.Number))
            {
                type = expr1.Structure.Components[0].ValueDomain.DataType;
            }

            Assert.Equal(components.Length, expr2.Structure.Components.Count);
            Assert.Equal(components[0].ValueDomain.DataType, type);
        }