Beispiel #1
0
        public void TestCurrentDirectory()
        {
            var block = new ConvolutionBlock();

            Assert.AreEqual(Utils.AssemblyDirectory, block.CurrentDirectory);

            block.CurrentDirectory = "xxx";
            Assert.AreEqual("xxx", block.CurrentDirectory);
        }
Beispiel #2
0
        public void TestGetName()
        {
            var block = new ConvolutionBlock();

            Assert.AreEqual(block.Name, BlockBase.GetName(block.GetType()));
            Assert.AreEqual("ConvolutionBlock", block.GetAssemblyClassName());

            Assert.AreEqual("", BlockBase.GetName(typeof(Object)));
            Assert.AreEqual("", BlockBase.GetName(typeof(BlockBase)));
            Assert.AreEqual(true, block.HasParameters());

            var block2 = new InvertBlock();

            Assert.AreEqual(false, block2.HasParameters());
        }
Beispiel #3
0
        public void TestNodesConnection()
        {
            BlockBase root1 = new ConvolutionBlock();
            BlockBase root2 = new ConvolutionBlock();
            var       in1   = new BlockInputNode();
            var       out1  = new BlockOutputNode();

            Assert.IsNull(in1.ConnectingNode);
            Assert.IsNull(in1.Root);
            Assert.IsNull(out1.ConnectingNode);
            Assert.IsNull(out1.Root);
            Assert.IsNull(out1.Object);

            out1 = new BlockOutputNode(ref root1, "Out1", "O");
            in1  = new BlockInputNode(ref root2, "In1", "I");
            in1.ConnectTo(out1);
            Assert.AreSame(out1.ConnectingNode, in1);
            Assert.AreSame(in1.ConnectingNode, out1);

            out1.ConnectingNode = null;
            in1.ConnectingNode  = null;
            in1.ConnectTo(ref out1);
            Assert.AreSame(out1.ConnectingNode, in1);
            Assert.AreSame(in1.ConnectingNode, out1);

            out1.ConnectingNode = null;
            in1.ConnectingNode  = null;
            out1.ConnectTo(in1);
            Assert.AreSame(out1.ConnectingNode, in1);
            Assert.AreSame(in1.ConnectingNode, out1);

            out1.ConnectingNode = null;
            in1.ConnectingNode  = null;
            out1.ConnectTo(ref in1);
            Assert.AreSame(out1.ConnectingNode, in1);
            Assert.AreSame(in1.ConnectingNode, out1);

            out1.ConnectingNode = null;
            in1.ConnectingNode  = null;
            BlockNodeBase outBase = out1;
            BlockNodeBase inBase  = in1;

            outBase.ConnectTo(ref inBase);
            Assert.AreSame(out1.ConnectingNode, in1);
            Assert.AreSame(in1.ConnectingNode, out1);
        }
