예제 #1
0
 public DomaSqlParser(string sql)
 {
     _sql       = sql;
     _tokenizer = new SqlTokenizer(sql);
     _rootNode  = new AnonymousNode();
     _nodeStack.Push(_rootNode);
 }
예제 #2
0
        public void ResetReferenceWithExistingGraphControls()
        {
            // 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 altRef = new Node.Input {
                Source = sourceNode.Outputs[2]
            };

            DVM.NodeModel.Inputs.Add(altRef);

            DVM.Reference   = DVM.Videos.ElementAt(0);
            DVM.ChosenVideo = DVM.Videos.ElementAt(1);
            DVM.AddGraph();

            var dgvm = DVM.Graphs.Single();

            // ChosenType = PixelDifference
            dgvm.CurrentType = dgvm.AvailableTypes.ElementAt(0);

            // porcess one frame with first reference
            DVM.NodeModel.ProcessCore(inputs, 0);
            DVM.Handle(null);

            DVM.Reference = DVM.Videos.ElementAt(2);

            // porcess one frame with second reference
            DVM.NodeModel.ProcessCore(inputs, 1);
            DVM.Handle(null);

            Assert.Equal(dgvm.AvailableTypes.ElementAt(0).Model.Process(inputs[1], inputs[0]), dgvm.Model.Data[0].Value);
            Assert.Equal(dgvm.AvailableTypes.ElementAt(0).Model.Process(inputs[1], inputs[2]), dgvm.Model.Data[1].Value);
        }
예제 #3
0
        public object VisitAnonymousNode(AnonymousNode node, Context parameter)
        {
            foreach (var child in node.Children)
            {
                child.Accept(this, parameter);
            }

            return(null);
        }
        internal virtual ISqlNode Transform(ISqlNode node)
        {
            var result = new AnonymousNode();

            foreach (var child in node.Children)
            {
                result.AddNode(child.Accept(this, null));
            }

            return(result);
        }
예제 #5
0
        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);
        }
예제 #6
0
        private void ParseSetOperatorWord()
        {
            Validate();
            var node = new AnonymousNode();

            node.AddNode(new WordNode(_token, true));
            if (IsInSelectStatementNode())
            {
                RemoveNodesTo <SelectStatementNode>();
                Pop();
            }
            AppendNode(node);
            _nodeStack.Push(node);
        }
예제 #7
0
        public void PlayPauseWorks()
        {
            vm.Stop();
            Assert.False(vm.Parent.Model.IsPlaying);
            Assert.Equal(vm.Parent.Model.CurrentTick, 0);

            Node graph = new AnonymousNode(() => Thread.Sleep(1000));

            vm.Parent.OpenWindows.Clear();
            vm.Parent.OpenWindows.Add(new VideoOutputViewModel(graph.Outputs[0]));
            vm.PlayPause();
            Assert.True(vm.Parent.Model.IsPlaying);
            Thread.Sleep(1500);
            vm.PlayPause();
            Assert.False(vm.Parent.Model.IsPlaying);
            Assert.Equal(vm.Parent.Model.CurrentTick, 1);
        }
예제 #8
0
        public void CannotAddDgvmWithoutChosenVid()
        {
            // 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 altRef = new Node.Input {
                Source = sourceNode.Outputs[2]
            };

            DVM.NodeModel.Inputs.Add(altRef);

            DVM.Reference = DVM.Videos.ElementAt(0);
            // No video chosen.
            Assert.False(DVM.CanAddGraph);
        }
예제 #9
0
        public void ShowOnlyAvailableTypes()
        {
            // Set the GraphTypes
            IoC.GetAllInstances = type => new IGraphType[] { new PixelDiff(), new DecisionDiff(), new IntraBlockFrequency(), new PeakSignalNoiseRatio() };

            // 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.ChosenVideo = DVM.Videos.ElementAt(1);
            DVM.AddGraph();
            var dgvmNoRefNoLog = DVM.Graphs.Last();

            Assert.False(dgvmNoRefNoLog.AvailableTypes.ToList().Exists(type => type.Model.DependsOnReference || type.Model.DependsOnLogfile));

            sourceNode.SettableOutputHasLogfile = true;
            DVM.ChosenVideo = DVM.Videos.ElementAt(2);
            DVM.AddGraph();
            Assert.NotNull(DVM.Graphs);
            var dgvmLogNoRef = DVM.Graphs.Last();

            Assert.False(dgvmLogNoRef.AvailableTypes.ToList().Exists(type => type.Model.DependsOnReference));
            Assert.True(dgvmLogNoRef.AvailableTypes.ToList().Exists(type => type.Model.DependsOnLogfile));
            sourceNode.SettableOutputHasLogfile = false;

            DVM.Reference   = DVM.Videos.ElementAt(0);
            DVM.ChosenVideo = DVM.Videos.ElementAt(1);
            DVM.AddGraph();
            var dgvmLoggedRefNoLog = DVM.Graphs.Last();

            Assert.True(dgvmLoggedRefNoLog.AvailableTypes.ToList().Exists(type => type.Model.DependsOnReference));
            Assert.False(dgvmLoggedRefNoLog.AvailableTypes.ToList().Exists(type => type.Model.DependsOnLogfile));

            sourceNode.SettableOutputHasLogfile = true;
            DVM.ChosenVideo = DVM.Videos.ElementAt(2);
            DVM.AddGraph();
            var dgvmLoggedRefLog = DVM.Graphs.Last();

            Assert.True(dgvmLoggedRefLog.AvailableTypes.ToList().Exists(type => type.Model.DependsOnReference));
            Assert.True(dgvmLoggedRefLog.AvailableTypes.ToList().Exists(type => type.Model.DependsOnLogfile));
            Assert.True(dgvmLoggedRefLog.AvailableTypes.ToList().Exists(type => type.Model.DependsOnAnnotatedReference));
        }