public void Test_Validate_method(bool inputLayerValid, bool overlayLayerValid, bool distanceValid, bool predicateValid, int expectedResultCount)
        {
            Random random = new Random();

            string inputLayer   = "inputLayer" + random.Next();
            string overlayLayer = "overlayLayer" + random.Next();

            CheckPropertyValidation checkPropertyValidation = new CheckPropertyValidation();

            Mock <IValidationFunctions> mockValidationFunctions = new Mock <IValidationFunctions>();

            mockValidationFunctions.Setup(x => x.IsValidGeoJson(inputLayer)).Returns(inputLayerValid);
            mockValidationFunctions.Setup(x => x.IsValidGeoJson(overlayLayer)).Returns(overlayLayerValid);
            mockValidationFunctions.Setup(x => x.isDistanceValid(It.IsAny <string>())).Returns(distanceValid);
            mockValidationFunctions.Setup(x => x.isPredicateValid(It.IsAny <List <int> >(), It.IsAny <int>(), It.IsAny <int>())).Returns(predicateValid);

            SelectByLocationOperationParam selectByLocationOperationParam = new SelectByLocationOperationParam()
            {
                InputLayer = inputLayer, OverlayLayer = overlayLayer, Distance = "distance" + random.Next()
            };

            IList <ValidationResult> result = checkPropertyValidation.myValidation(selectByLocationOperationParam, mockValidationFunctions);

            Assert.AreEqual(expectedResultCount, result.Count);
        }
Exemplo n.º 2
0
        public string buildSelectByLocationCommand(SelectByLocationOperationParam json, string scriptFolder, string scriptName, string inputLayerFile, string overlayLayerFile)
        {
            ICommandBuilder builder = createNewCommandBuilder();

            builder.AddProgramName(scriptFolder + @"\" + scriptName);
            builder.SignleParameter(inputLayerFile);
            builder.SignleParameter(overlayLayerFile);
            string predicate = String.Join(",", json.predicate.ToArray());

            builder.SignleParameter(predicate);
            if (json.Distance != null)
            {
                builder.SignleParameter(json.Distance.ToString());
            }
            return(builder.GetResult());
        }
Exemplo n.º 3
0
        [Consumes("application/json")] // supports only json
        public IActionResult Post(SelectByLocationOperationParam myJson)
        {
            var          pathToScriptFolder = Configuration["pathToAnalysisScriptFolder"];
            var          scriptName         = Configuration["AnalysisScriptNames:selectByLocationScript"];
            var          qgisPython         = Configuration["ScriptRunners:qgisCmdPath"];
            ResultObject output;

            using (var tempFiles1 = new TempFileCollection())
            {
                string inputLayerFile   = tempFiles1.AddExtension("geojson");
                string overlayLayerFile = Path.ChangeExtension(Path.GetTempFileName(), "geojson");
                tempFiles1.AddFile(overlayLayerFile, false);
                System.IO.File.WriteAllText(inputLayerFile, myJson.InputLayer.ToString());
                System.IO.File.WriteAllText(overlayLayerFile, myJson.OverlayLayer.ToString());
                string args = _creator.buildSelectByLocationCommand(myJson, pathToScriptFolder, scriptName, inputLayerFile, overlayLayerFile);
                output = _python.RunCMD(args, qgisPython);
            }
            return(_outputHandler.HandleQgisOutput(output));
        }