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>(); }
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); }
/// <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); }
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); }
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"); }
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!!!"); }
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; // } //} }
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); }