Exemplo n.º 1
0
        public string UpdateFunction(FunctionDefinitions funcDefinitions)
        {
            try
            {
                if (collection.Find(_ => _.Name == funcDefinitions.Name).Any())
                {
                    // read current function from DB
                    var currentFunction = collection.Find(x => x.Name == funcDefinitions.Name).FirstOrDefault().Function;

                    // get current backups count
                    var rootFuncName = funcDefinitions.Name.Split("BackUp")[0];
                    var newNumber    = collection.Find(_ => _.Name == rootFuncName).FirstOrDefault().BackUps.Count + 1;

                    // update by new function
                    var updateDef = Builders <MongoFunctionDefinitions> .Update.Set(_ => _.Function, funcDefinitions.FunctionData);

                    collection.UpdateOne(_ => _.Name == funcDefinitions.Name, updateDef);

                    // add new backup with previous function
                    updateDef = Builders <MongoFunctionDefinitions> .Update.Set("BackUps." + funcDefinitions.Name + "BackUp" + newNumber, currentFunction);

                    collection.UpdateOne(_ => _.Name == funcDefinitions.Name, updateDef);

                    return("FUNCTION '" + funcDefinitions.Name + "' WAS UPDATED!");
                }
                return("FUNCTION '" + funcDefinitions.Name + "' DOES NOT EXIST!");
            }
            catch (System.Exception ex)
            {
                return(ex.ToString());
            }
        }
Exemplo n.º 2
0
        private string parseUserDefinedFunction(ASTNode rootNode, string functionId)
        {
            FunctionDefinition function = null;

            foreach (var funcDef in FunctionDefinitions.Where(funcDef => funcDef.getId() == functionId))
            {
                function = funcDef;
            }

            if (function?.getNumArguments() != rootNode.getNumChildren())
            {
                return(string.Empty); //error
            }
            var tmpDictionary = new Dictionary <string, string>();

            for (long i = 0; i < function.getNumArguments(); i++)
            {
                var argument    = function.getArgument(i).getName();
                var replacement = Eval(rootNode.getChild(i));
                tmpDictionary.Add(argument, replacement);
                _functionDefDictionary[argument] = replacement;
            }
            foreach (var entry in tmpDictionary)
            {
                _functionDefDictionary[entry.Key] = entry.Value;
            }
            var res = Eval(function.getBody());

            return(res);
        }
Exemplo n.º 3
0
        public Error[] Compile()
        {
            if (!compilationTurnedOn)
            {
                return(new Error[] {
                    new Error("Uncompiled program.")
                });
            }

            //D.Log("Compiling " + this.ToString());

            StopAndReset();

            //_sprakRunner = new SprakRunner(new StringReader(sourceCodeContent), FunctionDefinitions.ToArray(), VariableDefinitions.ToArray());

            if (_sprakRunner == null)
            {
                //D.Log("Creating new SprakRunner for " + this.ToString());
                _sprakRunner = new SprakRunner(new StringReader(sourceCodeContent), FunctionDefinitions.ToArray(), VariableDefinitions.ToArray());
            }
            else
            {
                _sprakRunner.Reset();
            }

            PrintErrorsToD();
            return(GetErrors());
        }
Exemplo n.º 4
0
 private IEnumerable <FunctionDefinition> AllDependentFuncDefs()
 {
     return
         (FunctionDefinitions.Select(x => x.Dependencies)
          .SelectMany(x => x)
          .Where(x => !FunctionDefinitions.Contains(x))
          .Distinct());
 }
Exemplo n.º 5
0
 /// <summary>
 ///     Parses a user defined function by looking it up in the pre-imported user defined
 ///     functions.
 /// </summary>
 private string parseFunction(ASTNode rootNode)
 {
     if (FunctionDefinitions == null)
     {
         return(String.Empty);
     }
     foreach (var func in FunctionDefinitions.Where(func => rootNode.getName() == func.getId()))
     {
         return(parseUserDefinedFunction(rootNode, func.getId()));
     }
     return(string.Empty);
 }
Exemplo n.º 6
0
        public void CreateFuncTestAlreadyExsists()
        {
            FunctionDefinitions funcDef = new FunctionDefinitions();

            funcDef.Id           = "1";
            funcDef.Name         = "ForTesting";
            funcDef.FunctionData = "";

            var actualResult   = funcH.CreateFunction(funcDef);
            var expectedResult = "FUNCTION '" + funcDef.Name + "' ALREADY EXSISTS!";

            Assert.Equal(expectedResult, actualResult);
        }
Exemplo n.º 7
0
        public void CreateFuncTestFail()
        {
            FunctionDefinitions funcDef = new FunctionDefinitions();

            funcDef.Id           = "1";
            funcDef.Name         = "Blergh";
            funcDef.FunctionData = "iwhegiwheg";

            var actualResult   = funcH.CreateFunction(funcDef);
            var expectedResult = "ERROR WHILE CREATING FUNCTION '" + funcDef.Name + "'";

            Assert.Equal(expectedResult, actualResult);
        }
