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)
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))
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})
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)
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']])