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()); } }
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); }
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()); }
private IEnumerable <FunctionDefinition> AllDependentFuncDefs() { return (FunctionDefinitions.Select(x => x.Dependencies) .SelectMany(x => x) .Where(x => !FunctionDefinitions.Contains(x)) .Distinct()); }
/// <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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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)); }
public void AddFunc(FunctionDefinitionExpression func) { FunctionDefinitions.Add(func); }