private void StartGUI(StarterConfig config, out StarterConfigView outForm) { WaitForEngine(config); var isRunning = false; StarterConfigView form = null; guiThread = new Thread(() => { Thread.CurrentThread.Name = "GUIThread"; execute = Execute.Create(); form = new StarterConfigView(execute, config); AutoModelBinder.Bind(config, form, execute); Application.Idle += execute.MessageLoop; form.Visible = false; isRunning = true; Application.Run(); }); guiThread.Start(); config.WaitComplete(30, () => { return(isRunning); }); outForm = form; }
public void TestGUIIteration() { var appData = Factory.Settings["PriceDataFolder"]; File.Delete(appData + @"\ServerCache\IBM.tck"); var config = new StarterConfig(); StarterConfigView form = null; StartGUI(config, out form); try { config.WaitComplete(2); config.SymbolList = "IBM"; StrategyBaseTest.CleanupFiles(config.SymbolList, null); config.DefaultPeriod = 10; config.DefaultBarUnit = BarUnit.Second.ToString(); config.ModelLoader = "Example: Breakout Reversal"; config.StarterName = "Realtime Operation (Demo or Live)"; config.Start(); config.WaitComplete(30, () => { return(form.PortfolioDocs.Count > 0); }); Assert.Greater(form.PortfolioDocs.Count, 0); var chart = form.PortfolioDocs[0].ChartControl; config.WaitComplete(30, () => { return(chart.IsDrawn); }); var pane = chart.DataGraph.MasterPane.PaneList[0]; Assert.IsNotNull(pane.CurveList); config.WaitComplete(30, () => { return(pane.CurveList.Count > 0); }); Assert.Greater(pane.CurveList.Count, 0); var chartBars = (OHLCBarItem)pane.CurveList[0]; config.WaitComplete(60, () => { return(chartBars.NPts >= 3); }); Assert.GreaterOrEqual(chartBars.NPts, 3); config.Stop(); config.WaitComplete(30, () => { return(!config.CommandWorker.IsBusy); }); Assert.IsFalse(config.CommandWorker.IsBusy, "ProcessWorker.Busy"); } catch (Exception ex) { log.Error("Test failed with error: " + ex.Message, ex); Environment.Exit(1); } finally { execute.Exit(); guiThread.Join(); } }