public void TestTemplateGraphDisposal_InValidNodes() { IEditableExperiment experiment = ((IEditableExperiment)ExperimentManager.New()); experiment.ExperimentInfo.FilePath = "C:\\somefakelocation\\mockExperiment.teml"; //construct some simple m_experiment ExperimentNode node1 = experiment.AddComponentFromDefinition(m_emptyComponentMetaDefinition, 5, 5); ExperimentNode node2 = experiment.AddComponentFromDefinition(m_emptyComponentMetaDefinition, 5, 5); ExperimentNode node3 = experiment.AddComponentFromDefinition(m_emptyComponentMetaDefinition, 5, 5); node1.Data.Metadata.Label = "Broken Component"; experiment.AddConnection(experiment.StartNode, node1); experiment.AddConnection(node1, node2); experiment.AddConnection(node2, node3); experiment.AddConnection(node3, experiment.EndNode); //initiate mockNodesFactory MockNodesFactory mockNodesFactory = new MockNodesFactory(); RunnableExperimentBase template = GraphAdapter.Adapt(experiment, mockNodesFactory, AppContext.Components, AppContext.WorkspaceInstance.TypeDirectories); //adaptation should have failed and graph should be empty because broken node construction failed Assert.IsTrue(template.IsEmpty); //but also all of the previously created nodes before reaching the broken node during adaptation should have been disposed. foreach (MockNode node in mockNodesFactory.CreatedNodes) { Assert.IsTrue(node.disposed); } }
public void ValidateInputMapping_CorrectFlow_OutputFound2() { IEditableExperiment experiment = ((IEditableExperiment)ExperimentManager.New()); experiment.ExperimentInfo.FilePath = "C:\\somefakelocation\\mockExperiment.teml"; ExperimentNode readerNode = experiment.AddComponentFromDefinition(m_componentReaderMetaDefinition, 5, 5); ExperimentNode writerNode1 = experiment.AddComponentFromDefinition(m_componentWriterMetaDefinition, 15, 15); ExperimentNode writerNode2 = experiment.AddComponentFromDefinition(m_componentWriterMetaDefinition, 25, 25); experiment.AddConnection(experiment.StartNode, writerNode1); experiment.AddConnection(writerNode1, writerNode2); experiment.AddConnection(writerNode2, readerNode); experiment.AddConnection(readerNode, experiment.EndNode); (writerNode1.Data.Metadata as ComponentMetadata).IOSpec.Output["testoutput"].MappedTo = "test1"; (writerNode2.Data.Metadata as ComponentMetadata).IOSpec.Output["testoutput"].MappedTo = "test2"; (readerNode.Data.Metadata as ComponentMetadata).IOSpec.Input["testinput"].MappedTo = "test1"; RunnableNodeFactory templateGraphNodesFactory = new RunnableNodeFactory(AppContext.WorkspaceInstance); RunnableExperimentBase template = GraphAdapter.Adapt(experiment, templateGraphNodesFactory, AppContext.Components, AppContext.WorkspaceInstance.TypeDirectories); Assert.IsFalse(template.IsEmpty); Assert.IsFalse(readerNode.HasError); Assert.IsFalse(writerNode1.HasError); Assert.IsFalse(writerNode2.HasError); Assert.AreEqual(5, template.Nodes.Count); }
public void GraphStructureValidator_NoPathToEnd2() { IEditableExperiment experiment = ((IEditableExperiment)ExperimentManager.New()); experiment.ExperimentInfo.FilePath = "C:\\somefakelocation\\mockExperiment.teml"; ExperimentNode node1 = experiment.AddComponentFromDefinition(m_emptyComponentMetaDefinition, 5, 5); ExperimentNode node2 = experiment.AddComponentFromDefinition(m_emptyComponentMetaDefinition, 15, 15); ExperimentNode node3 = experiment.AddComponentFromDefinition(m_emptyComponentMetaDefinition, 25, 25); experiment.AddConnection(experiment.StartNode, node1); experiment.AddConnection(experiment.StartNode, node3); experiment.AddConnection(node1, node2); experiment.AddConnection(node2, experiment.EndNode); Assert.IsFalse(node1.HasError); Assert.IsFalse(node2.HasError); Assert.IsFalse(node3.HasError); RunnableNodeFactory templateGraphNodesFactory = new RunnableNodeFactory(AppContext.WorkspaceInstance); RunnableExperimentBase template = GraphAdapter.Adapt(experiment, templateGraphNodesFactory, AppContext.Components, AppContext.WorkspaceInstance.TypeDirectories); Assert.IsTrue(template.IsEmpty); Assert.IsTrue(node3.HasError); Assert.AreEqual(node3.ErrorMessage, "Unable to detect path to the END node."); }
public void ValidateInputMapping_NoOutputFound2() { Assert.Fail("Test temporarily broken. The input mapping validator temporarily validates across all components, " + "not only predecessors nodes. Test ignored till the validator feature is going to be revisited."); IEditableExperiment experiment = ((IEditableExperiment)ExperimentManager.New()); experiment.ExperimentInfo.FilePath = "C:\\somefakelocation\\mockExperiment.teml"; ExperimentNode readerNode1 = experiment.AddComponentFromDefinition(m_componentReaderMetaDefinition, 5, 5); ExperimentNode readerNode2 = experiment.AddComponentFromDefinition(m_componentReaderMetaDefinition, 15, 15); ExperimentNode writerNode = experiment.AddComponentFromDefinition(m_componentWriterMetaDefinition, 25, 25); experiment.AddConnection(experiment.StartNode, writerNode); experiment.AddConnection(experiment.StartNode, readerNode1); experiment.AddConnection(writerNode, readerNode2); experiment.AddConnection(readerNode1, experiment.EndNode); experiment.AddConnection(readerNode2, experiment.EndNode); (writerNode.Data.Metadata as ComponentMetadata).IOSpec.Output["testoutput"].MappedTo = "fakemapping"; (readerNode1.Data.Metadata as ComponentMetadata).IOSpec.Input["testinput"].MappedTo = "fakemapping"; (readerNode2.Data.Metadata as ComponentMetadata).IOSpec.Input["testinput"].MappedTo = "fakemapping"; Assert.IsFalse(readerNode1.HasError); Assert.IsFalse(readerNode2.HasError); Assert.IsFalse(writerNode.HasError); RunnableNodeFactory templateGraphNodesFactory = new RunnableNodeFactory(AppContext.WorkspaceInstance); RunnableExperimentBase template = GraphAdapter.Adapt(experiment, templateGraphNodesFactory, AppContext.Components, AppContext.WorkspaceInstance.TypeDirectories); Assert.IsTrue(template.IsEmpty); Assert.IsFalse(readerNode2.HasError); Assert.IsFalse(writerNode.HasError); Assert.IsTrue(readerNode1.HasError); Assert.AreEqual(readerNode1.ErrorMessage, "The component attempts to load 'fakemapping' from the Workspace. However, none of the previous components outputs 'fakemapping' to the Workspace."); }
public void TestTemplateGraphDisposal_ValidNodes() { IEditableExperiment experiment = ((IEditableExperiment)ExperimentManager.New()); experiment.ExperimentInfo.FilePath = "C:\\somefakelocation\\mockExperiment.teml"; //construct some simple m_experiment ExperimentNode node1 = experiment.AddComponentFromDefinition(m_emptyComponentMetaDefinition, 5, 5); ExperimentNode node2 = experiment.AddComponentFromDefinition(m_emptyComponentMetaDefinition, 5, 5); experiment.AddConnection(experiment.StartNode, node1); experiment.AddConnection(node1, node2); experiment.AddConnection(node2, experiment.EndNode); //initiate mockNodesFactory MockNodesFactory mockNodesFactory = new MockNodesFactory(); RunnableExperimentBase template = GraphAdapter.Adapt(experiment, mockNodesFactory, AppContext.Components, AppContext.WorkspaceInstance.TypeDirectories); foreach (MockNode node in mockNodesFactory.CreatedNodes) { Assert.IsFalse(node.disposed); } //execute disptacher, because in case of correct graph dispatcher disposes nodes MockProgress progress = new MockProgress(); using (var dispatcher = ExperimentRunnerFactory.CreateExperimentRunner(template)) { dispatcher.ExecuteExperiment(progress); Assert.IsFalse(progress.HasError); } foreach (MockNode node in mockNodesFactory.CreatedNodes) { Assert.IsTrue(node.disposed); } }
public void ValidateInputMapping_NoOutputFound() { IEditableExperiment experiment = ((IEditableExperiment)ExperimentManager.New()); experiment.ExperimentInfo.FilePath = "C:\\somefakelocation\\mockExperiment.teml"; ExperimentNode readerNode = experiment.AddComponentFromDefinition(m_componentReaderMetaDefinition, 5, 5); ExperimentNode writerNode = experiment.AddComponentFromDefinition(m_componentWriterMetaDefinition, 5, 5); experiment.AddConnection(experiment.StartNode, writerNode); experiment.AddConnection(writerNode, readerNode); experiment.AddConnection(readerNode, experiment.EndNode); (readerNode.Data.Metadata as ComponentMetadata).IOSpec.Input["testinput"].MappedTo = "fakemapping"; Assert.IsFalse(readerNode.HasError); RunnableNodeFactory templateGraphNodesFactory = new RunnableNodeFactory(AppContext.WorkspaceInstance); RunnableExperimentBase template = GraphAdapter.Adapt(experiment, templateGraphNodesFactory, AppContext.Components, AppContext.WorkspaceInstance.TypeDirectories); Assert.IsTrue(template.IsEmpty); Assert.IsTrue(readerNode.HasError); Assert.AreEqual(readerNode.ErrorMessage, "The component attempts to load 'fakemapping' from the Workspace. However, none of the previous components outputs 'fakemapping' to the Workspace."); }
/// <summary> /// Adds a new component at the specified coordinates /// </summary> /// <param name="metadataDefinition"></param> /// <param name="positionX"></param> /// <param name="positionY"></param> /// <returns></returns> /// <exception cref="System.ArgumentNullException">Thrown if the component definition is null</exception> public ExperimentNode AddComponentFromDefinition(MetadataDefinition metadataDefinition, double positionX, double positionY) { return(m_experiment.AddComponentFromDefinition(metadataDefinition, positionX, positionY)); }