Exemplo n.º 8
0
        public void CreateFuncTest()
        {
            FunctionDefinitions funcDef = new FunctionDefinitions();

            funcDef.Id           = "1";
            funcDef.Name         = "ForTesting";
            funcDef.FunctionData = "";

            var actualResult   = funcH.CreateFunction(funcDef);
            var expectedResult = "FUNCTION '" + funcDef.Name + "' WAS CREATED";

            Assert.Equal(expectedResult, actualResult);
        }
Exemplo n.º 9
0
        public void UpdateFuncTestingDoesNotExist()
        {
            FunctionDefinitions funcDef = new FunctionDefinitions();

            funcDef.Id           = "1";
            funcDef.Name         = "3rgwet";
            funcDef.FunctionData = "egrs";

            var actualResult   = funcH.UpdateFunction(funcDef);
            var expectedResult = "FUNCTION '" + funcDef.Name + "' DOES NOT EXIST!";

            Assert.Equal(expectedResult, actualResult);
        }
Exemplo n.º 10
0
        public void UpdateFuncTestingFail()
        {
            FunctionDefinitions funcDef = new FunctionDefinitions();

            funcDef.Id           = "1";
            funcDef.Name         = "ForTesting";
            funcDef.FunctionData = "egrs";

            var actualResult   = funcH.UpdateFunction(funcDef);
            var expectedResult = "ERROR WHILE UPDATING FUNCTION " + funcDef.Name;

            Assert.Equal(expectedResult, actualResult);
        }
Exemplo n.º 11
0
        public void UpdateFuncTesting()
        {
            FunctionDefinitions funcDef = new FunctionDefinitions();

            funcDef.Id           = "1";
            funcDef.Name         = "ForTesting";
            funcDef.FunctionData = "";

            var actualResult   = funcH.UpdateFunction(funcDef);
            var expectedResult = funcDef.Name + " was updated!";

            Assert.Equal(expectedResult, actualResult);
        }
Exemplo n.º 12
0
        public async void UploadFile_AlreadyUploadedImage()
        {
            //Arrange
            var request  = TestFactory.CreateHttpRequest("imageUrl", "https://media.gettyimages.com/photos/girl-near-the-mountains-picture-id485316112?s=612x612");
            var blobMock = new Mock <IBlobService>();

            blobMock.Setup(s => s.UploadImageAsync(It.IsAny <string>(), It.IsAny <string>())).Verifiable();

            var sqlMock = new Mock <ISqlService>();

            sqlMock.Setup(s => s.GetByUrlCountAsync(It.IsAny <string>())).Returns(Task.FromResult(1));
            sqlMock.Setup(s => s.InsertToDbAsync(It.IsAny <string>(), It.IsAny <string>())).Verifiable();

            var functions = new FunctionDefinitions(blobMock.Object, sqlMock.Object);

            //Act
            var response = await functions.Run(request, logger);

            Assert.IsType <BadRequestResult>(response);
        }
Exemplo n.º 13
0
        public async void UploadFile_EmptyUrl()
        {
            //Arrange
            var request  = TestFactory.CreateHttpRequest("imageUrl", "");
            var blobMock = new Mock <IBlobService>();

            blobMock.Setup(s => s.UploadImageAsync(It.IsAny <string>(), It.IsAny <string>())).Verifiable();

            var sqlMock = new Mock <ISqlService>();

            sqlMock.Setup(s => s.GetByUrlCountAsync(It.IsAny <string>())).Returns(Task.FromResult(0));
            sqlMock.Setup(s => s.InsertToDbAsync(It.IsAny <string>(), It.IsAny <string>())).Verifiable();

            var functions = new FunctionDefinitions(blobMock.Object, sqlMock.Object);

            //Act
            var response = await functions.Run(request, logger);

            Assert.IsType <BadRequestResult>(response);
        }
Exemplo n.º 14
0
 public string CreateFunction(FunctionDefinitions funcDefinitions)
 {
     try
     {
         if (collection.Find(_ => _.Name == funcDefinitions.Name).Any())
         {
             return("FUNCTION '" + funcDefinitions.Name + "' ALREADY EXSISTS!");
         }
         collection.InsertOne(new MongoFunctionDefinitions {
             Id       = funcDefinitions.Id,
             Name     = funcDefinitions.Name,
             Function = funcDefinitions.FunctionData,
             BackUps  = new Dictionary <string, string>()
         });
         return("FUNCTION WAS CREATED");
     }
     catch (System.Exception ex)
     {
         return(ex.ToString());
     }
 }
 public bool FunctionIsPreDefined(string name)
 {
     return(FunctionDefinitions.ContainsKey(name));
 }
Exemplo n.º 16
0
 public void AddFunc(FunctionDefinitionExpression func)
 {
     FunctionDefinitions.Add(func);
 }