class SimpleWashoffTest(unittest.TestCase):
    """Test WASHOFF section"""


    def test_one_washoff(self):
        """Test all options"""
        test_text = "Residential      TSS              EXP        0.1      1        0        0  "
        self.my_options = Washoff()
        self.my_options.set_text(test_text)
        # --Test get_text through matches
        actual_text = self.my_options.get_text()  # display purpose
        assert self.my_options.matches(test_text)

    def test_washoff_section(self):
        """Test WASHOFF section"""
        test_text = r"""
[WASHOFF]
;;                                                               Clean.   BMP
;;LandUse          Pollutant        Function   Coeff1   Coeff2   Effic.   Effic.
;;------------------------------------------------------------------------------
  Residential      TSS              EXP        0.1      1        0        0
  Residential      Lead             EMC        0        0        0        0
  Undeveloped      TSS              EXP        0.1      0.7      0        0
  Undeveloped      Lead             EMC        0        0        0        0
        """
        from_text = Project()
        from_text.set_text(test_text)
        project_section = from_text.washoff
        assert Section.match_omit(project_section.get_text(), test_text, " \t-;\n")
class SimpleWashoffTest(unittest.TestCase):
    """Test WASHOFF section"""
    def test_one_washoff(self):
        """Test all options"""
        test_text = "Residential      TSS              EXP        0.1      1        0        0  "
        self.my_options = Washoff()
        self.my_options.set_text(test_text)
        # --Test get_text through matches
        actual_text = self.my_options.get_text()  # display purpose
        assert self.my_options.matches(test_text)

    def test_washoff_section(self):
        """Test WASHOFF section"""
        test_text = r"""
[WASHOFF]
;;                                                               Clean.   BMP
;;LandUse          Pollutant        Function   Coeff1   Coeff2   Effic.   Effic.
;;------------------------------------------------------------------------------
  Residential      TSS              EXP        0.1      1        0        0
  Residential      Lead             EMC        0        0        0        0
  Undeveloped      TSS              EXP        0.1      0.7      0        0
  Undeveloped      Lead             EMC        0        0        0        0
        """
        from_text = Project()
        from_text.set_text(test_text)
        project_section = from_text.washoff
        assert Section.match_omit(project_section.get_text(), test_text,
                                  " \t-;\n")
 def test_one_washoff(self):
     """Test all options"""
     test_text = "Residential      TSS              EXP        0.1      1        0        0  "
     self.my_options = Washoff()
     self.my_options.set_text(test_text)
     # --Test get_text through matches
     actual_text = self.my_options.get_text()  # display purpose
     assert self.my_options.matches(test_text)
 def test_one_washoff(self):
     """Test all options"""
     test_text = "Residential      TSS              EXP        0.1      1        0        0  "
     self.my_options = Washoff()
     self.my_options.set_text(test_text)
     # --Test get_text through matches
     actual_text = self.my_options.get_text()  # display purpose
     assert self.my_options.matches(test_text)
