Exemple #1
0
        public async Task <ReturnCode> Run(CodeExecutor obj)
        {
            if (parameter != null)
            {
                var v = parameter.GetValue(obj);
                if (v != null)
                {
                    if (v is Vector3 f)
                    {
                        if (float.IsNaN(f.x) || float.IsNaN(f.y) || float.IsNaN(f.z))
                        {
                            f = Vector3.zero;
                        }
                        obj.transform.Translate(f);
                    }
                    else if (v is Vector3Int g)
                    {
                        if (float.IsNaN(g.x) || float.IsNaN(g.y) || float.IsNaN(g.z))
                        {
                            g = Vector3Int.zero;
                        }
                        obj.transform.Translate(g);
                    }
                }
            }

            return(ReturnCode.None);
        }
Exemple #2
0
        public async Task <ReturnCode> Run(CodeExecutor obj)
        {
            var v = parameter?.GetValue(obj);

            if (v != null)
            {
                if (v is Quaternion q)
                {
                    obj.transform.rotation = q;
                }
                else if (v is Vector3 f)
                {
                    if (float.IsNaN(f.x) || float.IsNaN(f.y) || float.IsNaN(f.z))
                    {
                        f = Vector3.zero;
                    }
                    obj.transform.rotation = Quaternion.Euler(f);
                }
                else if (v is Vector3Int g)
                {
                    if (float.IsNaN(g.x) || float.IsNaN(g.y) || float.IsNaN(g.z))
                    {
                        g = Vector3Int.zero;
                    }
                    obj.transform.rotation = Quaternion.Euler(g);
                }
            }

            return(ReturnCode.None);
        }
Exemple #3
0
        public object GetValue(CodeExecutor obj2)
        {
            if (value != null)
            {
                var obj = value?.GetValue(obj2);
                if (obj != null)
                {
                    if (obj is CodeExecutor c)
                    {
                        return(c.transform.rotation);
                    }
                    if (obj is Vector3 v)
                    {
                        return(Quaternion.Euler(v));
                    }
                    if (obj is Vector3Int vi)
                    {
                        return(Quaternion.Euler(vi));
                    }
                }

                return(Quaternion.identity);
            }
            return(obj2.transform.rotation);
        }
Exemple #4
0
        public async Task <ReturnCode> Run(CodeExecutor obj)
        {
            var possibleList = variable?.GetValue(obj);

            if (possibleList is Table tbl)
            {
                var v1 = index?.GetValue(obj);
                if (v1 != null)
                {
                    tbl[v1] = value?.GetValue(obj);
                }
            }

            /*
             * else if (variable is VariableValue varVal && possibleList is string str)
             * {
             *      var ind = index?.GetValue(obj);
             *      var val = value?.GetValue(obj);
             *
             *      if (ind != null)
             *      {
             *              if (ind is BigInteger b)
             *              {
             *
             *              }
             *              else if (ind is string str2)
             *              {
             *                      string valStr = val != null ? val.ToString() : "";
             *              }
             *      }
             * }
             */

            return(ReturnCode.None);
        }
Exemple #5
0
        public void TestCompileVSCode()
        {
            var codeExecutor = new CodeExecutor(this);
            var tempFile     = Path.GetTempFileName();

            File.WriteAllText(tempFile, sampleVSCodeToExecute);
            using (var compileHelper = codeExecutor.CompileTheCode(null, tempFile, CancellationToken.None))
            {
                var res = compileHelper.ExecuteTheCode();
                if (res is string resString)
                {
                    Assert.Fail(resString);
                }
                var task = res as Task;
                if (task.IsFaulted)
                {
                    LogMessage($"Faulted task {task.Exception}");
                    Assert.IsTrue(task.Exception.ToString().Contains(" The SVsSolution service is unavailable."));
                }
            }
            //            Assert.IsNotNull(_lstLoggedStrings.Where(s => s.Contains("in DoSomeWorkAsync")).FirstOrDefault());


            Assert.IsNotNull(_lstLoggedStrings.Where(s => s.Contains("Registering solution events")).FirstOrDefault());
            Assert.IsNotNull(_lstLoggedStrings.Where(s => s.Contains("UnRegistering solution events")).FirstOrDefault());
            Assert.IsNotNull(_lstLoggedStrings.Where(s => s.Contains("The SVsSolution service is unavailable")).FirstOrDefault());
        }
