Esempio n. 1
0
        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]);
        }
Esempio n. 2
0
        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]);
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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();
            }
        }