Esempio n. 5
0
 def cmdOK_Clicked(self):
     section = self._main_form.project.landuses
     land_uses_list = section.value[0:]
     for land_use in land_uses_list:
         if land_use.land_use_name == self.land_use_id:
             # put this back in place
             land_use.land_use_name = self.tblGeneral.item(0, 0).text()
             land_use.comment = self.tblGeneral.item(1, 0).text()
             land_use.last_swept = self.tblGeneral.item(3, 0).text()
             land_use.street_sweeping_availability = self.tblGeneral.item(
                 4, 0).text()
             land_use.street_sweeping_interval = self.tblGeneral.item(
                 5, 0).text()
     section = self._main_form.project.buildup
     buildup_list = section.value[0:]
     pollutant_count = -1
     for pollutant in self.local_pollutant_list:
         pollutant_count += 1
         buildup_found = False
         for buildup in buildup_list:
             if buildup.land_use_name == self.land_use_id and pollutant == buildup.pollutant:
                 # put this back in place
                 buildup_found = True
                 combobox = self.tblBuildup.cellWidget(0, pollutant_count)
                 buildup.function = BuildupFunction[combobox.currentText()]
                 buildup.max_buildup = self.tblBuildup.item(
                     1, pollutant_count).text()
                 buildup.rate_constant = self.tblBuildup.item(
                     2, pollutant_count).text()
                 buildup.power_sat_constant = self.tblBuildup.item(
                     3, pollutant_count).text()
                 combobox = self.tblBuildup.cellWidget(4, pollutant_count)
                 buildup.normalizer = Normalizer[combobox.currentText()]
                 buildup.scaling_factor = self.tblBuildup.item(
                     5, pollutant_count).text()
                 combobox = self.tblBuildup.cellWidget(6, pollutant_count)
                 buildup.timeseries = combobox.currentText()
         if not buildup_found:
             # add new record
             new_buildup = Buildup()
             new_buildup.land_use_name = self.land_use_id
             new_buildup.pollutant = pollutant
             combobox = self.tblBuildup.cellWidget(0, pollutant_count)
             new_buildup.function = BuildupFunction[combobox.currentText()]
             new_buildup.max_buildup = self.tblBuildup.item(
                 1, pollutant_count).text()
             new_buildup.rate_constant = self.tblBuildup.item(
                 2, pollutant_count).text()
             new_buildup.power_sat_constant = self.tblBuildup.item(
                 3, pollutant_count).text()
             combobox = self.tblBuildup.cellWidget(4, pollutant_count)
             new_buildup.normalizer = Normalizer[combobox.currentText()]
             new_buildup.scaling_factor = self.tblBuildup.item(
                 5, pollutant_count).text()
             combobox = self.tblBuildup.cellWidget(6, pollutant_count)
             new_buildup.timeseries = combobox.currentText()
             if section.value == '':
                 section.value = []
             section.value.append(new_buildup)
     section = self._main_form.project.find_section("WASHOFF")
     washoff_list = section.value[0:]
     pollutant_count = -1
     for pollutant in self.local_pollutant_list:
         pollutant_count += 1
         washoff_found = False
         for washoff in washoff_list:
             if washoff.land_use_name == self.land_use_id and pollutant == washoff.pollutant:
                 # put this back in place
                 washoff_found = True
                 combobox = self.tblWashoff.cellWidget(0, pollutant_count)
                 washoff.function = WashoffFunction[combobox.currentText()]
                 washoff.coefficient = self.tblWashoff.item(
                     1, pollutant_count).text()
                 washoff.exponent = self.tblWashoff.item(
                     2, pollutant_count).text()
                 washoff.cleaning_efficiency = self.tblWashoff.item(
                     3, pollutant_count).text()
                 washoff.bmp_efficiency = self.tblWashoff.item(
                     4, pollutant_count).text()
         if not washoff_found:
             # add new record
             new_washoff = Washoff()
             new_washoff.land_use_name = self.land_use_id
             new_washoff.pollutant = pollutant
             combobox = self.tblWashoff.cellWidget(0, pollutant_count)
             new_washoff.function = WashoffFunction[combobox.currentText()]
             new_washoff.coefficient = self.tblWashoff.item(
                 1, pollutant_count).text()
             new_washoff.exponent = self.tblWashoff.item(
                 2, pollutant_count).text()
             new_washoff.cleaning_efficiency = self.tblWashoff.item(
                 3, pollutant_count).text()
             new_washoff.bmp_efficiency = self.tblWashoff.item(
                 4, pollutant_count).text()
             if section.value == '':
                 section.value = []
             section.value.append(new_washoff)
     self.close()
    def set_from(self, land_use):
        if not isinstance(land_use, Landuse):
            land_use = self.section.value[land_use]
        if isinstance(land_use, Landuse):
            # this is the land_use we want to edit
            self.editing_item = land_use
            led = QLineEdit(land_use.name)
            self.tblGeneral.setItem(0,0,QTableWidgetItem(led.text()))
            led = QLineEdit(land_use.comment)
            self.tblGeneral.setItem(1,0,QTableWidgetItem(led.text()))
            led = QLineEdit(land_use.last_swept)
            self.tblGeneral.setItem(3,0,QTableWidgetItem(led.text()))
            led = QLineEdit(land_use.street_sweeping_availability)
            self.tblGeneral.setItem(4,0,QTableWidgetItem(led.text()))
            led = QLineEdit(land_use.street_sweeping_interval)
            self.tblGeneral.setItem(5,0,QTableWidgetItem(led.text()))
            self.tblGeneral.setCurrentCell(0,0)
            local_column = -1
            for pollutant in self.local_pollutant_list:
                local_column += 1
                pollutant_found = False
                for buildup in self.project.buildup.value:
                    if buildup.land_use_name == land_use.name and  buildup.pollutant == pollutant:
                        # this is the land_use we want to edit
                        pollutant_found = True
                        break
                if not pollutant_found:
                    buildup = Buildup()
                    buildup.land_use_name = land_use.name
                    buildup.pollutant = pollutant
                    self.project.buildup.value.append(buildup)

                combobox = QComboBox()
                ui.convenience.set_combo_items(type(buildup.function), combobox)
                ui.convenience.set_combo(combobox, buildup.function)  # BuildupFunction.POW
                self.tblBuildup.setCellWidget(0, local_column, combobox)
                led = QLineEdit(buildup.max_buildup)
                self.tblBuildup.setItem(1, local_column,QTableWidgetItem(led.text()))
                led = QLineEdit(buildup.rate_constant)
                self.tblBuildup.setItem(2, local_column,QTableWidgetItem(led.text()))
                led = QLineEdit(buildup.power_sat_constant)
                self.tblBuildup.setItem(3, local_column,QTableWidgetItem(led.text()))
                combobox = QComboBox()
                ui.convenience.set_combo_items(type(buildup.normalizer), combobox)
                ui.convenience.set_combo(combobox, buildup.normalizer)   # Normalizer.AREA
                self.tblBuildup.setCellWidget(4, local_column, combobox)
                led = QLineEdit(buildup.scaling_factor)
                self.tblBuildup.setItem(5, local_column, QTableWidgetItem(led.text()))
                combobox = QComboBox()
                combobox.addItem('')
                selected_index = 0
                for value in self.project.timeseries.value:
                    combobox.addItem(value.name)
                    if buildup.timeseries == value.name:
                        selected_index = int(combobox.count())-1
                combobox.setCurrentIndex(selected_index)
                self.tblBuildup.setCellWidget(6, local_column, combobox)
            self.tblBuildup.setCurrentCell(0,0)
            local_column = -1
            for pollutant in self.local_pollutant_list:
                local_column += 1
                pollutant_found = False
                for washoff in self.project.washoff.value:
                    if washoff.land_use_name == land_use.name and washoff.pollutant == pollutant:
                        # this is the land_use we want to edit
                        pollutant_found = True
                        break
                if not pollutant_found:
                    washoff = Washoff()
                    washoff.land_use_name = land_use.name
                    washoff.pollutant = pollutant
                    self.project.washoff.value.append(washoff)

                combobox = QComboBox()
                ui.convenience.set_combo_items(type(washoff.function), combobox)
                ui.convenience.set_combo(combobox, washoff.function)  # WashoffFunction.EXP
                self.tblWashoff.setCellWidget(0,local_column, combobox)
                led = QLineEdit(washoff.coefficient)
                self.tblWashoff.setItem(1,local_column,QTableWidgetItem(led.text()))
                led = QLineEdit(washoff.exponent)
                self.tblWashoff.setItem(2,local_column,QTableWidgetItem(led.text()))
                led = QLineEdit(washoff.cleaning_efficiency)
                self.tblWashoff.setItem(3,local_column,QTableWidgetItem(led.text()))
                led = QLineEdit(washoff.bmp_efficiency)
                self.tblWashoff.setItem(4,local_column,QTableWidgetItem(led.text()))
            self.tblWashoff.setCurrentCell(0,0)
    def cmdOK_Clicked(self):
        new_name = self.tblGeneral.item(0,0).text()
        pollutant_count = -1
        for pollutant in self.local_pollutant_list:
            pollutant_count += 1
            buildup_found = False
            for buildup in self.project.buildup.value:
                if buildup.land_use_name == self.editing_item.name and pollutant == buildup.pollutant:
                    # put this back in place
                    buildup_found = True

                    orig_land_use_name = buildup.land_use_name
                    orig_function = buildup.function
                    orig_max_buildup = buildup.max_buildup
                    orig_rate_constant = buildup.rate_constant
                    orig_power_sat_constant = buildup.power_sat_constant
                    orig_normalizer = buildup.normalizer
                    orig_scaling_factor = buildup.scaling_factor
                    orig_timeseries = buildup.timeseries

                    combobox = self.tblBuildup.cellWidget(0,pollutant_count)
                    buildup.land_use_name = new_name
                    buildup.function = BuildupFunction[combobox.currentText()]
                    buildup.max_buildup = self.tblBuildup.item(1,pollutant_count).text()
                    buildup.rate_constant = self.tblBuildup.item(2,pollutant_count).text()
                    buildup.power_sat_constant = self.tblBuildup.item(3,pollutant_count).text()
                    combobox = self.tblBuildup.cellWidget(4,pollutant_count)
                    buildup.normalizer = Normalizer[combobox.currentText()]
                    buildup.scaling_factor = self.tblBuildup.item(5,pollutant_count).text()
                    combobox = self.tblBuildup.cellWidget(6,pollutant_count)
                    buildup.timeseries = combobox.currentText()

                    if orig_land_use_name != buildup.land_use_name or \
                        orig_function != buildup.function or \
                        orig_max_buildup != buildup.max_buildup or \
                        orig_rate_constant != buildup.rate_constant or \
                        orig_power_sat_constant != buildup.power_sat_constant or \
                        orig_normalizer != buildup.normalizer or \
                        orig_scaling_factor != buildup.scaling_factor or \
                        orig_timeseries != buildup.timeseries and buildup.function == BuildupFunction.EXP:
                        self._main_form.mark_project_as_unsaved()

            if not buildup_found:
                # add new record
                new_buildup = Buildup()
                new_buildup.land_use_name = new_name
                new_buildup.pollutant = pollutant
                combobox = self.tblBuildup.cellWidget(0,pollutant_count)
                new_buildup.function = BuildupFunction[combobox.currentText()]
                new_buildup.max_buildup = self.tblBuildup.item(1,pollutant_count).text()
                new_buildup.rate_constant = self.tblBuildup.item(2,pollutant_count).text()
                new_buildup.power_sat_constant = self.tblBuildup.item(3,pollutant_count).text()
                combobox = self.tblBuildup.cellWidget(4,pollutant_count)
                new_buildup.normalizer = Normalizer[combobox.currentText()]
                new_buildup.scaling_factor = self.tblBuildup.item(5,pollutant_count).text()
                combobox = self.tblBuildup.cellWidget(6,pollutant_count)
                new_buildup.timeseries = combobox.currentText()
                if self.project.buildup.value == '':
                    self.project.buildup.value = []
                self.project.buildup.value.append(new_buildup)
                self._main_form.mark_project_as_unsaved()

        pollutant_count = -1
        for pollutant in self.local_pollutant_list:
            pollutant_count += 1
            washoff_found = False
            for washoff in self.project.washoff.value:
                if washoff.land_use_name == self.editing_item.name and pollutant == washoff.pollutant:
                    # put this back in place
                    washoff_found = True

                    orig_land_use_name = washoff.land_use_name
                    orig_function = washoff.function
                    orig_coefficient = washoff.coefficient
                    orig_exponent = washoff.exponent
                    orig_cleaning_efficiency = washoff.cleaning_efficiency
                    orig_bmp_efficiency = washoff.bmp_efficiency

                    combobox = self.tblWashoff.cellWidget(0,pollutant_count)
                    washoff.land_use_name = new_name
                    washoff.function = WashoffFunction[combobox.currentText()]
                    washoff.coefficient = self.tblWashoff.item(1,pollutant_count).text()
                    washoff.exponent = self.tblWashoff.item(2,pollutant_count).text()
                    washoff.cleaning_efficiency = self.tblWashoff.item(3,pollutant_count).text()
                    washoff.bmp_efficiency = self.tblWashoff.item(4,pollutant_count).text()

                    if orig_land_use_name != washoff.land_use_name or \
                        orig_function != washoff.function or \
                        orig_coefficient != washoff.coefficient or \
                        orig_exponent != washoff.exponent or \
                        orig_cleaning_efficiency != washoff.cleaning_efficiency or \
                        orig_bmp_efficiency != washoff.bmp_efficiency:
                        self._main_form.mark_project_as_unsaved()

            if not washoff_found:
                # add new record
                new_washoff = Washoff()
                new_washoff.land_use_name = new_name
                new_washoff.pollutant = pollutant
                combobox = self.tblWashoff.cellWidget(0,pollutant_count)
                new_washoff.function = WashoffFunction[combobox.currentText()]
                new_washoff.coefficient = self.tblWashoff.item(1,pollutant_count).text()
                new_washoff.exponent = self.tblWashoff.item(2,pollutant_count).text()
                new_washoff.cleaning_efficiency = self.tblWashoff.item(3,pollutant_count).text()
                new_washoff.bmp_efficiency = self.tblWashoff.item(4,pollutant_count).text()
                if self.project.washoff.value == '':
                    self.project.washoff.value = []
                self.project.washoff.value.append(new_washoff)
                self._main_form.mark_project_as_unsaved()

        # put this back in place
        orig_name = self.editing_item.name
        orig_comment = self.editing_item.comment
        orig_last_swept = self.editing_item.last_swept
        orig_street_sweeping_availability = self.editing_item.street_sweeping_availability
        orig_street_sweeping_interval = self.editing_item.street_sweeping_interval

        self.editing_item.name = new_name
        self.editing_item.comment = self.tblGeneral.item(1,0).text()
        self.editing_item.last_swept = self.tblGeneral.item(3,0).text()
        self.editing_item.street_sweeping_availability = self.tblGeneral.item(4,0).text()
        self.editing_item.street_sweeping_interval = self.tblGeneral.item(5,0).text()

        if orig_name != self.editing_item.name or \
            orig_comment != self.editing_item.comment or \
            orig_last_swept != self.editing_item.last_swept or \
            orig_street_sweeping_availability != self.editing_item.street_sweeping_availability or \
            orig_street_sweeping_interval != self.editing_item.street_sweeping_interval:
            self._main_form.mark_project_as_unsaved()

        if self.new_item:  # We are editing a newly created item and it needs to be added to the project
            self._main_form.add_item(self.new_item)
            self._main_form.mark_project_as_unsaved()
        else:
            pass
            # TODO: self._main_form.edited_?

        self.close()