public void Validate_Ok()
        {
            var target = new NetBuilder();

            target.AddNode <string>("node", b => b
                                    .ReadInput()
                                    .Handle(s => { }));
            var    net = target.BuildNet();
            Action act = () => net.Validate();

            act.ShouldNotThrow <NetValidationException>();
        }
示例#2
0
        public void Handle_Stateful()
        {
            var handler    = new TestHandler();
            var builder    = new NetBuilder();
            var resetEvent = new ManualResetEvent(false);

            builder.AddNode <int>("handler", b => b
                                  .ReadInput()
                                  .Handle(handler));
            builder.AddNode <int>("set", b => b
                                  .ReadOutputFrom("handler")
                                  .Handle(i => resetEvent.Set()));

            var target = builder.BuildNet();

            target.Inject(1);
            resetEvent.WaitOne(1000).Should().BeTrue();
            handler.Value.Should().Be(1);
        }
示例#3
0
        /// <summary>
        /// Activate the object that is being hovered over in the polygon wheel
        /// This involves running storyboards for the newly deactivated object as well as the newly activated one
        /// It also involves updating the information displayed to reflect the new polyhedron
        /// Finally a graph corresponding to the new polyhedron is loaded and an animation frame is triggered
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        private bool activateObject(FrameworkElement obj)
        {
            if (!this.triggerStoryboard(obj, "MouseEnter"))
            {
                return(false);
            }

            if (this._activeObject != null)
            {
                this.triggerStoryboard(this._activeObject, "MouseLeave");
            }
            this._activeObject = obj;
            Graph graph = new Graph(this.CurrentPolyhedronId);

            _net = NetBuilder.Build(graph);
            this.updateInfo();
            this.animationTimer.Begin();
            return(true);
        }
示例#4
0
        public void Pipeline_OnDedicatedThreads()
        {
            int receivedMessages = 0;
            var outputs          = new HashSet <string>();
            var builder          = new NetBuilder();

            builder.AddNode <string>("add thread id", b => b
                                     .ReadInput()
                                     .Transform(s => s + Thread.CurrentThread.ManagedThreadId)
                                     .OnDedicatedThreads(4));

            builder.AddNode <string>("output", b => b
                                     .ReadOutputFrom("add thread id")
                                     .Handle(s =>
            {
                receivedMessages++;
                if (!outputs.Contains(s))
                {
                    outputs.Add(s);
                }
            })
                                     .OnDedicatedThread());

            var target = builder.BuildNet();

            target.Inject("thread:");
            target.Inject("thread:");
            target.Inject("thread:");
            target.Inject("thread:");
            target.Inject("thread:");
            target.Inject("thread:");
            target.Inject("thread:");
            target.Inject("thread:");
            target.Inject("thread:");
            target.Inject("thread:");

            Thread.Sleep(1000);

            receivedMessages.Should().Be(10);
            outputs.Count.Should().BeGreaterThan(1);
        }
示例#5
0
        public void Handle_Errors_Simple()
        {
            string output     = "";
            var    builder    = new NetBuilder();
            var    resetEvent = new ManualResetEvent(false);

            builder.AddNode <string>("throws", b => b
                                     .ReadInput()
                                     .Handle(s => throw new Exception("throws")));
            builder.AddErrorNode <string>("save", b => b
                                          .ReadOutputFrom("throws")
                                          .Handle(s =>
            {
                output = "caught error " + s.Error.Message;
                resetEvent.Set();
            }));

            var target = builder.BuildNet();

            target.Inject("test");
            resetEvent.WaitOne(1000).Should().BeTrue();
            output.Should().Be("caught error throws");
        }
示例#6
0
        public void Handle_Pipeline_Simple()
        {
            string output     = "";
            var    builder    = new NetBuilder();
            var    resetEvent = new ManualResetEvent(false);

            builder.AddNode <string>("capitalize", b => b
                                     .ReadInput()
                                     .Handle(s => output += s.ToUpperInvariant()));
            builder.AddNode <string>("exclaim", b => b
                                     .ReadOutputFrom("capitalize")
                                     .Handle(s =>
            {
                output += s + "!!!";
                resetEvent.Set();
            }));

            var target = builder.BuildNet();

            target.Inject("test");
            resetEvent.WaitOne(1000).Should().BeTrue();
            output.Should().Be("TESTtest!!!");
        }
