def testScriptParsing(self): # pylint: disable=too-many-locals,too-many-statements """ Test script file parsing """ alg = RAlgorithm(description_file=os.path.join(test_data_path, 'test_algorithm_1.rsx')) alg.initAlgorithm() self.assertFalse(alg.error) self.assertEqual(alg.name(), 'test_algorithm_1') self.assertEqual(alg.displayName(), 'test algorithm 1') self.assertIn('test_algorithm_1.rsx', 'test_algorithm_1.rsx') self.assertTrue(alg.show_plots) self.assertFalse(alg.r_templates.use_raster) self.assertTrue(alg.pass_file_names) alg = RAlgorithm(description_file=os.path.join(test_data_path, 'test_algorithm_2.rsx')) alg.initAlgorithm() self.assertFalse(alg.error) self.assertEqual(alg.name(), 'mytest') self.assertEqual(alg.displayName(), 'my test') self.assertEqual(alg.group(), 'my group') self.assertEqual(alg.groupId(), 'my group') self.assertFalse(alg.show_plots) self.assertTrue(alg.r_templates.use_raster) self.assertFalse(alg.pass_file_names) # test that inputs were created correctly raster_param = alg.parameterDefinition('in_raster') self.assertEqual(raster_param.type(), 'raster') vector_param = alg.parameterDefinition('in_vector') self.assertEqual(vector_param.type(), 'source') field_param = alg.parameterDefinition('in_field') self.assertEqual(field_param.type(), 'field') self.assertEqual(field_param.parentLayerParameterName(), 'in_vector') extent_param = alg.parameterDefinition('in_extent') self.assertEqual(extent_param.type(), 'extent') string_param = alg.parameterDefinition('in_string') self.assertEqual(string_param.type(), 'string') file_param = alg.parameterDefinition('in_file') self.assertEqual(file_param.type(), 'file') number_param = alg.parameterDefinition('in_number') self.assertEqual(number_param.type(), 'number') self.assertEqual(number_param.dataType(), QgsProcessingParameterNumber.Double) enum_param = alg.parameterDefinition('in_enum') self.assertEqual(enum_param.type(), 'enum') enum_param = alg.parameterDefinition('in_enum2') self.assertEqual(enum_param.type(), 'enum') self.assertEqual(enum_param.options(), ['normal', 'log10', 'ln', 'sqrt', 'exp']) bool_param = alg.parameterDefinition('in_bool') self.assertEqual(bool_param.type(), 'boolean') # outputs vector_output = alg.outputDefinition('out_vector') self.assertEqual(vector_output.type(), 'outputVector') self.assertEqual(vector_output.dataType(), QgsProcessing.TypeVectorAnyGeometry) vector_dest_param = alg.parameterDefinition('param_vector_dest') self.assertEqual(vector_dest_param.type(), 'vectorDestination') self.assertEqual(vector_dest_param.dataType(), QgsProcessing.TypeVectorAnyGeometry) table_output = alg.outputDefinition('out_table') self.assertEqual(table_output.type(), 'outputVector') self.assertEqual(table_output.dataType(), QgsProcessing.TypeVector) table_dest_param = alg.parameterDefinition('param_table_dest') self.assertEqual(table_dest_param.type(), 'vectorDestination') self.assertEqual(table_dest_param.dataType(), QgsProcessing.TypeVector) vector_dest_param = alg.parameterDefinition('param_vector_dest2') self.assertEqual(vector_dest_param.type(), 'vectorDestination') self.assertEqual(vector_dest_param.dataType(), QgsProcessing.TypeVectorAnyGeometry) vector_dest_param = alg.parameterDefinition('param_vector_point_dest') self.assertEqual(vector_dest_param.type(), 'vectorDestination') self.assertEqual(vector_dest_param.dataType(), QgsProcessing.TypeVectorPoint) vector_dest_param = alg.parameterDefinition('param_vector_line_dest') self.assertEqual(vector_dest_param.type(), 'vectorDestination') self.assertEqual(vector_dest_param.dataType(), QgsProcessing.TypeVectorLine) vector_dest_param = alg.parameterDefinition( 'param_vector_polygon_dest') self.assertEqual(vector_dest_param.type(), 'vectorDestination') self.assertEqual(vector_dest_param.dataType(), QgsProcessing.TypeVectorPolygon) raster_output = alg.outputDefinition('out_raster') self.assertEqual(raster_output.type(), 'outputRaster') raster_dest_param = alg.parameterDefinition('param_raster_dest') self.assertEqual(raster_dest_param.type(), 'rasterDestination') number_output = alg.outputDefinition('out_number') self.assertEqual(number_output.type(), 'outputNumber') string_output = alg.outputDefinition('out_string') self.assertEqual(string_output.type(), 'outputString') layer_output = alg.outputDefinition('out_layer') self.assertEqual(layer_output.type(), 'outputLayer') folder_output = alg.outputDefinition('out_folder') self.assertEqual(folder_output.type(), 'outputFolder') folder_dest_param = alg.parameterDefinition('param_folder_dest') self.assertEqual(folder_dest_param.type(), 'folderDestination') html_output = alg.outputDefinition('out_html') self.assertEqual(html_output.type(), 'outputHtml') html_dest_param = alg.parameterDefinition('param_html_dest') self.assertEqual(html_dest_param.type(), 'fileDestination') file_output = alg.outputDefinition('out_file') self.assertEqual(file_output.type(), 'outputFile') file_dest_param = alg.parameterDefinition('param_file_dest') self.assertEqual(file_dest_param.type(), 'fileDestination') csv_output = alg.outputDefinition('out_csv') self.assertEqual(csv_output.type(), 'outputFile') csv_dest_param = alg.parameterDefinition('param_csv_dest') self.assertEqual(csv_dest_param.type(), 'fileDestination') self.assertEqual(csv_dest_param.defaultFileExtension(), 'csv') # test display_name alg = RAlgorithm(description_file=os.path.join(test_data_path, 'test_algorithm_3.rsx')) alg.initAlgorithm() self.assertFalse(alg.error) self.assertEqual(alg.name(), 'thealgid') self.assertEqual(alg.displayName(), 'the algo title') self.assertEqual(alg.group(), 'my group') self.assertEqual(alg.groupId(), 'my group') # test that inputs are defined as parameter description alg = RAlgorithm(description_file=os.path.join(test_data_path, 'test_algorithm_4.rsx')) alg.initAlgorithm() self.assertFalse(alg.error) self.assertEqual(alg.name(), 'mytest') self.assertEqual(alg.displayName(), 'my test') self.assertEqual(alg.group(), 'my group') self.assertEqual(alg.groupId(), 'my group') raster_param = alg.parameterDefinition('in_raster') self.assertEqual(raster_param.type(), 'raster') vector_param = alg.parameterDefinition('in_vector') self.assertEqual(vector_param.type(), 'source') field_param = alg.parameterDefinition('in_field') self.assertEqual(field_param.type(), 'field') self.assertEqual(field_param.parentLayerParameterName(), 'in_vector') extent_param = alg.parameterDefinition('in_extent') self.assertEqual(extent_param.type(), 'extent') crs_param = alg.parameterDefinition('in_crs') self.assertEqual(crs_param.type(), 'crs') string_param = alg.parameterDefinition('in_string') self.assertEqual(string_param.type(), 'string') number_param = alg.parameterDefinition('in_number') self.assertEqual(number_param.type(), 'number') self.assertEqual(number_param.dataType(), QgsProcessingParameterNumber.Integer) enum_param = alg.parameterDefinition('in_enum') self.assertEqual(enum_param.type(), 'enum') bool_param = alg.parameterDefinition('in_bool') self.assertEqual(bool_param.type(), 'boolean') file_param = alg.parameterDefinition('in_file') self.assertEqual(file_param.type(), 'file') self.assertEqual(file_param.behavior(), QgsProcessingParameterFile.File) folder_param = alg.parameterDefinition('in_folder') self.assertEqual(folder_param.type(), 'file') self.assertEqual(folder_param.behavior(), QgsProcessingParameterFile.Folder) gpkg_param = alg.parameterDefinition('in_gpkg') self.assertEqual(gpkg_param.type(), 'file') self.assertEqual(gpkg_param.behavior(), QgsProcessingParameterFile.File) self.assertEqual(gpkg_param.extension(), 'gpkg') img_param = alg.parameterDefinition('in_img') self.assertEqual(img_param.type(), 'file') self.assertEqual(img_param.behavior(), QgsProcessingParameterFile.File) self.assertEqual(img_param.extension(), '') self.assertEqual(img_param.fileFilter(), 'PNG Files (*.png);; JPG Files (*.jpg *.jpeg)') vector_dest_param = alg.parameterDefinition('param_vector_dest') self.assertEqual(vector_dest_param.type(), 'vectorDestination') self.assertEqual(vector_dest_param.dataType(), QgsProcessing.TypeVectorAnyGeometry) vector_dest_param = alg.parameterDefinition('param_vector_point_dest') self.assertEqual(vector_dest_param.type(), 'vectorDestination') self.assertEqual(vector_dest_param.dataType(), QgsProcessing.TypeVectorPoint) vector_dest_param = alg.parameterDefinition('param_vector_line_dest') self.assertEqual(vector_dest_param.type(), 'vectorDestination') self.assertEqual(vector_dest_param.dataType(), QgsProcessing.TypeVectorLine) vector_dest_param = alg.parameterDefinition( 'param_vector_polygon_dest') self.assertEqual(vector_dest_param.type(), 'vectorDestination') self.assertEqual(vector_dest_param.dataType(), QgsProcessing.TypeVectorPolygon) table_dest_param = alg.parameterDefinition('param_table_dest') self.assertEqual(table_dest_param.type(), 'vectorDestination') self.assertEqual(table_dest_param.dataType(), QgsProcessing.TypeVector) raster_dest_param = alg.parameterDefinition('param_raster_dest') self.assertEqual(raster_dest_param.type(), 'rasterDestination') folder_dest_param = alg.parameterDefinition('param_folder_dest') self.assertEqual(folder_dest_param.type(), 'folderDestination') file_dest_param = alg.parameterDefinition('param_file_dest') self.assertEqual(file_dest_param.type(), 'fileDestination') html_dest_param = alg.parameterDefinition('param_html_dest') self.assertEqual(html_dest_param.type(), 'fileDestination') self.assertEqual(html_dest_param.fileFilter(), 'HTML Files (*.html)') self.assertEqual(html_dest_param.defaultFileExtension(), 'html') csv_dest_param = alg.parameterDefinition('param_csv_dest') self.assertEqual(csv_dest_param.type(), 'fileDestination') self.assertEqual(csv_dest_param.fileFilter(), 'CSV Files (*.csv)') self.assertEqual(csv_dest_param.defaultFileExtension(), 'csv') img_dest_param = alg.parameterDefinition('param_img_dest') self.assertEqual(img_dest_param.type(), 'fileDestination') self.assertEqual(img_dest_param.fileFilter(), 'PNG Files (*.png);; JPG Files (*.jpg *.jpeg)') self.assertEqual(img_dest_param.defaultFileExtension(), 'png')
def testScriptParsing(self): # pylint: disable=too-many-locals,too-many-statements """ Test script file parsing """ alg = RAlgorithm(description_file=os.path.join(test_data_path, 'test_algorithm_1.rsx')) alg.initAlgorithm() self.assertFalse(alg.error) self.assertEqual(alg.name(), 'test_algorithm_1') self.assertEqual(alg.displayName(), 'test algorithm 1') self.assertIn('test_algorithm_1.rsx', 'test_algorithm_1.rsx') self.assertTrue(alg.show_plots) self.assertFalse(alg.use_raster_package) self.assertTrue(alg.pass_file_names) alg = RAlgorithm(description_file=os.path.join(test_data_path, 'test_algorithm_2.rsx')) alg.initAlgorithm() self.assertFalse(alg.error) self.assertEqual(alg.name(), 'mytest') self.assertEqual(alg.displayName(), 'my test') self.assertEqual(alg.group(), 'my group') self.assertEqual(alg.groupId(), 'my group') self.assertFalse(alg.show_plots) self.assertTrue(alg.use_raster_package) self.assertFalse(alg.pass_file_names) # test that inputs were created correctly raster_param = alg.parameterDefinition('in_raster') self.assertEqual(raster_param.type(), 'raster') vector_param = alg.parameterDefinition('in_vector') self.assertEqual(vector_param.type(), 'source') field_param = alg.parameterDefinition('in_field') self.assertEqual(field_param.type(), 'field') self.assertEqual(field_param.parentLayerParameterName(), 'in_vector') extent_param = alg.parameterDefinition('in_extent') self.assertEqual(extent_param.type(), 'extent') string_param = alg.parameterDefinition('in_string') self.assertEqual(string_param.type(), 'string') file_param = alg.parameterDefinition('in_file') self.assertEqual(file_param.type(), 'file') number_param = alg.parameterDefinition('in_number') self.assertEqual(number_param.type(), 'number') self.assertEqual(number_param.dataType(), QgsProcessingParameterNumber.Double) enum_param = alg.parameterDefinition('in_enum') self.assertEqual(enum_param.type(), 'enum') enum_param = alg.parameterDefinition('in_enum2') self.assertEqual(enum_param.type(), 'enum') self.assertEqual(enum_param.options(), ['normal', 'log10', 'ln', 'sqrt', 'exp']) bool_param = alg.parameterDefinition('in_bool') self.assertEqual(bool_param.type(), 'boolean') # outputs vector_output = alg.outputDefinition('out_vector') self.assertEqual(vector_output.type(), 'outputVector') self.assertEqual(vector_output.dataType(), QgsProcessing.TypeVectorAnyGeometry) vector_dest_param = alg.parameterDefinition('param_vector_dest') self.assertEqual(vector_dest_param.type(), 'vectorDestination') self.assertEqual(vector_dest_param.dataType(), QgsProcessing.TypeVectorAnyGeometry) table_output = alg.outputDefinition('out_table') self.assertEqual(table_output.type(), 'outputVector') self.assertEqual(table_output.dataType(), QgsProcessing.TypeVector) table_dest_param = alg.parameterDefinition('param_table_dest') self.assertEqual(table_dest_param.type(), 'vectorDestination') self.assertEqual(table_dest_param.dataType(), QgsProcessing.TypeVector) vector_dest_param = alg.parameterDefinition('param_vector_dest2') self.assertEqual(vector_dest_param.type(), 'vectorDestination') self.assertEqual(vector_dest_param.dataType(), QgsProcessing.TypeVectorAnyGeometry) vector_dest_param = alg.parameterDefinition('param_vector_point_dest') self.assertEqual(vector_dest_param.type(), 'vectorDestination') self.assertEqual(vector_dest_param.dataType(), QgsProcessing.TypeVectorPoint) vector_dest_param = alg.parameterDefinition('param_vector_line_dest') self.assertEqual(vector_dest_param.type(), 'vectorDestination') self.assertEqual(vector_dest_param.dataType(), QgsProcessing.TypeVectorLine) vector_dest_param = alg.parameterDefinition( 'param_vector_polygon_dest') self.assertEqual(vector_dest_param.type(), 'vectorDestination') self.assertEqual(vector_dest_param.dataType(), QgsProcessing.TypeVectorPolygon) raster_output = alg.outputDefinition('out_raster') self.assertEqual(raster_output.type(), 'outputRaster') raster_dest_param = alg.parameterDefinition('param_raster_dest') self.assertEqual(raster_dest_param.type(), 'rasterDestination') number_output = alg.outputDefinition('out_number') self.assertEqual(number_output.type(), 'outputNumber') string_output = alg.outputDefinition('out_string') self.assertEqual(string_output.type(), 'outputString') layer_output = alg.outputDefinition('out_layer') self.assertEqual(layer_output.type(), 'outputLayer') folder_output = alg.outputDefinition('out_folder') self.assertEqual(folder_output.type(), 'outputFolder') folder_dest_param = alg.parameterDefinition('param_folder_dest') self.assertEqual(folder_dest_param.type(), 'folderDestination') html_output = alg.outputDefinition('out_html') self.assertEqual(html_output.type(), 'outputHtml') html_dest_param = alg.parameterDefinition('param_html_dest') self.assertEqual(html_dest_param.type(), 'fileDestination')