public void DurabilityParseString() { var engine = new MonkeyspeakEngine(); // Set the trigger limit to int.MaxValue to prevent TriggerLimit reached exceptions engine.Options.TriggerLimit = int.MaxValue; var sb = new StringBuilder(); for (int i = 0; i < 1; i++) { sb.AppendLine(); sb.AppendLine("(0:0) when the script is started,"); sb.AppendLine("(5:100) set %hello to {Hello World}."); sb.AppendLine("(1:104) and variable %hello equals {this will be false move on to next condition}"); sb.AppendLine("(5:102) print {hello = %hello helloNum = % helloNum} to the console."); sb.AppendLine("(1:104) and variable %hello equals {Hello World}"); sb.AppendLine("(5:101) set %helloNum to 5."); sb.AppendLine("(5:102) print {hello = %hello helloNum = %helloNum} to the console."); sb.AppendLine(); } Logger.Info(sb.ToString()); Page page = engine.LoadFromString(sb.ToString()); page.LoadAllLibraries(); page.RemoveLibrary <Monkeyspeak.Libraries.Debug>(); var sb2 = new StringBuilder(); for (int i = 0; i < 5; i++) { sb.AppendLine(); sb.AppendLine("(0:0) when the script is started,"); sb.AppendLine("(5:100) set %hello to {Hello World}."); sb.AppendLine("(1:104) and variable %hello equals {this will be false move on to next condition}"); sb.AppendLine("(5:102) print {hello = %hello helloNum = % helloNum} to the console."); sb.AppendLine("(1:104) and variable %hello equals {Hello World}"); sb.AppendLine("(5:101) set %helloNum to 5."); sb.AppendLine("(5:102) print {hello = %hello helloNum = % helloNum} to the console."); sb.AppendLine(); } engine.LoadFromString(page, sb2.ToString()); page.Error += DebugAllErrors; page.AddTriggerHandler(TriggerCategory.Cause, 0, HandleScriptStartCause); Logger.Info($"Triggers: {page.Size}"); page.Execute(); }
public void NonExistantTimerTest() { var timerLibTestScript = @" (0:0) when the script starts, (5:300) create timer 13 to go off every 900 second(s) with a start delay of 0 second(s). (5:102) print {Timer 13 created} to the console. (0:300) when timer 2 goes off, (5:302) get current timer and put the id into variable %timerId. (5:304) get the current uptime and put it into variable %currentTime. (5:102) print {Timer %timerId at %currentTime secs} to the console. "; var engine = new MonkeyspeakEngine(); engine.Options.Debug = true; var page = engine.LoadFromString(timerLibTestScript); //page.Error += DebugAllErrors; page.LoadAllLibraries(); // page.RemoveLibrary<Monkeyspeak.Libraries.Debug>(); page.AddTriggerHandler(TriggerCategory.Cause, 0, HandleScriptStartCause); page.Execute(0); System.Threading.Thread.Sleep(100); page.Dispose(); }
public void Tables() { for (int i = 0; i < 1; i++) { var engine = new MonkeyspeakEngine(); engine.Options.Debug = false; Logger.Info(tableScript); Page page = engine.LoadFromString(tableScript); // replace with tableScriptMini to see results of that script page.Error += DebugAllErrors; page.AddTriggerHandler(TriggerCategory.Condition, 666, AlwaysFalseCond); page.LoadAllLibraries(); // page.RemoveLibrary<Monkeyspeak.Libraries.Debug>(); page.SetVariable("%testVariable", "Hello WOrld", true); page.AddTriggerHandler(TriggerCategory.Cause, 0, HandleScriptStartCause); // Trigger count created by subscribing to TriggerAdded event and putting triggers into a list. Console.WriteLine("Trigger Count: " + page.Size); Logger.Assert(page.Size > 0, "Page size was 0 = FAIL!"); page.Execute(); foreach (var variable in page.Scope) { Logger.Info($"{variable.ToString()} {variable.GetType().Name}"); } } }
public void TestReflectionLoader() { MonkeyspeakEngine engine = new MonkeyspeakEngine(); Page page = engine.LoadFromString(@" (0:1000) (5:1000) {Hello Reflection Test} (5:1001) {Hello Reflection Test 2} "); page.LoadLibraryFromAssembly(Assembly.GetExecutingAssembly().Location); page.Execute(1000); }
public void TestCompileToFile() { Logger.SingleThreaded = true; var engine = new MonkeyspeakEngine { Options = { TriggerLimit = int.MaxValue, Debug = false } }; var sb = new StringBuilder(testScript); /*for (int i = 0; i <= 50; i++) * { * sb.AppendLine(); * sb.AppendLine(testScript); * sb.AppendLine(); * }*/ Stopwatch watch = Stopwatch.StartNew(); var oldPage = engine.LoadFromString(sb.ToString()); oldPage.AddTriggerHandler(TriggerCategory.Cause, 0, UnitTest1.HandleScriptStartCause); watch.Stop(); Console.WriteLine($"Loaded in {watch.ElapsedMilliseconds} ms"); Console.WriteLine($"Page Trigger Count: {oldPage.Size}"); watch.Restart(); oldPage.CompileToFile(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "test.msx")); watch.Stop(); Console.WriteLine($"Compiled in {watch.ElapsedMilliseconds} ms"); watch.Restart(); var page = engine.LoadCompiledFile(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "test.msx")); //page.RemoveLibrary<MyLibrary>(); watch.Stop(); Console.WriteLine($"Loaded compiled in {watch.ElapsedMilliseconds} ms"); page.LoadAllLibraries(); page.RemoveLibrary <Monkeyspeak.Libraries.Debug>(); page.AddTriggerHandler(TriggerCategory.Cause, 0, UnitTest1.HandleScriptStartCause); Console.WriteLine("Page Trigger Count: " + page.Size); page.Execute(); page.Dispose(); oldPage.Dispose(); }
public void GetTriggerDescriptionsTest() { MonkeyspeakEngine engine = new MonkeyspeakEngine(); engine.Options.Debug = true; Page page = engine.LoadFromString(testScript); page.Error += DebugAllErrors; page.LoadAllLibraries(); page.RemoveLibrary <Monkeyspeak.Libraries.Debug>(); foreach (string desc in page.GetTriggerDescriptions()) { Console.WriteLine(desc); } }
public void DurabilityParseStringAsync() { var engine = new MonkeyspeakEngine(); // Set the trigger limit to int.MaxValue to prevent TriggerLimit reached exceptions engine.Options.TriggerLimit = int.MaxValue; var sb = new StringBuilder(); for (int i = 0; i < 10000; i++) { sb.AppendLine(); sb.Append("(5:100) set %hello to {Hello World}."); sb.AppendLine(); } Page page = engine.LoadFromString(sb.ToString()); page.LoadAllLibraries(); page.RemoveLibrary <Monkeyspeak.Libraries.Debug>(); var sb2 = new StringBuilder(); for (int i = 0; i < 50000; i++) { sb2.AppendLine(); sb2.Append("(5:100) set %hello to {Hello World}."); sb2.AppendLine(); } var tasks = new Task[5]; for (int i = 0; i <= tasks.Length - 1; i++) { tasks[i] = engine.LoadFromStringAsync(page, sb2.ToString()); tasks[i].ContinueWith(task => Logger.Info($"Triggers: {page.Size}")); } page.Error += DebugAllErrors; page.AddTriggerHandler(TriggerCategory.Cause, 0, HandleScriptStartCause); Task.WaitAll(tasks); Logger.Info($"Triggers: {page.Size}"); //page.Execute(0); }
public void SetGetVariableTest() { MonkeyspeakEngine engine = new MonkeyspeakEngine(); engine.Options.VariableCountLimit = 100000; Page page = engine.LoadFromString(testScript); page.Error += DebugAllErrors; for (int i = 0; i <= 10000; i++) { page.SetVariable(i.ToString(), true.ToString(), false); } foreach (var variable in page.Scope) { Console.WriteLine(variable.ToString()); } }
public void TimerLibraryTest() { var timerLibTestScript = @" (0:0) when the script starts, (5:303) pause script execution for 2 seconds. (5:304) get the current time in seconds and put it into variable %currentTime. (5:102) print {Current Time %currentTime secs} to the console. (0:0) when the script starts, (5:101) set variable %timer to 1. (5:300) create timer %timer to go off every 2 second(s) with a start delay of 1 second(s). (5:300) create timer 2 to go off every 5 second(s). *don't need delay part here (5:300) create timer 13 to go off every 900 second(s) with a start delay of # second(s). (0:300) when timer 2 goes off, (0:300) when timer %timer goes off, (5:302) get current timer and put the id into variable %timerId. (5:304) get the current uptime and put it into variable %currentTime. (5:102) print {Timer %timerId at %currentTime secs} to the console. (0:300) when timer 2 goes off, (0:300) when timer %timer goes off, (5:302) get current timer and put the id into variable %timerId. (5:304) get the current uptime and put it into variable %currentTime. (5:102) print {timerId = %timerId at %currentTime secs} to the console. (5:150) take variable %i2 and add 1 to it. (5:102) print {elapsed count = %i2} to the console. "; var engine = new MonkeyspeakEngine(); engine.Options.Debug = true; var page = engine.LoadFromString(timerLibTestScript); page.Error += DebugAllErrors; page.LoadAllLibraries(); page.RemoveLibrary <Monkeyspeak.Libraries.Debug>(); page.AddTriggerHandler(TriggerCategory.Cause, 0, HandleScriptStartCause); page.Execute(0); System.Threading.Thread.Sleep(10000); page.Dispose(); }
public void IOLibraryTest() { var ioTestString = @" (0:0) when the script starts, (5:100) set variable %file to {test.txt}. (5:102) print {%file} to the console. (0:0) when the script starts, (1:200) and the file {%file} exists, (5:202) delete file {%file}. (5:203) create file {%file}. (0:0) when the script starts, (1:200) and the file {%file} exists, (1:203) and the file {%file} can be written to, (5:200) append {Hello World from Monkeyspeak %VERSION!} to file {%file}. (0:0) when the script starts, (5:150) take variable %test and add 2 to it. (5:102) print {%test} to the console. "; var engine = new MonkeyspeakEngine(); var page = engine.LoadFromString(ioTestString); page.Error += DebugAllErrors; page.LoadAllLibraries(); page.RemoveLibrary <Monkeyspeak.Libraries.Debug>(); page.AddTriggerHandler(TriggerCategory.Cause, 0, HandleScriptStartCause); page.Execute(0); foreach (var v in page.Scope) { Logger.Debug(v); } }