Exemple #6
0
 public async Task DeleteObject(CodeExecutor obj)
 {
     if (obj != null)
     {
         SceneExecutor.Instance.Delete(obj);
     }
 }
        public async Task <ReturnCode> Run(CodeExecutor obj)
        {
            if (obj.rigidbody != null)
            {
                if (value != null)
                {
                    var val = value.GetValue(obj);

                    if (val is Vector3 i)
                    {
                        obj.rigidbody.angularVelocity = i;
                    }
                    else if (val is Vector3Int f)
                    {
                        obj.rigidbody.angularVelocity = f;
                    }
                }
                else
                {
                    obj.rigidbody.angularVelocity = Vector3.zero;
                }
            }

            return(ReturnCode.None);
        }
Exemple #8
0
 public async Task <ReturnCode> Run(CodeExecutor obj)
 {
     if (parameter != null)
     {
         var v = parameter.GetValue(obj);
         if (v != null)
         {
             if (v is float f)
             {
                 await Task.Delay(Mathf.FloorToInt(f * 1000));
             }
             else if (v is int i)
             {
                 await Task.Delay(i * 1000);
             }
             else if (v is BigInteger b)
             {
                 await Task.Delay((int)b * 1000);
             }
             else
             {
                 await Task.Delay(1);
             }
         }
         else
         {
             await Task.Delay(1);
         }
     }
     else
     {
         await Task.Delay(1);
     }
     return(ReturnCode.None);
 }
        public override bool Execute(out ResultTuple ret, ResultTuple[] results,
                                     Plan.ParameterChooser[] parameterMap, TextWriter executionLog, TextWriter debugLog, out Exception exceptionThrown, out bool contractViolated, bool forbidNull)
        {
            contractViolated = false;

            Util.Assert(parameterMap.Length == 2);

            object receiver = results[parameterMap[0].planIndex].tuple[parameterMap[0].resultIndex];
            object val      = results[parameterMap[1].planIndex].tuple[parameterMap[1].resultIndex];

            if (!this.coverageInfo.IsStatic)
            {
                Util.Assert(receiver != null);
            }

            if (forbidNull)
            {
                Util.Assert(val != null);
            }

            CodeExecutor.CodeToExecute call = delegate() { ffield.SetValue(receiver, val); };

            executionLog.WriteLine("set field " + ffield.Name);
            executionLog.Flush();

            if (!CodeExecutor.ExecuteReflectionCall(call, debugLog, out exceptionThrown))
            {
                ret = null;
                return(false);
            }

            ret = new ResultTuple(ffield, receiver);
            return(true);
        }
Exemple #10
0
        public void TestCompilePragma()
        {
            var strCodeToExecute = @"
// can add the fullpath to an assembly for reference like so:
//Pragma: verbose=true

//Pragma: GenerateInMemory=false

using System;

namespace DoesntMatter
{
public class foo {}
    public class SomeClass
    {
        public static string DoMain(object [] args)
        {
            var x = 1;
            var y = 100 / x;
            return ""did main "" + y.ToString() +"" "";
        }
    }
}
";
            var codeExecutor     = new CodeExecutor(this);
            var tempFile         = Path.GetTempFileName();

            File.WriteAllText(tempFile, strCodeToExecute);
            var res = codeExecutor.CompileTheCode(null, tempFile, CancellationToken.None);

            LogMessage(res.ToString());

            Assert.IsNotNull(_lstLoggedStrings.Where(s => s.Contains("Pragma GenerateInMemory  = False")).FirstOrDefault());
        }