示例#7
0
        void SimMain_Load(object sender, EventArgs e)
        {
            netbuilder = new NetBuilder();
            SplitMain.Panel1.Controls.Add(netbuilder);
            //netbuilder.FormBorderStyle = FormBorderStyle.
            netbuilder.Visible = true;
            //netbuilder.Dock = DockStyle.Fill;
            //netbuilder.AutoScaleMode= AutoScaleMode.f
            ////SplitterPanel
            //InitializeHelperObjects();

            //drawArea.Initialize(this, docManager);
            //ResizeDrawArea();

            //removed by sapperjiang
            //    LoadSettingsFromRegistry();

            //         // Submit to Idle event to set controls state at idle time
            //         Application.Idle += delegate (object o, EventArgs a)
            //         {
            //             SetStateOfControls();
            //         };

            //// Open file passed in the command line
            //if (ArgumentFile.Length > 0)
            //	OpenDocument(ArgumentFile);

            //// Subscribe to DropDownOpened event for each popup menu
            //// (see details in MainForm_DropDownOpened)
            //foreach (ToolStripItem item in this.toolStrip.Items)
            //{
            //	if (item.GetType() == typeof(ToolStripMenuItem))
            //	{
            //		((ToolStripMenuItem)item).DropDownOpened += MainForm_DropDownOpened;
            //	}
            //}
        }
示例#8
0
        static void Calc(string[] userinput, double averageLinkCount)
        {
            string      netType    = Properties.Settings.Default.NetType;
            INetCreator Netcreator = null;
            IProcessor  processor;

            var path = Directory.GetCurrentDirectory() + @"\Results\";

            Directory.CreateDirectory(path);
            CalculationTask calculationTask;

            #region Select CalculationTask

            ComaSepareteFileWriter writer = null;
            switch (userinput[0])
            {
            case "4":
            {
                calculationTask = new CalculationTask(0, Nodecount, netType, Minlink, Addtomaxlinkcount, MaxVirus, PofInfective, Granica, Segmentcont, Adressdiffstrategy, Virussendstrategy, Isappend, Isadresdiff,
                                                      Iterationcount, path, percentbackupchannel);
                processor = new TrueProcessor();
                break;
            }

            case "TrueReferenceProcessor":
            {
                calculationTask = new CalculationTask(0, Nodecount, netType, Minlink, (int)averageLinkCount, MaxVirus, PofInfective, Granica, Segmentcont, Adressdiffstrategy, Virussendstrategy, Isappend, Isadresdiff,
                                                      Iterationcount, path, percentbackupchannel);
                processor = new TrueReferenceProcessor();
                break;
            }

            case "ReferenceProcessor":
            {
                calculationTask = CalculationTaskCreator.CreateForReferencesCalculator(path, Iterationcount, netType);
                var weight = FileNetLoad.ReadWeight(userinput[3], Properties.Settings.Default.DefaultConnectionWeight);

                var st = userinput[3];
                for (int i = 4; i < userinput.Length; i++)
                {
                    weight = FileNetLoad.MultiplyWeight(weight, FileNetLoad.ReadWeight(userinput[i], Properties.Settings.Default.DefaultConnectionWeight));
                    st    += "-" + userinput[i];
                }
                processor = new ReferencesProcessor(weight);
                writer    = new ComaSepareteFileWriter(Path.Combine(path, st + "_" + Properties.Settings.Default.DefaultConnectionWeight));
                break;
            }

            default:
            {
                Console.WriteLine(@"Input is not correct");
                return;
            }
            }
            #endregion
            #region Select NetBuilder
            switch (userinput[1])
            {
            case "NetBuilder":
            {
                Netcreator = new NetBuilder(calculationTask);
                break;
            }

            case "HoleNetCreator":
            {
                Netcreator = new HoleNetCreator(new NetBuilder(calculationTask), averageLinkCount);
                break;
            }

            case "FileNetLoad":
            {
                Netcreator = new FileNetLoad(userinput[2]);
                break;
            }

            default:
            {
                Console.WriteLine(@"Input is not correct");
                return;
            }
            }
            #endregion

            if (writer == null)
            {
                writer =
                    new ComaSepareteFileWriter(Path.Combine(path, calculationTask.NetType + "_" + averageLinkCount.ToString("0.00")));
            }
            var d = new SimpleKernel(processor, calculationTask, Netcreator, writer, Experementcount);
        }