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 void PrepareEnvironment()
        {
            ScriptEnvironment = new EtcScriptLib.Environment();

            ScriptEnvironment.AddSystemMacro("target main", (context, arguments) => { CurrentTarget = WriteTarget.Main; return null; });
            ScriptEnvironment.AddSystemMacro("target bottom", (context, arguments) => { CurrentTarget = WriteTarget.CommandList; return null; });
            ScriptEnvironment.AddSystemMacro("clear", (context, arguments) => { Clear(CurrentTarget); return null; });
            ScriptEnvironment.AddSystemMacro("write (s:string)", (context, arguments) => { Output(arguments[0].ToString(), CurrentTarget); return null; });
        }