public static void Sleep(double ms, TFunction caller) { var sleep = FunctionStack.First("Sleep"); var func = new TFunction(sleep, new List <EDefinition>(), ms.ToString(), caller.CallingFunction); sleep.TryParse(func); //Utilities.Sleep((int)ms); }
public override string CallBase() { var tryBlock = ProvidedArgs.First("invoke"); if (tryBlock == null) { Compiler.ExceptionListener.Throw("Function Try must have an invoked function"); } var tryfunc = FunctionStack.First(tryBlock.ToString()); if (tryfunc == null) { Compiler.ExceptionListener.Throw(new ExceptionHandler(ExceptionType.CompilerException, $"Cannot find the invoked function.", LineValue)); } var catchExt = Extensions.FirstOrDefault(f => f.Name == "Catch") as ExtensionCatch; if (catchExt == null) { Compiler.ExceptionListener.Throw("Function Try must have `Catch` extension"); } var catchBlock = catchExt.Extend(); if (catchBlock.ElementAtOrDefault(0) == null) { Compiler.ExceptionListener.Throw("Invoke for Catch block cannot be null"); } var catchfunc = FunctionStack.First(catchBlock[0].ToString()); if (catchfunc == null) { Compiler.ExceptionListener.Throw(new ExceptionHandler(ExceptionType.CompilerException, $"Cannot find the invoked function.", LineValue)); } Compiler.ExceptionListener.TryCatchEventStack.Add(new Exceptions.TryCatchEvent(tryfunc, catchfunc)); tryfunc.TryParse(new TFunction(Caller.Function, new List <EDefinition>(), tryfunc.GetInvokeProperties(), Caller.CallingFunction)); return(""); }
public override string CallBase() { var prov = ProvidedArgs.First("invoke"); if (prov == null) { Compiler.ExceptionListener.Throw(new ExceptionHandler(ExceptionType.CompilerException, $"{this.Name } Arguments cannot be null.")); return(null); } var func = FunctionStack.First(prov.ToString()); if (func == null) { Compiler.ExceptionListener.Throw(new ExceptionHandler(ExceptionType.CompilerException, $"Invoke function [{prov.ToString()}] could not be found")); return(null); } if (!func.Async) { Compiler.ExceptionListener.Throw($"{this.Name} The invoked function must be marked async", ExceptionType.SystemException); return(null); } try { Thread th = new Thread(() => { func.SetInvokeProperties(new string[] { }, Caller.CallingFunction.LocalVariables.List, Caller.CallingFunction.ProvidedArgs.List); func.TryParse(new TFunction(Caller.Function, new List <EDefinition>(), this.GetInvokeProperties(), Caller.CallingFunction)); }); th.Start(); }catch { Compiler.ExceptionListener.Throw($"Async thread reached an unexpected error.", ExceptionType.SystemException); return(null); } return(""); }
public override string CallBase() { var prov = ProvidedArgs.First("bool"); if (prov == null) { Compiler.ExceptionListener.Throw(new ExceptionHandler(ExceptionType.CompilerException, $"Arguments cannot be null.", LineValue)); return(null); } bool flag = (prov.ToString() == "True" || prov.ToString() == "true") ? true : false; var andFlag = Extensions.FirstOrDefault(f => f.Name == "And"); var orFlag = Extensions.FirstOrDefault(f => f.Name == "Or"); if (orFlag != null) { var orExtensions = Extensions.Where(w => w.Name == "Or"); foreach (var o in orExtensions) { var or = o as ExtensionOr; string[] param = or.Extend(); bool paramFlag = (param[0].ToString() == "True" || param[0].ToString() == "true") ? true : false; if (paramFlag) { flag = true; break; } } } if (andFlag != null) { var andExtensions = Extensions.Where(w => w.Name == "And"); foreach (var a in andExtensions) { var and = a as ExtensionAnd; string[] param = and.Extend(); bool paramFlag = (param[0].ToString() == "True" || param[0].ToString() == "true") ? true : false; if (!paramFlag) { flag = false; break; } } } if (flag) { //find then extension and call it var findThen = Extensions.FirstOrDefault(f => f.Name == "Then") as ExtensionThen; if (findThen != null) { string[] thenFunc = findThen.Extend(); var func = FunctionStack.First(thenFunc[0].ToString()); if (func == null) { Compiler.ExceptionListener.Throw(new ExceptionHandler(ExceptionType.CompilerException, $"Cannot find the invoked function.", LineValue)); return(null); } //pass in invoke properties. shouldnt break with null func.SetInvokeProperties(new string[] { }, Caller.CallingFunction.LocalVariables.List, Caller.CallingFunction.ProvidedArgs.List); func.TryParse(new TFunction(Caller.Function, new List <EDefinition>(), findThen.GetInvokeProperties(), Caller.CallingFunction)); } else { Compiler.ExceptionListener.Throw(new ExceptionHandler(ExceptionType.CompilerException, $"[460]If function must have a Then Extension", LineValue)); return(null); } } else { //find else extension and call it var findElse = Extensions.FirstOrDefault(f => f.Name == "Else") as ExtensionElse; if (findElse != null) { string[] elseFunc = findElse.Extend(); var func = FunctionStack.First(elseFunc[0].ToString()); if (func == null) { Compiler.ExceptionListener.Throw(new ExceptionHandler(ExceptionType.CompilerException, $"Cannot find the invoked function.", LineValue)); return(null); } func.SetInvokeProperties(new string[] { }, Caller.CallingFunction.LocalVariables.List, Caller.CallingFunction.ProvidedArgs.List); func.TryParse(new TFunction(Caller.Function, new List <EDefinition>(), findElse.GetInvokeProperties(), Caller.CallingFunction)); } } return(""); }
public override string CallBase() { if (Main.AndroidDriver == null) { Compiler.ExceptionListener.Throw("Cannot check screen without a connected device"); return(null); } var succFunc = ProvidedArgs.First("succFunc"); var failFunc = ProvidedArgs.First("failFunc"); var succPath = ProvidedArgs.First("succPath"); var failPath = ProvidedArgs.First("failPath"); if (succFunc == null || failFunc == null || succPath == null) { Compiler.ExceptionListener.Throw(new ExceptionHandler(ExceptionType.NullReferenceException, $"Invoke function cannot be null.", LineValue)); return(null); } var sf = FunctionStack.First(succFunc.ToString()); var ff = FunctionStack.First(failFunc.ToString()); if (sf == null || ff == null) { Compiler.ExceptionListener.Throw(new ExceptionHandler(ExceptionType.CompilerException, $"[198]Invoke function cannot be found.", LineValue)); return(null); } sf.SetInvokeProperties(new string[] { }, Caller.CallingFunction.LocalVariables.List, Caller.CallingFunction.ProvidedArgs.List); ff.SetInvokeProperties(new string[] { }, Caller.CallingFunction.LocalVariables.List, Caller.CallingFunction.ProvidedArgs.List); //check for threshold extension var prop = CheckProperty(); if (failPath != null) { try { Commands.AnalyzeScreen(succPath.ToString(), failPath.ToString(), sf, ff, prop, this.Caller); } catch (Exception e) { if (e is System.IO.FileNotFoundException) { Compiler.ExceptionListener.Throw(new ExceptionHandler(ExceptionType.DriverException, $"File could not be found: {succPath.ToString()}, {failPath.ToString()}")); return(null); } Compiler.ExceptionListener.Throw(new ExceptionHandler("[57]Unexpected error with CheckScreen()")); return(null); } } else { try { Commands.AnalyzeScreen(succPath.ToString(), sf, ff, prop, this.Caller); } catch (Exception e) { if (e is System.IO.FileNotFoundException) { Compiler.ExceptionListener.Throw(new ExceptionHandler(ExceptionType.DriverException, $"File could not be found: {succPath.ToString()}")); return(null); } Compiler.ExceptionListener.Throw(new ExceptionHandler("[73]Unexpected error with CheckScreen()")); return(null); } } return(""); }
public override string CallBase() { this.IsLoop = true; var prov = ProvidedArgs.First("invoke"); if (prov == null) { Compiler.ExceptionListener.Throw(new ExceptionHandler(ExceptionType.CompilerException, $"[247]Invoke function cannot be null.", LineValue)); return(null); } var func = FunctionStack.First(prov.ToString()); if (func == null) { Compiler.ExceptionListener.Throw(new ExceptionHandler(ExceptionType.CompilerException, $"[250]Invoke function cannot be null.", LineValue)); return(null); } var findFor = Extensions.FirstOrDefault(f => f.Name == "For") as ExtensionFor; if (findFor != null && findFor.Extend() != null && findFor.Extend().ElementAtOrDefault(0) != null && findFor.Extend()[0] != "") { string[] forNumber = findFor.Extend(); int forNumberAsNumber = int.Parse(forNumber[0].ToString()); //if (forNumberAsNumber == 0) // forNumberAsNumber = int.MaxValue; var tracer = new LoopTracer(); Compiler.LoopTracerStack.Add(tracer); for (var x = 0; x <= forNumberAsNumber; x++) { //gave a string as the parameter because number was causing srs problems if (!TokenParser.Stop) { if (tracer.Break) { break; } if (tracer.Continue) { tracer.SetContinue(false);//reset continue } var passed = this.GetInvokeProperties(); if (passed != null) { var getFirstElement = passed.ElementAtOrDefault(0); if (getFirstElement != null) { passed[0] = x.ToString(); } else { passed = new string[] { x.ToString() }; } } else { passed = new string[] { x.ToString() }; } func.SetInvokeProperties(new string[] { }, Caller.CallingFunction.LocalVariables.List, Caller.CallingFunction.ProvidedArgs.List); func.TryParse(new TFunction(Caller.Function, new List <EDefinition>(), passed, this, tracer)); } else { break; } } Compiler.LoopTracerStack.Remove(tracer); tracer = null; } else { //LoopTracer tracer = new LoopTracer(); //Compiler.LoopTracerStack.Add(tracer); //Tracer = tracer; var tracer = new LoopTracer(); Compiler.LoopTracerStack.Add(tracer); var x = 0; while (true) { //gave a string as the parameter because number was causing srs problems if (!TokenParser.Stop) { if (tracer.Break) { break; } if (tracer.Continue) { tracer.SetContinue(false);//reset continue } var passed = this.GetInvokeProperties(); if (passed != null) { var getFirstElement = passed.ElementAtOrDefault(0); if (getFirstElement != null) { passed[0] = x.ToString(); } else { passed = new string[] { x.ToString() }; } } else { passed = new string[] { x.ToString() }; } //Console.WriteLine(func.UID+JsonConvert.SerializeObject(tracer, Formatting.Indented)); func.SetInvokeProperties(new string[] { }, Caller.CallingFunction.LocalVariables.List, Caller.CallingFunction.ProvidedArgs.List); func.TryParse(new TFunction(Caller.Function, new List <EDefinition>(), passed, this, tracer)); x++; //Console.WriteLine("\t\t\t" +func.UID + ":" + string.Join(",",func.ProvidedArgs)); //Console.WriteLine(func.UID + JsonConvert.SerializeObject(func.ProvidedArgs, Formatting.Indented)); } else { break; } } //foreach (var ttt in Compiler.LoopTracerStack) // Console.WriteLine("b"+func.UID + JsonConvert.SerializeObject(ttt, Formatting.Indented)); Compiler.LoopTracerStack.Remove(tracer); //foreach(var ttt in Compiler.LoopTracerStack) // Console.WriteLine("a"+func.UID + JsonConvert.SerializeObject(ttt, Formatting.Indented)); tracer = null; } return(""); }