public void TestArrayCoreDump03() // Test array truncation size being an odd number. { string sourceCode = @" class A { c : int = 0; constructor B(v : int) { c = v; } } under = A.B(1..6..1); match = A.B(1..7..1); over = A.B(1..8..1); " ; ExecutionMirror mirror = coreRunner.Execute(sourceCode, core, out runtimeCore); List <string> globalVariables = null; mirror.GetCoreDump(out globalVariables, 7, 4); Assert.AreEqual(3, globalVariables.Count); Assert.AreEqual("under = { A(c = 1), A(c = 2), A(c = 3), A(c = 4), A(c = 5), A(c = 6) }", globalVariables[0]); Assert.AreEqual("match = { A(c = 1), A(c = 2), A(c = 3), A(c = 4), A(c = 5), A(c = 6), A(c = 7) }", globalVariables[1]); Assert.AreEqual("over = { A(c = 1), A(c = 2), A(c = 3), ..., A(c = 6), A(c = 7), A(c = 8) }", globalVariables[2]); }
public void TestRecursiveCoreDump() { string sourceCode = @" class A { x; } a = A.A(); x = a.x; a.x = a;" ; ExecutionMirror mirror = coreRunner.Execute(sourceCode, core, out runtimeCore); List <string> globalVariables = null; mirror.GetCoreDump(out globalVariables, 7, 4); // Fix: http://adsk-oss.myjetbrains.com/youtrack/issue/IDE-398 Assert.AreEqual(2, globalVariables.Count); Assert.AreEqual("a = A(x = A(x = A(x = ...)))", globalVariables[0]); Assert.AreEqual("x = A(x = A(x = A(x = ...)))", globalVariables[1]); }
public void TestArrayCoreDump01() { string sourceCode = @" class A { c : int = 0; constructor B(v : int) { c = v; } } values = A.B(1..20..1);" ; ExecutionMirror mirror = coreRunner.Execute(sourceCode, core, out runtimeCore); List <string> globalVariables = null; mirror.GetCoreDump(out globalVariables, 7, 4); Assert.AreEqual(1, globalVariables.Count); Assert.AreEqual("values = { A(c = 1), A(c = 2), A(c = 3), ..., A(c = 18), A(c = 19), A(c = 20) }", globalVariables[0]); }
private void DisplayCoreDump(ExecutionMirror executionMirror, IOutputStream outputStream) { if (null == executionMirror) { return; // This can be "null" if there's compilation errors. } ITextEditorSettings editorSettings = TextEditorCore.Instance.TextEditorSettings; if (false == editorSettings.DisplayOutput) { return; // The output display has been disabled, don't display. } try { List <string> variableList = null; executionMirror.GetCoreDump(out variableList, editorSettings.MaxArrayDisplaySize, editorSettings.MaxOutputDepth); if (null != variableList) { foreach (string variable in variableList) { outputStream.Write(new ProtoCore.OutputMessage( OutputMessage.MessageType.Info, variable)); Logger.LogPerf("CoreDump-ExecSession", variable); } } } catch (System.Exception ex) { outputStream.Write(new ProtoCore.OutputMessage(OutputMessage.MessageType.Error, ex.Message)); Logger.LogPerf("CoreDumpEx", ex.Message); } }
public bool RunScript(string dsPath) { if (string.IsNullOrEmpty(GeometryFactoryName)) { throw new Exception("GeometryFactory not set!"); } if (string.IsNullOrEmpty(PersistenceManagerName)) { throw new Exception("PersistenceManager not set!"); } if (!File.Exists(dsPath)) { throw new FileNotFoundException(dsPath + " Does not exist"); } bool success = false; System.IO.StringWriter stringStream = new StringWriter(); executionLog = new StringBuilder(); ProtoCore.Core core = null; ProtoCore.RuntimeCore runtimeCore = null; try { var options = new ProtoCore.Options(); string assemblyLocation = System.Reflection.Assembly.GetExecutingAssembly().Location; string incDir = Path.GetDirectoryName(assemblyLocation); options.IncludeDirectories.Add(incDir); core = new ProtoCore.Core(options); core.BuildStatus.SetStream(stringStream); core.Options.RootModulePathName = ProtoCore.Utils.FileUtils.GetFullPathName(dsPath); core.Compilers.Add(ProtoCore.Language.kAssociative, new ProtoAssociative.Compiler(core)); core.Compilers.Add(ProtoCore.Language.kImperative, new ProtoImperative.Compiler(core)); core.Configurations.Add(Autodesk.DesignScript.Interfaces.ConfigurationKeys.GeometryFactory, GeometryFactoryName); core.Configurations.Add(Autodesk.DesignScript.Interfaces.ConfigurationKeys.PersistentManager, PersistenceManagerName); ProtoScript.Runners.ProtoScriptTestRunner fsr = new ProtoScript.Runners.ProtoScriptTestRunner(); ExecutionMirror mirror = fsr.LoadAndExecute(dsPath, core, out runtimeCore); executionLog.AppendLine("Script executed successfully."); executionLog.AppendLine(); executionLog.AppendLine("=================================CoreDump================================="); string coreDump = null; try { coreDump = mirror.GetCoreDump(); executionLog.AppendLine(); executionLog.AppendLine(coreDump); success = true; } catch (System.Exception ex) { executionLog.AppendLine(ex.Message); executionLog.AppendLine(ex.StackTrace); success = false; } finally { executionLog.AppendLine("=================================CoreDump================================="); } } catch (System.Exception ex) { success = false; executionLog.AppendLine("Fail to execute script."); executionLog.AppendLine("Exceptions:"); executionLog.AppendLine(ex.Message); executionLog.AppendLine("StackTrace:"); executionLog.AppendLine(ex.StackTrace); } finally { if (core != null) { core.BuildStatus.SetStream(null); runtimeCore.Cleanup(); } } return(success); }
public static void Main(string[] args) { System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); var opts = new Options(); if (args.Length == 0) { opts.WebRunner = false; } else { opts.WebRunner = true; } opts.ExecutionMode = ExecutionMode.Serial; ProtoCore.Core core = new Core(opts); core.Executives.Add(ProtoCore.Language.kAssociative, new ProtoAssociative.Executive(core)); core.Executives.Add(ProtoCore.Language.kImperative, new ProtoImperative.Executive(core)); if (!opts.WebRunner) { ProtoScriptTestRunner runner = new ProtoScriptTestRunner(); DLLFFIHandler.Register(FFILanguage.CSharp, new CSModuleHelper()); ExecutionMirror mirror = runner.LoadAndExecute(@"..\..\..\Scripts\defectverify.ds", core); string str = mirror.GetCoreDump(); //Console.WriteLine(str); } else //if (arg) { // @TODO(Gemeng): Do set "core.ExecutionLog" to some file :) ProtoScriptWebRunner runner = new ProtoScriptWebRunner(); DLLFFIHandler.Register(FFILanguage.CSharp, new CSModuleHelper()); ExecutionMirror mirror = runner.LoadAndExecute(args[0], core); if (null != mirror) { string str = mirror.GetCoreDump(); // core.coreDumpWriter.WriteLine(str); } // @TODO(Gemeng): 'coreDumpWriter' has been removed, instead of // doing that we should create an output file stream here with a // file name, and then write the "str" content into it. // // core.coreDumpWriter.Close(); } //runner.LoadAndExecute(@"..\..\..\Scripts\array.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\arrayargs.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\class.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\class2.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\class3.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\class4.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\class5.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\class6.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\class7.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\class8.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\class9.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\class10.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\demo.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\expr.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\fusionarray.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\replication.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\simple.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\simple2.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\functionoverload.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\classfunctionoverload.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\inheritance.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\inheritance2.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\update.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\null.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\forloop.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\blockassign_imperative.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\blockassign_associative.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\test.ds", core); //runner.LoadAndExecute(@"..\..\..\Scripts\importtest.ds", core); //ExecutionMirror mirror = null; //string str = mirror.GetCoreDump(); long ms = sw.ElapsedMilliseconds; sw.Stop(); if (!opts.WebRunner) { Console.WriteLine(ms); Console.ReadLine(); } }