Exemple #11
0
        public RunResultDTO SendSolution(int id, [FromBody] TaskSolutionDTO taskSolution)
        {
            using (programming_tasksEntities entities = new programming_tasksEntities())
            {
                string username = Thread.CurrentPrincipal.Identity.Name; //get username from authentication

                user userResult = entities.users.First(user => user.username == username);
                task taskResult = entities.tasks.Find(id);

                if (taskResult == null)
                {
                    ExceptionHandler.ThrowException(HttpStatusCode.NotFound, "Task with id " + id + " doesn't exist");
                }

                CodeExecutor codeExecutor = new CodeExecutor();

                RunResultDTO runResult = codeExecutor.RunTask(taskSolution, taskResult);

                entities.users_solutions.Add(new users_solutions()
                {
                    user        = userResult,
                    task        = taskResult,
                    code        = taskSolution.Code,
                    status      = runResult.CorrectExamples == taskResult.examples.Count,
                    description = runResult.CorrectExamples == taskResult.examples.Count ?
                                  "Code executed successfully for all examples" :
                                  "Code failed at some example(s)",
                    date = DateTime.Now
                });

                entities.SaveChanges();

                return(runResult);
            }
        }
Exemple #12
0
        public object GetValue(CodeExecutor obj)
        {
            var v1 = value1?.GetValue(obj);

            if (v1 == null)
            {
                return(true);
            }

            if (v1 is bool b)
            {
                return(!b);
            }
            //if (v1 is float || v1 is BigInteger || v1 is Vector3 || v1 is Vector3Int) return v1 * -1;

            if (v1 is Quaternion q)
            {
                return(Quaternion.Inverse(q));
            }

            if (v1 is Vector3 v)
            {
                return(-v);
            }
            if (v1 is Vector3Int vi)
            {
                return(-vi);
            }

            return(false);
        }
Exemple #13
0
        public void TestCompileCode()
        {
            var strCodeToExecute = @"
// can add the fullpath to an assembly for reference like so:
////Ref: c:\progam files \...myAsm.dll
////Ref: System.dll
////Ref: System.linq.dll
////Ref: System.core.dll
////Ref: <%= asmMemSpectBase.Location %>
using System;

namespace DoesntMatter
{
public class foo {}
    public class SomeClass
    {
        public static string DoMain(object [] args)
        {
            var x = 1;
            var y = 100 / x;
            return ""did main "" + y.ToString() +"" "";
        }
    }
}
";
            var codeExecutor     = new CodeExecutor(this);
            var tempFile         = Path.GetTempFileName();

            File.WriteAllText(tempFile, strCodeToExecute);
            using (var compileHelper = codeExecutor.CompileTheCode(null, tempFile, CancellationToken.None))
            {
                var res = compileHelper.ExecuteTheCode();
                Assert.AreEqual("did main 100 ", res.ToString());
            }
        }
Exemple #14
0
        public async Task <CodeExecutor> DelayedCreateObject(CodeExecutor original, SelectableObject selectable)
        {
            var obj = selectable.GetComponent <IObject>();

            if (obj.cloneCount >= 25)
            {
                await Task.Delay(1);
            }

            if (!running)
            {
                return(null);
            }

            var exec = Instantiate(original, scene); //CreateObject(selectable, false, obj, selectable.GetComponent<CodeExecutor>());

            if (obj.lastCloneTime == Time.unscaledTime)
            {
                obj.cloneCount++;
            }
            else
            {
                obj.lastCloneTime = Time.unscaledTime;
                obj.cloneCount    = 1;
            }

            return(exec);
        }
Exemple #15
0
 public CodeQualityRater(CodeAnalyzerFactory codeAnalyzerFactory, CodeExecutor codeExecutor, CodeQualityRaterConfiguration codeQualityRaterConfiguration, ExecutableCodeFactory executableCodeFactory)
 {
     _codeAnalyzerFactory           = codeAnalyzerFactory;
     _codeExecutor                  = codeExecutor;
     _codeQualityRaterConfiguration = codeQualityRaterConfiguration;
     _executableCodeFactory         = executableCodeFactory;
 }
Exemple #16
0
        public object GetValue(CodeExecutor obj)
        {
            var v1 = list?.GetValue(obj);
            var v2 = value2?.GetValue(obj);

            if (v1 is Table tbl)
            {
                return(tbl[v2]);
            }

            if (v1 is string str)
            {
                var ind = -1;
                if (v2 is int i)
                {
                    ind = i;
                }
                else if (v2 is BigInteger b)
                {
                    ind = (int)b;
                }
                else if (v2 is float f)
                {
                    ind = Mathf.RoundToInt(f);
                }

                return(ind < 0 || ind >= str.Length ? null : str[ind].ToString());
            }

            return(null);
        }
