public void CanDeleteLine() { // Set the GraphTypes IoC.GetAllInstances = type => new IGraphType[] { new PixelDiff() }; // Get the parent PipelineVM and add DiagramNode var vm = MainViewModelTest.GetInstance().PipelineViewModel; var node = new NodeViewModel(new DiagramNode(), vm); vm.Nodes.Add(node); vm.Parent.Model.Graph.AddNode(node.Model); var DVM = new DiagramViewModel((DiagramNode)vm.Nodes.Single().Model); // Add Input Node for DiagramNode with 3 Outputs. var sourceNode = new AnonymousNode(AnonNodeHelper.SourceNode, 3); var inputs = sourceNode.Process(null, 0); // Add reference video to node. var reference = new Node.Input { Source = sourceNode.Outputs[0] }; DVM.NodeModel.Inputs.Add(reference); // Add other Outputs as Inputs to DiagramNode. var video = new Node.Input { Source = sourceNode.Outputs[1] }; DVM.NodeModel.Inputs.Add(video); var annVid = new Node.Input { Source = sourceNode.Outputs[2] }; DVM.NodeModel.Inputs.Add(annVid); DVM.Reference = DVM.Videos.ElementAt(0); DVM.ChosenVideo = DVM.Videos.ElementAt(1); DVM.AddGraph(); var dgvm = DVM.Graphs.Single(); // Set the ChosenType of the DiagramGraphViewModel to PixelDifference dgvm.CurrentType = dgvm.AvailableTypes.First(); Assert.NotEmpty(DVM.Lines); Assert.NotEmpty(DVM.NodeModel.Graphs); DVM.DeleteGraph(dgvm); Assert.Empty(DVM.Lines); Assert.Empty(DVM.NodeModel.Graphs); }
public void Test50() { // Some necessary initializations. MainViewModel mvm = MainViewModelTest.GetInstance(); var windowManMock = new Mock <IWindowManagerEx>(); var vm = MainViewModelTest.GetInstance(cont => cont.ComposeExportedValue <IWindowManagerEx>(windowManMock.Object)); var conductorMock = new Mock <IConductor>(); // Step 1: Create simple pipeline. // // [color]---[overlay] // \ / // X // / \ // [noise]---[diagram] NoiseInputNode noise = new NoiseInputNode(); mvm.Model.Graph.AddNode(noise); ColorInputNode color = new ColorInputNode(); mvm.Model.Graph.AddNode(color); DiagramNode diagram = new DiagramNode(); diagram.Inputs.Add(new Node.Input()); diagram.Inputs.Add(new Node.Input()); mvm.Model.Graph.AddNode(diagram); OverlayNode overlay = new OverlayNode(); mvm.Model.Graph.AddNode(overlay); Assert.Contains(noise, mvm.Model.Graph.Nodes); Assert.Contains(color, mvm.Model.Graph.Nodes); Assert.Contains(diagram, mvm.Model.Graph.Nodes); Assert.Contains(overlay, mvm.Model.Graph.Nodes); mvm.Model.Graph.AddEdge(noise.Outputs[0], overlay.Inputs[0]); mvm.Model.Graph.AddEdge(noise.Outputs[0], diagram.Inputs[0]); mvm.Model.Graph.AddEdge(color.Outputs[0], overlay.Inputs[1]); mvm.Model.Graph.AddEdge(color.Outputs[0], diagram.Inputs[1]); Assert.Equal(noise.Outputs[0], overlay.Inputs[0].Source); Assert.Equal(noise.Outputs[0], diagram.Inputs[0].Source); Assert.Equal(color.Outputs[0], overlay.Inputs[1].Source); Assert.Equal(color.Outputs[0], diagram.Inputs[1].Source); // Step 2: Disable diagram node and open overlay node. diagram.IsEnabled = false; IGraphType pixelDiff = new PixelDiff(); IGraphType psnr = new PeakSignalNoiseRatio(); IoC.GetAllInstances = type => new List <IGraphType> { pixelDiff, psnr }; var overlayWindow = new OverlayViewModel(overlay) { Parent = conductorMock.Object }; var diagramWindow = new DiagramViewModel(diagram) { Parent = conductorMock.Object }; ((IActivate)overlayWindow).Activate(); conductorMock.Setup(c => c.DeactivateItem(overlayWindow, true)) .Callback(() => ((IDeactivate)overlayWindow).Deactivate(close: true)) .Verifiable(); mvm.OpenWindow(overlayWindow); Assert.Contains(overlayWindow, mvm.OpenWindows); // Step 3: Start pipeline and add an overlay in the overlay node. mvm.Model.Start(mvm.Model.Graph.Nodes); overlay.Type = new ArtifactsOverlay(); // Step 4: Remove selected overlay. overlay.Type = new NoOverlay(); // Step 5: Stop pipeline and close overlay node. mvm.Model.Stop(); mvm.CloseWindows(overlay); Assert.DoesNotContain(overlayWindow, mvm.OpenWindows); // Step 6: Re-enable diagram node and open it. diagram.IsEnabled = true; mvm.OpenWindow(diagramWindow); Assert.Contains(diagramWindow, mvm.OpenWindows); // Step 7: Choose a reference video and add a diagram graph. diagramWindow.Reference = new Tuple <string, Node.Input>(diagramWindow.GetVideoName(diagram.Inputs[0]), diagram.Inputs[0]); diagramWindow.ChosenVideo = new Tuple <string, Node.Input>(diagramWindow.GetVideoName(diagram.Inputs[1]), diagram.Inputs[1]); diagramWindow.AddGraph(); diagramWindow.Graphs.ElementAt(0).CurrentType = new GraphTypeViewModel(pixelDiff); // Step 8: Start pipeline again and change diagram graph type. mvm.Model.Start(mvm.Model.Graph.Nodes); diagramWindow.Graphs.ElementAt(0).CurrentType = new GraphTypeViewModel(psnr); // Step 9: Remove the diagram graph. DiagramGraphViewModel dgvm = diagramWindow.Graphs.ElementAt(0); diagramWindow.DeleteGraph(dgvm); Assert.DoesNotContain(dgvm, diagramWindow.Graphs); }