Beispiel #4
0
        public void TestBlockList()
        {
            var signalBlock1 = new GenerateSignalBlock {
                Cascade = false, Offset = 1, TemplateName = "Binary", Start = 0, Finish = 3, SamplingRate = 1
            };
            var signalBlock2 = new GenerateSignalBlock {
                Cascade = false, Offset = 2, TemplateName = "Binary", Start = 0, Finish = 3, SamplingRate = 1
            };
            var signalBlock3 = new GenerateSignalBlock {
                Offset = 3, TemplateName = "Binary", Start = 0, Finish = 3, SamplingRate = 1
            };
            var convolutionBlock1 = new ConvolutionBlock();
            var convolutionBlock2 = new ConvolutionBlock();
            var blockList         = new BlockList {
                signalBlock1, signalBlock2, signalBlock3, convolutionBlock1, convolutionBlock2
            };

            signalBlock1.ConnectTo(convolutionBlock1);
            signalBlock2.ConnectTo(convolutionBlock1);
            convolutionBlock1.ConnectTo(convolutionBlock2);
            signalBlock2.ConnectTo(convolutionBlock2);
            blockList.ExecuteAll();

            Assert.AreEqual("4 20 45 78 111 114 103 74 33 18", convolutionBlock2.OutputNodes[0].Object.ToString(0));

            convolutionBlock1 = new ConvolutionBlock();
            convolutionBlock1.InputNodes.Clear();
            signalBlock1.ConnectTo(convolutionBlock1);
            signalBlock1.Execute();
            Assert.AreEqual(0, convolutionBlock1.OutputNodes[0].Object.Count);

            convolutionBlock1 = new ConvolutionBlock();
            signalBlock1      = new GenerateSignalBlock();
            signalBlock2.OutputNodes.Clear();
            signalBlock2.ConnectTo(convolutionBlock1);
            signalBlock1.ConnectTo(convolutionBlock1);
            signalBlock1.Execute();
            Assert.AreEqual(0, convolutionBlock1.OutputNodes[0].Object.Count);
        }
        public void TestConvolutionBlockExecute()
        {
            var signalBlock1 = new GenerateSignalBlock {
                Offset = 1.2, TemplateName = "Binary", Start = 0, Finish = 5, SamplingRate = 1, IgnoreLastSample = true
            };
            var signalBlock2 = new GenerateSignalBlock {
                Offset = 2.3, TemplateName = "Binary", Start = 0, Finish = 5, SamplingRate = 1, IgnoreLastSample = true
            };
            var convolutionBlock = new ConvolutionBlock {
                ReturnOnlyValid = true
            };

            convolutionBlock.Execute();

            signalBlock1.OutputNodes[0].ConnectTo(convolutionBlock.InputNodes[0]);
            signalBlock2.OutputNodes[0].ConnectTo(convolutionBlock.InputNodes[1]);
            Assert.IsNotNull(convolutionBlock.Name);
            Assert.IsNotNull(convolutionBlock.Description);
            Assert.IsNotNull(convolutionBlock.ProcessingType);

            signalBlock1.Execute();
            Assert.AreEqual("1.2 2.2 1.2 2.2 1.2", convolutionBlock.Output[0].ToString(1));

            signalBlock2.Execute();
            Assert.IsNotNull(convolutionBlock.OutputNodes[0].Object);
            Assert.AreEqual("22.80", convolutionBlock.Output[0].ToString(2));

            convolutionBlock.ReturnOnlyValid = false;
            signalBlock1.Execute();
            Assert.AreEqual("2.76 9.02 12.78 18.04 22.80 18.04 12.78 9.02 2.76", convolutionBlock.Output[0].ToString(2));

            var convolutionBlock2 = (ConvolutionBlock)convolutionBlock.Clone();

            convolutionBlock.OutputNodes[0].ConnectTo(convolutionBlock2.InputNodes[0]);
            signalBlock2.OutputNodes[0].ConnectTo(convolutionBlock2.InputNodes[1]);
            signalBlock2.Execute();
            Assert.AreEqual("6.348 29.854 65.508 113.520 177.480 221.144 230.292 221.144 177.480 113.520 65.508 29.854 6.348",
                            convolutionBlock2.Output[0].ToString(3));

            signalBlock1.OutputNodes[0].Object.Add(new Signal(new double[] { 1, 2, 3, 4 }));
            convolutionBlock.Execute();
            Assert.AreEqual("2.300 7.900 15.800 27.000 29.000 23.700 20.100 0.000", convolutionBlock.Output[0, 1].ToString(3));

            convolutionBlock2        = (ConvolutionBlock)convolutionBlock.Clone();
            convolutionBlock.Cascade = false;
            convolutionBlock.OutputNodes[0].ConnectTo(convolutionBlock2.InputNodes[0]);
            convolutionBlock.Execute();
            Assert.AreEqual(0, convolutionBlock2.OutputNodes[0].Object.Count);

            convolutionBlock.Cascade = true;
            convolutionBlock.OutputNodes[0].ConnectTo(convolutionBlock2.InputNodes[0]);
            signalBlock2.OutputNodes[0].ConnectTo(convolutionBlock2.InputNodes[1]);
            convolutionBlock.Execute();
            Assert.IsNotNull(convolutionBlock2.OutputNodes[0].Object);

            convolutionBlock.Cascade = true;
            convolutionBlock2.OutputNodes[0].Object        = null;
            convolutionBlock.OutputNodes[0].ConnectingNode = null;
            signalBlock2.OutputNodes[0].ConnectingNode     = null;
            convolutionBlock.Execute();
            Assert.IsNull(convolutionBlock2.OutputNodes[0].Object);
        }