Exemple #17
0
        public async Task <ReturnCode> Run(CodeExecutor obj2)
        {
            if (parameter != null)
            {
                var v = parameter?.GetValue(obj2);
                if (v is CodeExecutor obj)
                {
                    obj2.transform.LookAt(obj.transform);
                }

                if (v is Vector3 pos)
                {
                    obj2.transform.rotation = Quaternion.FromToRotation(Vector3.forward, pos - obj2.transform.position);
                }

                if (v is Vector3Int pos2)
                {
                    obj2.transform.rotation = Quaternion.FromToRotation(Vector3.forward, pos2 - obj2.transform.position);
                }

                return(ReturnCode.None);
            }

            obj2.transform.rotation = Quaternion.FromToRotation(Vector3.forward, -obj2.transform.position);

            return(ReturnCode.None);
        }
Exemple #18
0
        public object GetValue(CodeExecutor obj)
        {
            var v1 = value1?.GetValue(obj);
            var v2 = value2?.GetValue(obj);

            switch (equalType)
            {
            case EqualType.Equals:
                return(Equals(v1, v2));

            case EqualType.NotEquals:
                return(!Equals(v1, v2));

            case EqualType.Greater:
                return(Greater(v1, v2));

            case EqualType.Less:
                return(Less(v1, v2));

            case EqualType.GreaterEqual:
                return(Equals(v1, v2) || Greater(v1, v2));

            case EqualType.LessEqual:
                return(Equals(v1, v2) || Less(v1, v2));
            }

            return(false);
        }
Exemple #19
0
        public object GetValue(CodeExecutor obj)
        {
            if (obj.Variables.TryGetValue(variableIndex, out var value))
            {
                return(value);
            }

            return(null);
        }
Exemple #20
0
        public async Task <ReturnCode> Run(CodeExecutor obj)
        {
            if (value != null)
            {
                //value.executor.Variables[value.variableIndex].SetValue(parameter);
                value.SetValue(parameter, obj);
            }

            return(ReturnCode.None);
        }
Exemple #21
0
 public void SetValue(IValue newValue, CodeExecutor obj)
 {
     if (obj.Variables.ContainsKey(variableIndex))
     {
         obj.Variables[variableIndex] = newValue?.GetValue(obj);
     }
     else
     {
         obj.Variables.Add(variableIndex, newValue?.GetValue(obj));
     }
 }
Exemple #22
0
        public async Task <ReturnCode> Run(CodeExecutor obj)
        {
            var possibleList = variable?.GetValue(obj);

            if (possibleList is Table tbl)
            {
                tbl.Insert(index?.GetValue(obj), value?.GetValue(obj));
            }

            return(ReturnCode.None);
        }
Exemple #23
0
        public object GetValue(CodeExecutor obj)
        {
            var v1 = value?.GetValue(obj);

            if (v1 != null)
            {
                if (v1 is Vector3Int vi)
                {
                    switch (component)
                    {
                    case VectorComponent.X:
                        return(new BigInteger(vi.x));

                    case VectorComponent.Y:
                        return(new BigInteger(vi.y));

                    case VectorComponent.Z:
                        return(new BigInteger(vi.z));
                    }
                }

                if (v1 is Vector3 v)
                {
                    switch (component)
                    {
                    case VectorComponent.X:
                        return(v.x);

                    case VectorComponent.Y:
                        return(v.y);

                    case VectorComponent.Z:
                        return(v.z);
                    }
                }

                if (v1 is Quaternion q)
                {
                    switch (component)
                    {
                    case VectorComponent.X:
                        return(q.x);

                    case VectorComponent.Y:
                        return(q.y);

                    case VectorComponent.Z:
                        return(q.z);
                    }
                }
            }

            return(0);
        }
