public void Constructor_JoinExpr_JoinExpr() { IExpression expr = TestExprFactory.GetExpression("join", ExpressionFactoryNameTarget.OperatorSymbol); IExpression refExpr = ModelResolvers.ExprResolver(); ITransformationSchema schema = ModelResolvers.SchemaResolver(); refExpr.AddOperand("ds", expr); expr.ContainingSchema = schema; expr.ReferenceExpression = refExpr; IJoinExpression joinExpr2 = ModelResolvers.JoinExprResolver(expr); joinExpr2.BasicStructure = ModelResolvers.DsResolver(); JoinExpression joinExpr = new JoinExpression(joinExpr2); Assert.Equal(expr.ParentExpression, joinExpr.ParentExpression); Assert.Equal(expr.ContainingSchema, joinExpr.ContainingSchema); Assert.Equal(expr.ExpressionText, joinExpr.ExpressionText); Assert.Equal(expr.LineNumber, joinExpr.LineNumber); Assert.Equal(expr.OperandsCollection, joinExpr.OperandsCollection); Assert.Equal(expr.OperatorDefinition, joinExpr.OperatorDefinition); Assert.Equal(expr.ParamSignature, joinExpr.ParamSignature); Assert.Equal(expr.ReferenceExpression, joinExpr.ReferenceExpression); Assert.Equal(expr.ResultName, joinExpr.ResultName); Assert.Equal(expr.Structure, joinExpr.Structure); Assert.Equal(joinExpr2.BasicStructure, joinExpr.BasicStructure); }
public void SetContainingSchema_Schema_SetsSchema() { ITransformationSchema schema = ModelResolvers.SchemaResolver(); Expression expr = new Expression(); expr.AddOperand("ds_1", ModelResolvers.ExprResolver()); Assert.Null(expr.ContainingSchema); Assert.Null(expr.Operands["ds_1"].ContainingSchema); expr.SetContainingSchema(schema); Assert.Equal(expr.ContainingSchema, schema); Assert.Equal(expr.Operands["ds_1"].ContainingSchema, schema); }
private void InitSchema(ref ITransformationSchema schema) { IDataStructure structureX = ModelResolvers.DsResolver(); structureX.DatasetName = "X"; IDataStructure structureY = ModelResolvers.DsResolver(); structureY.DatasetName = "Y"; IDataStructure constStructure = ModelResolvers.DsResolver(); constStructure.DatasetName = "const"; IExpression expr1_1 = TestExprFactory.GetExpression("get", ExpressionFactoryNameTarget.OperatorSymbol); expr1_1.ParamSignature = "ds"; expr1_1.ExpressionText = "X"; expr1_1.Structure = structureX; IExpression expr1_2 = TestExprFactory.GetExpression("get", ExpressionFactoryNameTarget.OperatorSymbol); expr1_2.ParamSignature = "ds"; expr1_2.ExpressionText = "Y"; expr1_2.Structure = structureY; IExpression expr2_1 = expr1_1; // X IExpression expr2_2 = TestExprFactory.GetExpression("ref", ExpressionFactoryNameTarget.OperatorSymbol); // A expr2_2.ParamSignature = "ds"; expr2_2.ExpressionText = "A"; expr2_2.Structure = structureY; // struktura Y IExpression expr3_1 = expr2_2; // A IExpression expr3_2 = TestExprFactory.GetExpression("const", ExpressionFactoryNameTarget.OperatorSymbol); // 2 expr3_2.ParamSignature = "ds"; expr3_2.ExpressionText = "2"; expr3_2.Structure = constStructure; // struktura const IExpression expr4_1 = expr1_2; // Y IExpression expr4_2 = TestExprFactory.GetExpression("ref", ExpressionFactoryNameTarget.OperatorSymbol); // B expr4_2.ParamSignature = "ds"; expr4_2.ExpressionText = "B"; expr4_2.Structure = structureX; // struktura X IExpression expr1 = TestExprFactory.GetExpression("+", ExpressionFactoryNameTarget.OperatorSymbol); // A := X + Y expr1.ResultName = "A"; expr1.ExpressionText = "X + Y"; expr1.ParamSignature = "<root>"; expr1.OperandsCollection = new List <IExpression>() { expr1_1, expr1_2 }; expr1.Structure = structureY; // struktura Y IExpression expr2 = TestExprFactory.GetExpression("-", ExpressionFactoryNameTarget.OperatorSymbol); // B := X - 2 expr2.ResultName = "B"; expr2.ExpressionText = "X - A"; expr2.ParamSignature = "<root>"; expr2.OperandsCollection = new List <IExpression>() { expr2_1, expr2_2 }; expr2.Structure = structureX; // struktura X IExpression expr3 = TestExprFactory.GetExpression("*", ExpressionFactoryNameTarget.OperatorSymbol); // C <- A * 2 expr3.ResultName = "C"; expr3.ExpressionText = "A - 2"; expr3.ParamSignature = "<root>"; expr3.OperandsCollection = new List <IExpression>() { expr3_1, expr3_2 }; expr3.Structure = structureY; // strktura Y IExpression expr4 = TestExprFactory.GetExpression("+", ExpressionFactoryNameTarget.OperatorSymbol); // D := Y + B expr4.ResultName = "D"; expr4.ExpressionText = "Y + B"; expr4.ParamSignature = "<root>"; expr4.OperandsCollection = new List <IExpression>() { expr4_1, expr4_2 }; expr4.Structure = structureY; // struktura Y schema = ModelResolvers.SchemaResolver(); schema.AssignmentObjects.Add(new AssignmentObject(schema, expr1, false, new string[0])); // A := X + Y schema.AssignmentObjects.Add(new AssignmentObject(schema, expr2, false, new string[] { "A" })); // B := X - 2 schema.AssignmentObjects.Add(new AssignmentObject(schema, expr3, true, new string[] { "A" })); // C <- A * 2 schema.AssignmentObjects.Add(new AssignmentObject(schema, expr4, false, new string[] { "B" })); // D := Y + B }