Exemplo n.º 1
0
    def test_post_processor(self):
        """Test for running post processor."""
        impact_layer = load_test_vector_layer(
            'impact',
            'indivisible_polygon_impact.geojson',
            clone_to_memory=True)

        impact_layer.keywords['hazard_keywords'] = {
            'classification': 'flood_hazard_classes'
        }
        impact_layer.keywords['exposure_keywords'] = {
            'exposure': 'structure',
        }

        def debug_layer(layer, add_to_datastore):
            """Monkey patching because we can't check inasafe_fields.

            :param layer: The layer.
            :type layer: QgsVectorLayer

            :param add_to_datastore: Flag
            :type add_to_datastore: bool
            """
            # We do nothing here.
            return layer, add_to_datastore

        impact_function = ImpactFunction()
        impact_function.debug_layer = debug_layer

        impact_function.post_process(impact_layer)

        used_post_processors = [
            post_processor_size,
            post_processor_male,
            post_processor_female,
            post_processor_youth,
            post_processor_adult,
            post_processor_elderly,
        ]

        # Check if new field is added
        impact_fields = impact_layer.dataProvider().fieldNameMap().keys()
        for post_processor in used_post_processors:
            # noinspection PyTypeChecker
            for output_value in post_processor['output'].values():
                field_name = output_value['value']['field_name']
                self.assertIn(field_name, impact_fields)
        print_attribute_table(impact_layer, 1)
Exemplo n.º 2
0
    def test_post_processor(self):
        """Test for running post processor."""
        impact_layer = load_test_vector_layer(
            'impact',
            'indivisible_polygon_impact.geojson',
            clone_to_memory=True)

        impact_layer.keywords['hazard_keywords'] = {
            'classification': 'flood_hazard_classes'
        }
        impact_layer.keywords['exposure_keywords'] = {
            'exposure': 'structure',
        }

        def debug_layer(layer, add_to_datastore):
            """Monkey patching because we can't check inasafe_fields.

            :param layer: The layer.
            :type layer: QgsVectorLayer

            :param add_to_datastore: Flag
            :type add_to_datastore: bool
            """
            # We do nothing here.
            return layer, add_to_datastore

        impact_function = ImpactFunction()
        impact_function.debug_layer = debug_layer

        impact_function.post_process(impact_layer)

        used_post_processors = [
            post_processor_size,
            post_processor_male,
            post_processor_female,
            post_processor_youth,
            post_processor_adult,
            post_processor_elderly,
        ]

        # Check if new field is added
        impact_fields = impact_layer.dataProvider().fieldNameMap().keys()
        for post_processor in used_post_processors:
            # noinspection PyTypeChecker
            for output_value in post_processor['output'].values():
                field_name = output_value['value']['field_name']
                self.assertIn(field_name, impact_fields)
        print_attribute_table(impact_layer, 1)