Exemple #24
0
 public void SetValueToObject(object newValue, CodeExecutor obj)
 {
     if (obj.Variables.ContainsKey(variableIndex))
     {
         obj.Variables[variableIndex] = newValue;
     }
     else
     {
         obj.Variables.Add(variableIndex, newValue);
     }
 }
Exemple #25
0
        public async Task TestCompileVB()
        {
            await Task.Yield();

            var vbfile = @"C:\Users\calvinh\source\repos\PerfGraphVSIX\PerfGraphVSIX\CodeSamples\Cartoon.vb";

            var codeExecutor = new CodeExecutor(this);
            var res          = codeExecutor.CompileTheCode(null, vbfile, CancellationToken.None);

            LogMessage("{0}", res.ToString());
        }
Exemple #26
0
        public async Task <ReturnCode> Run(CodeExecutor obj)
        {
            var possibleList = variable?.GetValue(obj);

            if (possibleList is Table tbl)
            {
                tbl.Clear();
            }

            return(ReturnCode.None);
        }
Exemple #27
0
        public object GetValue(CodeExecutor obj)
        {
            var v1 = value1?.GetValue(obj);
            var v2 = value2?.GetValue(obj);

            if (v1 is int i)
            {
                if (v2 is int j)
                {
                    return(j == 0 ? 0 : i % j);
                }
                if (v2 is BigInteger bj)
                {
                    return(bj == 0 ? 0 : i % bj);
                }
                if (v2 is float f)
                {
                    return(f == 0 ? 0 : i % f);
                }
            }
            else if (v1 is float fi)
            {
                if (v2 is int j)
                {
                    return(j == 0 ? 0 : fi % j);
                }
                if (v2 is BigInteger bj)
                {
                    return(bj == 0 ? 0 : fi % (float)bj);
                }
                if (v2 is float f)
                {
                    return(f == 0 ? 0 : fi % f);
                }
            }
            else if (v1 is BigInteger bi)
            {
                if (v2 is int j)
                {
                    return(j == 0 ? 0 : bi % j);
                }
                if (v2 is BigInteger bj)
                {
                    return(bj == 0 ? 0 : bi % bj);
                }
                if (v2 is float f)
                {
                    return(f == 0 ? 0 : (float)bi % f);
                }
            }

            return(0);
        }
Exemple #28
0
        public object GetValue(CodeExecutor obj)
        {
            switch (inputCode)
            {
            case MultiInputCode.Move:
                return(PlayInputs.MoveDirection);

            case MultiInputCode.Look:
                return(PlayInputs.CameraMovement);
            }

            return(false);
        }
Exemple #29
0
        public async Task <ReturnCode> Run(CodeExecutor obj)
        {
            var var = condition?.GetValue(obj);

            if (var is bool b && b || (!(var is bool) && var != null))
            {
                var r = await scope1?.Execute(obj);

                if (r != ReturnCode.None)
                {
                    return(r);
                }
            }
Exemple #30
0
        public void TestCompileCodeReturnTask()
        {
            var strCodeToExecute = @"
// can add the fullpath to an assembly for reference like so:
////Ref: c:\progam files \...myAsm.dll
////Ref: System.dll
////Ref: System.linq.dll
////Ref: System.core.dll
////Ref: <%= asmMemSpectBase.Location %>
using System;
using System.Threading.Tasks;

namespace DoesntMatter
{
public class foo {}
    public class SomeClass
    {
        async Task<string> DoWaitAsync()
        {
            await Task.Delay(100);
            return ""did delay"";
        }

        public static async Task<string> DoMain(object [] args)
        {
            var x = 1;
            var y = 100 / x;
            
            return ""did main "" + y.ToString() +"" "";
        }
    }
}
";
            var codeExecutor     = new CodeExecutor(this);
            var tempFile         = Path.GetTempFileName();

            File.WriteAllText(tempFile, strCodeToExecute);
            using (var compileHelper = codeExecutor.CompileTheCode(null, tempFile, CancellationToken.None))
            {
                var res = compileHelper.ExecuteTheCode();
                if (res is Task <string> task)
                {
                    task.Wait();
                    Assert.AreEqual("did main 100 ", task.Result);
                }
                else
                {
                    Assert.Fail();
                }
            }
        }