Esempio n. 1
0
 def testFilter(self):
     """
     Test filtering inside the dialog
     """
     layer = make_scenario_layer()
     mb_electorate_layer = make_meshblock_electorate_layer()
     registry = ScenarioRegistry(
         source_layer=layer,
         id_field='id',
         name_field='name',
         meshblock_electorate_layer=mb_electorate_layer)
     dlg = ScenarioSelectionDialog(scenario_registry=registry)
     self.assertEqual(
         [dlg.list.item(r).text() for r in range(dlg.list.count())],
         ['Scenario 1', 'scenario 3', 'scenario B'])
     dlg.search.setText('eee')  # connection not fired on first change?
     dlg.search.setText('3')
     self.assertEqual([
         dlg.list.item(r).text() for r in range(dlg.list.count())
         if not dlg.list.item(r).isHidden()
     ], ['scenario 3'])
     dlg.search.setText('B')
     self.assertEqual([
         dlg.list.item(r).text() for r in range(dlg.list.count())
         if not dlg.list.item(r).isHidden()
     ], ['scenario B'])
     # case insensitive!
     dlg.search.setText('b')
     self.assertEqual([
         dlg.list.item(r).text() for r in range(dlg.list.count())
         if not dlg.list.item(r).isHidden()
     ], ['scenario B'])
    def testCreation(self):
        """
        Test creating a LinzMeshblockScenarioBridge
        """
        meshblock_layer = make_meshblock_layer()
        mb_electorate_layer = make_meshblock_electorate_layer()

        bridge = LinzMeshblockScenarioBridge(
            meshblock_layer=meshblock_layer,
            meshblock_scenario_layer=mb_electorate_layer,
            meshblock_number_field_name='MeshblockNumber')
        self.assertEqual(bridge.meshblock_layer, meshblock_layer)
        self.assertEqual(bridge.meshblock_scenario_layer, mb_electorate_layer)
Esempio n. 3
0
 def testConstruct(self):
     """
     Test creating dialog
     """
     layer = make_scenario_layer()
     mb_electorate_layer = make_meshblock_electorate_layer()
     registry = ScenarioRegistry(
         source_layer=layer,
         id_field='id',
         name_field='name',
         meshblock_electorate_layer=mb_electorate_layer)
     self.assertIsNotNone(
         ScenarioSelectionDialog(scenario_registry=registry))
Esempio n. 4
0
 def testAccept(self):
     """
     Test that accepting dialog
     """
     layer = make_scenario_layer()
     mb_electorate_layer = make_meshblock_electorate_layer()
     registry = ScenarioRegistry(
         source_layer=layer,
         id_field='id',
         name_field='name',
         meshblock_electorate_layer=mb_electorate_layer)
     dlg = ScenarioSelectionDialog(scenario_registry=registry)
     dlg.set_selected_scenario('d4')
     dlg.accept()
    def testMeshblockIds(self):
        """
        Test retrieving target meshblock feature ids for different scenarios
        """
        meshblock_layer = make_meshblock_layer()
        mb_electorate_layer = make_meshblock_electorate_layer()

        bridge = LinzMeshblockScenarioBridge(
            meshblock_layer=meshblock_layer,
            meshblock_scenario_layer=mb_electorate_layer,
            meshblock_number_field_name='MeshblockNumber')

        bridge.scenario = 1
        mb_ids = bridge.get_target_meshblock_ids_from_numbers([0, 1])
        self.assertEqual(mb_ids, {0: 3, 1: 4})
        bridge.scenario = 2
        mb_ids = bridge.get_target_meshblock_ids_from_numbers([0, 1])
        self.assertEqual(mb_ids, {0: 1, 1: 2})
Esempio n. 6
0
    def testPopulation(self):
        """
        Test that dialog is correctly populated from registry
        """
        layer = make_scenario_layer()
        mb_electorate_layer = make_meshblock_electorate_layer()
        registry = ScenarioRegistry(
            source_layer=layer,
            id_field='id',
            name_field='name',
            meshblock_electorate_layer=mb_electorate_layer)
        dlg = ScenarioSelectionDialog(scenario_registry=registry)
        self.assertEqual(
            [dlg.list.item(r).text() for r in range(dlg.list.count())],
            ['Scenario 1', 'scenario 3', 'scenario B'])

        # initial selection must be final scenario
        self.assertEqual(dlg.selected_scenario(), 2)
