public static Tuple <bool, string> EvaluateTests(Operator testingOp, string filterPattern) { try { //connect it to a testsevaluator var compositionOp = testingOp.Parent; var evaluatorMetaOpID = Guid.Parse("0316356c-b1fe-490a-89ce-73c8f67ebccc"); var evaluatorMetaOp = MetaManager.Instance.GetMetaOperator(evaluatorMetaOpID); var addOpCmd = new AddOperatorCommand(compositionOp, evaluatorMetaOpID); addOpCmd.Do(); var evaluatorOp = evaluatorMetaOp.GetOperatorInstance(addOpCmd.AddedInstanceID); var connection = new MetaConnection(testingOp.ID, testingOp.Outputs[0].ID, evaluatorOp.ID, evaluatorOp.Inputs[0].ID); var addConnectionCmd = new InsertConnectionCommand(compositionOp.Definition, connection, 0); addConnectionCmd.Do(); //configure the testsevaluator op and start testing var startTestsTriggerOpPart = evaluatorOp.Inputs[1]; var filterOpPart = evaluatorOp.Inputs[3]; //we must create a down flank for the startTestsTrigger value to start the tests properly var updateStartTestsCmd = new UpdateOperatorPartValueFunctionCommand(startTestsTriggerOpPart, new Float(1.0f)); updateStartTestsCmd.Do(); var updateFilterCmd = new UpdateOperatorPartValueFunctionCommand(filterOpPart, new Text(filterPattern)); updateFilterCmd.Do(); evaluatorOp.Outputs[0].Eval(new OperatorPartContext()); updateStartTestsCmd.Value = new Float(0.0f); updateStartTestsCmd.Do(); var resultLog = evaluatorOp.Outputs[0].Eval(new OperatorPartContext()).Text; var result = new Tuple <bool, string>(resultLog.StartsWith(compositionOp.Definition.Name + " : passed"), resultLog); var deleteOperatorCmd = new DeleteOperatorsCommand(compositionOp, new List <Operator>() { evaluatorOp }); deleteOperatorCmd.Do(); return(result); } catch (Exception ex) { Logger.Error("Failed to evaluate operator definition {0}: {1}", testingOp.Name, ex.ToString()); return(new Tuple <bool, string>(false, "")); } }
private void BuildTree(Operator fbxOp, List <ICommand> importFbxCommandList, Operator parent, OperatorPart input, Node node, double x, double y, string rootName = "") { Guid metaIDToAdd = GetIDOfNode(node); var newOpName = ""; if (node is Group) { newOpName = "+ " + node.Name; } else if (node is Transform) { newOpName = "Transform"; } else if (node is TransformMatrix) { newOpName = "TransformMatrix"; } else if (node is Material) { newOpName = "Material"; } else { newOpName = node.Name; } if (parent == null) { newOpName += rootName; } var addOperatorCommand = new AddOperatorCommand(fbxOp, metaIDToAdd, x, y, TreeWidth(node), true, newOpName); importFbxCommandList.Add(addOperatorCommand); addOperatorCommand.Do(); var newOp = (from o in fbxOp.InternalOps where addOperatorCommand.AddedInstanceID == o.ID select o).Single(); SetupValues(newOp, node); if (input != null) { var newConnection = new MetaConnection(newOp.ID, newOp.Outputs[0].ID, parent == null ? Guid.Empty : parent.ID, input.ID); var firstOccuranceOfTargetOpID = fbxOp.Definition.Connections.FindIndex(con => (con.TargetOpID == newConnection.TargetOpID) && (con.TargetOpPartID == newConnection.TargetOpPartID)); var lastOccuranceOfTargetOpID = fbxOp.Definition.Connections.FindLastIndex(con => (con.TargetOpID == newConnection.TargetOpID) && (con.TargetOpPartID == newConnection.TargetOpPartID)); int index = 0; if (firstOccuranceOfTargetOpID > -1 && lastOccuranceOfTargetOpID > -1) { index = lastOccuranceOfTargetOpID - firstOccuranceOfTargetOpID + 1; } var addConnectionCommand = new InsertConnectionCommand(fbxOp.Definition, newConnection, index); addConnectionCommand.Do(); importFbxCommandList.Add(addConnectionCommand); } double childX = 0; foreach (Node child in node.Children) { BuildTree(fbxOp, importFbxCommandList, newOp, newOp.Inputs[0], child, x + childX, y + CompositionGraphView.GRID_SIZE); childX += TreeWidth(child); } }