Esempio n. 1
0
        public static Object CallTestFunction(
			String script,
			Action<EtcScriptLib.Environment> AdditionalSetup = null)
        {
            EtcScriptLib.Compile.Debug = true;
            EtcScriptLib.Compile._DebugWrite = Console.Write;

            Console.WriteLine("Test script: " + script);
            var environment = new EtcScriptLib.Environment();
            environment.AddSystemMacro("fail", (c, a) => { Assert.IsTrue(false); return null; });
            if (AdditionalSetup != null) AdditionalSetup(environment);
            var testFunctions = environment.Build(script, s => { Console.WriteLine(s); return EtcScriptLib.ErrorStrategy.Abort; });
            Assert.IsTrue(testFunctions.Count > 0);
            var context = environment.CreateExecutionContext(EtcScriptLib.VirtualMachine.ExecutionLocation.Empty);
            var func = testFunctions[0].MakeInvokableFunction();
            var argList = new List<Object>();
            argList.Add(func);
            func.Invoke(context, argList);
            EtcScriptLib.VirtualMachine.VirtualMachine.ExecuteUntilFinished(context);
            if (context.ExecutionState == EtcScriptLib.VirtualMachine.ExecutionState.Error)
            {
                Console.WriteLine("Error:" + context.ErrorObject.ToString());
                Assert.IsTrue(false);
            }

            if (context.R == null) Console.WriteLine("NULL");
            else Console.WriteLine(context.R.ToString());
            return context.R;
        }
Esempio n. 2
0
        public static void CompileTestAssertNoErrors(String script)
        {
            EtcScriptLib.Compile.Debug = true;
            EtcScriptLib.Compile._DebugWrite = Console.Write;

            var environment = new EtcScriptLib.Environment();
            Console.WriteLine("Test script: " + script);
            bool wasError = false;
            environment.Build(script,
                (s) => { Console.WriteLine(s); wasError = true; return EtcScriptLib.ErrorStrategy.Continue; });
            Assert.False(wasError);
        }
Esempio n. 3
0
        public static void throws_error(String script)
        {
            bool errorCaught = false;

            Console.WriteLine("Script: " + script);
            var environment = new EtcScriptLib.Environment();
            environment.Build(script, (s) =>
            {
                Console.WriteLine("Error: " + s);
                errorCaught = true;
                return EtcScriptLib.ErrorStrategy.Abort;
            });

            if (!errorCaught)
            {
                Console.WriteLine("No errors.");
                Assert.Fail();
            }
        }
Esempio n. 4
0
        private void hOSTToolStripMenuItem_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
            var hadError = false;

            if (ExternalHost == null)
            {
                ScriptEnvironment = new EtcScriptLib.Environment();
                ScriptEnvironment.Build(scintilla1.Text, (error) =>
                {
                    textBox1.Text += error + "\r\n";
                    hadError = true;
                    return EtcScriptLib.ErrorStrategy.Abort;
                });
            }
            else
            {
                if (HostForm != null)
                {
                    HostForm.Dispose();
                    HostForm = null;
                }

                if (CurrentFile.UnsavedNewFile) sAVEASToolStripMenuItem_Click(null, null);
                if (CurrentFile.Changes) sAVEToolStripMenuItem_Click(null, null);

                var hostControl = ExternalHost.Host(ExternalHostFilename, CurrentFile.Filename, (error) =>
                {
                    if (textBox1.InvokeRequired) textBox1.Invoke(
                        new Action(() => { textBox1.Text += error + "\r\n"; }));
                    else
                        textBox1.Text += error + "\r\n";

                    hadError = true;
                },
                    (environment) =>
                    {
                        ScriptEnvironment = environment;
                        if (hadError) this.Invoke(new Action(() => treeView1.Nodes.Clear()));
                        else this.Invoke(new Action(() => BuildCompileTree()));
                    });

                HostForm = new Form();
                hostControl.Dock = DockStyle.Fill;
                HostForm.Controls.Add(hostControl);
                HostForm.ClientSize = ExternalHost.PreferredSize();
                HostForm.Show();
            }
        }