Esempio n. 7
0
    def testSelection(self):
        """
        Test setting/getting selected scenario
        """
        layer = make_scenario_layer()
        mb_electorate_layer = make_meshblock_electorate_layer()
        registry = ScenarioRegistry(
            source_layer=layer,
            id_field='id',
            name_field='name',
            meshblock_electorate_layer=mb_electorate_layer)
        dlg = ScenarioSelectionDialog(scenario_registry=registry)

        dlg.set_selected_scenario(1)
        self.assertEqual(dlg.selected_scenario(), 1)
        dlg.set_selected_scenario(2)
        self.assertEqual(dlg.selected_scenario(), 2)
        dlg.set_selected_scenario(3)
        self.assertEqual(dlg.selected_scenario(), 3)

        # nothing at all selected
        dlg.list.clearSelection()
        self.assertIsNone(dlg.selected_scenario())
    def testGetNewElectorates(self):
        """
        Test retrieving pending electorate changes
        """
        meshblock_layer = make_meshblock_layer()
        mb_electorate_layer = make_meshblock_electorate_layer()

        bridge = LinzMeshblockScenarioBridge(
            meshblock_layer=meshblock_layer,
            meshblock_scenario_layer=mb_electorate_layer,
            meshblock_number_field_name='MeshblockNumber')

        bridge.task = 'GN'
        bridge.scenario = 1
        # not editable
        new_electorates = bridge.get_new_electorates()
        self.assertEqual(new_electorates, {})
        # no changes in buffer
        self.assertTrue(meshblock_layer.startEditing())
        new_electorates = bridge.get_new_electorates()
        self.assertEqual(new_electorates, {})

        # add change
        features = [f for f in meshblock_layer.getFeatures()]  # pylint: disable=unnecessary-comprehension
        meshblock_layer.changeAttributeValues(features[0].id(), {1: 'c'})
        new_electorates = bridge.get_new_electorates()
        self.assertEqual(new_electorates, {0: 'c'})
        meshblock_layer.changeAttributeValues(features[0].id(), {1: 'd'})
        new_electorates = bridge.get_new_electorates()
        self.assertEqual(new_electorates, {0: 'd'})
        meshblock_layer.changeAttributeValues(features[1].id(), {1: 'c'})
        new_electorates = bridge.get_new_electorates()
        self.assertEqual(new_electorates, {0: 'd', 1: 'c'})

        # no saved changes in scenario yet!
        results = [f.attributes() for f in mb_electorate_layer.getFeatures()]
        self.assertEqual(results, [[1, 2, 0, 'a', 'x'], [2, 2, 1, 'b', 'y'],
                                   [3, 1, 0, 'c', 'z'], [4, 1, 1, 'd', 'zz']])

        bridge.meshblock_layer_saved()
        self.assertTrue(meshblock_layer.commitChanges())
        results = [f.attributes() for f in mb_electorate_layer.getFeatures()]
        self.assertEqual(results, [[1, 2, 0, 'a', 'x'], [2, 2, 1, 'b', 'y'],
                                   [3, 1, 0, 'd', 'z'], [4, 1, 1, 'c', 'zz']])
        new_electorates = bridge.get_new_electorates()
        self.assertEqual(new_electorates, {})

        # different scenario
        bridge.scenario = 2
        self.assertTrue(meshblock_layer.startEditing())
        meshblock_layer.changeAttributeValues(features[0].id(), {1: 'd'})
        meshblock_layer.changeAttributeValues(features[1].id(), {1: 'c'})
        results = [f.attributes() for f in mb_electorate_layer.getFeatures()]
        self.assertEqual(results, [[1, 2, 0, 'a', 'x'], [2, 2, 1, 'b', 'y'],
                                   [3, 1, 0, 'd', 'z'], [4, 1, 1, 'c', 'zz']])
        bridge.meshblock_layer_saved()
        self.assertTrue(meshblock_layer.commitChanges())
        results = [f.attributes() for f in mb_electorate_layer.getFeatures()]
        self.assertEqual(results, [[1, 2, 0, 'd', 'x'], [2, 2, 1, 'c', 'y'],
                                   [3, 1, 0, 'd', 'z'], [4, 1, 1, 'c', 'zz']])

        # different task
        bridge.task = 'GS'
        self.assertTrue(meshblock_layer.startEditing())
        meshblock_layer.changeAttributeValues(features[0].id(), {1: 'a'})
        meshblock_layer.changeAttributeValues(features[1].id(), {1: 'b'})
        results = [f.attributes() for f in mb_electorate_layer.getFeatures()]
        self.assertEqual(results, [[1, 2, 0, 'd', 'x'], [2, 2, 1, 'c', 'y'],
                                   [3, 1, 0, 'd', 'z'], [4, 1, 1, 'c', 'zz']])
        bridge.meshblock_layer_saved()
        self.assertTrue(meshblock_layer.commitChanges())
        results = [f.attributes() for f in mb_electorate_layer.getFeatures()]
        self.assertEqual(results, [[1, 2, 0, 'd', 'a'], [2, 2, 1, 'c', 'b'],
                                   [3, 1, 0, 'd', 'z'], [4, 1, 1, 'c', 'zz']])