Exemplo n.º 1
0
        public node logic_operation(LogicOperationBlock block)
        {
            // Operations 'and', 'or'.
            var @operator = (block.getFieldValue("OP") == "AND") ? "&&" : "||";
            var argument0 = valueToCode(block, "A");
            var argument1 = valueToCode(block, "B");

            if (argument0 == null && argument1 == null)
            {
                // If there are no arguments, then the return value is false.
                argument0 = new false_node(this);
                argument1 = new false_node(this);
            }
            else
            {
                // Single missing arguments have no effect on the return value.
                var defaultArgument = (@operator == "&&") ? (node) new true_node(this) : (node) new false_node(this);
                if (argument0 == null)
                {
                    argument0 = defaultArgument;
                }
                if (argument1 == null)
                {
                    argument1 = defaultArgument;
                }
            }
            if (@operator == "&&")
            {
                return(new and_node(this, argument0, argument1));
            }
            else
            {
                return(new or_node(this, argument0, argument1));
            }
        }
Exemplo n.º 2
0
        public void AaTeste11()
        {
            var signal1 = new ImportFromTextBlock {
                Text = "0, 15, -1, 1, 0, -15, 1,"
            };
            var signal2 = new ImportFromTextBlock {
                Text = "0, -1, 11, 0, 1, 0, 1"
            };

            var block = new LogicOperationBlock
            {
                Operation = WaveMath.LogicalOperationEnum.And
            };

            signal1.ConnectTo(block);
            signal2.ConnectTo(block);
            signal1.Execute();
            signal2.Execute();

            Console.WriteLine(block.Output[0].ToString(0));
            //Console Output: 0 1 1 0 0 0 1
        }
Exemplo n.º 3
0
        public void TestSampleBasedOperationBlockExecute()
        {
            System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo("en-US");
            var signalBlock1 = new GenerateSignalBlock {
                TemplateName = "Binary", Start = 0, Finish = 5, SamplingRate = 1, IgnoreLastSample = true
            };
            var signalBlock2 = new GenerateSignalBlock {
                TemplateName = "Binary", Start = 0, Finish = 5, SamplingRate = 1, IgnoreLastSample = true
            };
            var block = new LogicOperationBlock {
                Operation = WaveMath.LogicalOperationEnum.Or
            };

            block.Execute();

            signalBlock1.OutputNodes[0].ConnectTo(block.InputNodes[0]);
            signalBlock2.OutputNodes[0].ConnectTo(block.InputNodes[1]);
            Assert.IsNotNull(block.Name);
            Assert.IsNotNull(block.Description);
            Assert.IsNotNull(block.ProcessingType);
            Assert.AreEqual("Or", block.GetAssemblyClassName());

            signalBlock1.Execute();
            signalBlock2.Execute();
            Assert.AreEqual("0 1 0 1 0", block.OutputNodes[0].Object.ToString(0));

            var block2 = (LogicOperationBlock)block.Clone();

            block2.Operation = WaveMath.LogicalOperationEnum.NotOr;
            block.OutputNodes[0].ConnectTo(block2.InputNodes[0]);
            signalBlock2.OutputNodes[0].ConnectTo(block2.InputNodes[1]);
            signalBlock1.Execute();
            signalBlock2.Execute();
            Assert.AreEqual("1 0 1 0 1", block2.OutputNodes[0].Object[0].ToString(0));

            block.Cascade = false;
            block2        = (LogicOperationBlock)block.Clone();
            block.OutputNodes[0].ConnectTo(block2.InputNodes[0]);
            signalBlock1.Execute();
            Assert.AreEqual(0, block2.OutputNodes[0].Object.Count);
            Assert.AreEqual("", block2.OutputNodes[0].Object.ToString(0));

            signalBlock1 = new GenerateSignalBlock {
                TemplateName = "Binary", Start = 0, Finish = 3, SamplingRate = 1, IgnoreLastSample = true
            };
            signalBlock2 = new GenerateSignalBlock {
                TemplateName = "Binary", Start = 0, Finish = 5, SamplingRate = 1, IgnoreLastSample = true
            };
            signalBlock1.OutputNodes[0].ConnectTo(block.InputNodes[0]);
            signalBlock2.OutputNodes[0].ConnectTo(block.InputNodes[1]);
            signalBlock1.Execute();
            signalBlock2.Execute();
            signalBlock2.OutputNodes[0].Object.Add(new Signal(new double[] { 1, 2, 3, 4 }));
            block.Execute();
            Assert.AreEqual("0 1 0 0 0", block.OutputNodes[0].Object[0].ToString(0));
            Assert.AreEqual("1 1 1 0", block.OutputNodes[0].Object[1].ToString(0));

            signalBlock2.OutputNodes[0].Object.Clear();
            block.Execute();
            Assert.AreEqual(1, block.OutputNodes[0].Object.Count);
            Assert.AreEqual("0 1 0", block.OutputNodes[0].Object[0].ToString(0));
        }