def setUp(self):
     self.dataset_names = [
         "MUSR62260; Group; fwd; Asymmetry; MA",
         "MUSR62260; Group; bwd; Asymmetry; MA"
     ]
     self.view = BasicFittingView()
     self.view.show()
    def test_that_the_view_has_been_initialized_with_the_raw_data_option_shown_when_it_is_not_a_frequency_domain(
            self):
        self.view = BasicFittingView()
        self.view.show()

        self.assertTrue(not self.view.fit_function_options.fit_options_table.
                        isRowHidden(RAW_DATA_TABLE_ROW))
    def test_that_hide_evaluate_function_as_checkbox_will_hide_the_evaluate_function_table_row(
            self):
        self.view = BasicFittingView()
        self.view.hide_evaluate_function_as_checkbox()
        self.view.show()

        self.assertTrue(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                EVALUATE_AS_TABLE_ROW))
    def test_that_hide_exclude_range_checkbox_will_hide_the_exclude_range_table_row(
            self):
        self.view = BasicFittingView()
        self.view.hide_exclude_range_checkbox()
        self.view.show()

        self.assertTrue(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                EXCLUDE_RANGE_TABLE_ROW))
    def test_that_the_view_has_been_initialized_with_the_exclude_range_start_and_end_x_options_not_visible(
            self):
        self.view = BasicFittingView()
        self.view.show()

        self.assertTrue(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                EXCLUDE_START_X_TABLE_ROW))
        self.assertTrue(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                EXCLUDE_END_X_TABLE_ROW))
    def test_that_show_plot_guess_end_x_will_show_plot_guess_end_x_row(self):
        self.view = BasicFittingView()

        self.view.show_plot_guess_end_x(True)
        self.assertFalse(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                PLOT_GUESS_END_X))

        self.view.show_plot_guess_end_x(False)
        self.assertTrue(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                PLOT_GUESS_END_X))
    def test_that_show_plot_guess_points_will_show_plot_guess_points_row(self):
        self.view = BasicFittingView()

        self.view.show_plot_guess_points(True)
        self.assertFalse(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                PLOT_GUESS_POINTS))

        self.view.show_plot_guess_points(False)
        self.assertTrue(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                PLOT_GUESS_POINTS))
Exemplo n.º 8
0
    def __init__(self, context, parent):
        is_frequency_domain = isinstance(context, FrequencyDomainAnalysisContext)

        if is_frequency_domain:
            self.fitting_tab_view = BasicFittingView(parent)
            self.fitting_tab_view.hide_fit_raw_checkbox()
            self.fitting_tab_model = BasicFittingModel(context, context.fitting_context)
            self.fitting_tab_presenter = BasicFittingPresenter(self.fitting_tab_view, self.fitting_tab_model)
        else:
            self.fitting_tab_view = TFAsymmetryFittingView(parent)
            self.fitting_tab_view.set_start_and_end_x_labels("Time Start", "Time End")
            self.fitting_tab_model = TFAsymmetryFittingModel(context, context.fitting_context)
            self.fitting_tab_presenter = TFAsymmetryFittingPresenter(self.fitting_tab_view, self.fitting_tab_model)

        context.update_view_from_model_notifier.add_subscriber(
            self.fitting_tab_presenter.update_view_from_model_observer)
class BasicFittingViewTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        FrameworkManager.Instance()

    def setUp(self):
        self.dataset_names = [
            "MUSR62260; Group; fwd; Asymmetry; MA",
            "MUSR62260; Group; bwd; Asymmetry; MA"
        ]
        self.view = BasicFittingView()
        self.view.show()

    def tearDown(self):
        self.assertTrue(self.view.close())

    def test_that_the_plot_guess_checkbox_can_be_ticked_as_expected(self):
        self.view.plot_guess = True
        self.assertTrue(self.view.plot_guess)

    def test_that_enable_view_does_not_enable_the_tab_if_there_are_no_datasets_loaded(
            self):
        self.view.enable_view()
        self.assertTrue(not self.view.isEnabled())

    def test_that_enable_view_does_enable_the_tab_if_there_are_datasets_loaded(
            self):
        self.view.update_dataset_name_combo_box(self.dataset_names)
        self.view.enable_view()
        self.assertTrue(self.view.isEnabled())

    def test_that_the_undo_fit_button_can_be_enabled_as_expected_when_the_number_of_undos_is_above_zero(
            self):
        self.view.update_dataset_name_combo_box(self.dataset_names)
        self.view.enable_view()
        self.view.set_number_of_undos(2)
        self.assertTrue(self.view.fit_controls.undo_fit_button.isEnabled())

    def test_that_update_global_fit_status_label_will_display_no_fit_if_the_success_list_is_empty(
            self):
        success_list = []

        self.view.update_global_fit_status(success_list)

        self.assertEqual(self.view.fit_controls.global_fit_status_label.text(),
                         "No Fit")

    def test_that_update_global_fit_status_label_will_display_fit_successful_if_all_fits_are_successful(
            self):
        success_list = ["success"] * 5

        self.view.update_global_fit_status(success_list)

        self.assertEqual(self.view.fit_controls.global_fit_status_label.text(),
                         "Fit Successful")

    def test_that_update_global_fit_status_label_will_display_fits_failed_if_some_of_the_fits_fail(
            self):
        success_list = ["success", "success", "fail", "success", "fail"]

        self.view.update_global_fit_status(success_list)

        self.assertEqual(self.view.fit_controls.global_fit_status_label.text(),
                         "2 of 5 fits failed")

    def test_that_the_view_has_been_initialized_with_the_raw_data_option_shown_when_it_is_not_a_frequency_domain(
            self):
        self.view = BasicFittingView()
        self.view.show()

        self.assertTrue(not self.view.fit_function_options.fit_options_table.
                        isRowHidden(RAW_DATA_TABLE_ROW))

    def test_that_the_view_has_been_initialized_with_the_raw_data_option_hidden_when_it_is_a_frequency_domain(
            self):
        self.view = BasicFittingView()
        self.view.hide_fit_raw_checkbox()
        self.view.show()

        self.assertTrue(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                RAW_DATA_TABLE_ROW))

    def test_that_the_view_has_been_initialized_with_the_exclude_range_start_and_end_x_options_not_visible(
            self):
        self.view = BasicFittingView()
        self.view.show()

        self.assertTrue(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                EXCLUDE_START_X_TABLE_ROW))
        self.assertTrue(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                EXCLUDE_END_X_TABLE_ROW))

    def test_that_hide_exclude_range_checkbox_will_hide_the_exclude_range_table_row(
            self):
        self.view = BasicFittingView()
        self.view.hide_exclude_range_checkbox()
        self.view.show()

        self.assertTrue(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                EXCLUDE_RANGE_TABLE_ROW))

    def test_that_hide_evaluate_function_as_checkbox_will_hide_the_evaluate_function_table_row(
            self):
        self.view = BasicFittingView()
        self.view.hide_evaluate_function_as_checkbox()
        self.view.show()

        self.assertTrue(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                EVALUATE_AS_TABLE_ROW))

    def test_that_update_fit_status_labels_will_display_no_fit_if_the_success_list_is_empty(
            self):
        fit_status, chi_squared = "success", 1.1

        self.view.update_local_fit_status_and_chi_squared(
            fit_status, chi_squared)

        self.assertEqual(
            self.view.fit_function_options.fit_status_success_failure.text(),
            "Success")
        self.assertEqual(
            self.view.fit_function_options.fit_status_chi_squared.text(),
            "Chi squared: 1.1")

    def test_that_update_fit_status_labels_will_display_fit_successful_if_all_fits_are_successful(
            self):
        fit_status, chi_squared = None, 0.0

        self.view.update_local_fit_status_and_chi_squared(
            fit_status, chi_squared)

        self.assertEqual(
            self.view.fit_function_options.fit_status_success_failure.text(),
            "No Fit")
        self.assertEqual(
            self.view.fit_function_options.fit_status_chi_squared.text(),
            "Chi squared: 0.0")

    def test_that_update_fit_status_labels_will_display_fits_failed_if_some_of_the_fits_fail(
            self):
        fit_status, chi_squared = "failed for some reason", 2.2

        self.view.update_local_fit_status_and_chi_squared(
            fit_status, chi_squared)

        self.assertEqual(
            self.view.fit_function_options.fit_status_success_failure.text(),
            f"Failure: {fit_status}")
        self.assertEqual(
            self.view.fit_function_options.fit_status_chi_squared.text(),
            "Chi squared: 2.2")

    def test_that_set_datasets_in_function_browser_will_set_the_datasets_in_the_function_browser(
            self):
        dataset_names = ["Name1", "Name2", "Name3"]

        self.view.set_datasets_in_function_browser(dataset_names)

        self.assertEqual(self.view.fit_function_options.number_of_datasets(),
                         3)

    def test_that_set_current_dataset_index_will_set_the_current_dataset_index_in_the_function_browser(
            self):
        dataset_names = ["Name1", "Name2", "Name3"]

        self.view.set_datasets_in_function_browser(dataset_names)
        self.view.set_current_dataset_index(2)

        self.assertEqual(
            self.view.fit_function_options.function_browser.getCurrentDataset(
            ), 2)

    def test_that_update_function_browser_parameters_will_update_the_parameters_of_the_function_for_single_fit(
            self):
        old_function = "name=FlatBackground,A0=0"

        self.view.fit_function_options.function_browser.setFunction(
            old_function)
        self.assertEqual(str(self.view.fit_object), old_function)

        updated_function = self.view.fit_object.setParameter("A0", 1.0)

        self.view.update_fit_function(updated_function)
        self.assertEqual(str(self.view.fit_object), str(updated_function))

    def test_that_update_function_browser_parameters_will_clear_the_function_if_the_function_provided_is_none(
            self):
        old_function = "name=FlatBackground,A0=0"

        self.view.fit_function_options.function_browser.setFunction(
            old_function)
        self.assertEqual(str(self.view.fit_object), old_function)

        self.view.update_fit_function(None)
        self.assertEqual(self.view.fit_object, None)

    def test_that_it_is_possible_to_set_the_start_x_to_a_different_value(self):
        new_value = 5.0

        self.view.start_x = new_value

        self.assertEqual(self.view.start_x, new_value)

    def test_that_it_is_possible_to_set_the_end_x_to_a_different_value(self):
        new_value = 5.0

        self.view.end_x = new_value

        self.assertEqual(self.view.end_x, new_value)

    def test_that_the_fit_to_raw_checkbox_value_can_be_changed_as_expected(
            self):
        self.view.fit_to_raw = False
        self.assertTrue(not self.view.fit_to_raw)

        self.view.fit_to_raw = True
        self.assertTrue(self.view.fit_to_raw)

    def test_that_the_function_name_can_be_changed_as_expected(self):
        new_function_name = "Test Function Name"

        self.view.function_name = new_function_name

        self.assertEqual(self.view.function_name, new_function_name)

    def test_that_show_plot_guess_points_will_show_plot_guess_points_row(self):
        self.view = BasicFittingView()

        self.view.show_plot_guess_points(True)
        self.assertFalse(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                PLOT_GUESS_POINTS))

        self.view.show_plot_guess_points(False)
        self.assertTrue(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                PLOT_GUESS_POINTS))

    def test_that_show_plot_guess_start_x_will_show_plot_guess_start_x_row(
            self):
        self.view = BasicFittingView()

        self.view.show_plot_guess_start_x(True)
        self.assertFalse(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                PLOT_GUESS_START_X))

        self.view.show_plot_guess_start_x(False)
        self.assertTrue(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                PLOT_GUESS_START_X))

    def test_that_show_plot_guess_end_x_will_show_plot_guess_end_x_row(self):
        self.view = BasicFittingView()

        self.view.show_plot_guess_end_x(True)
        self.assertFalse(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                PLOT_GUESS_END_X))

        self.view.show_plot_guess_end_x(False)
        self.assertTrue(
            self.view.fit_function_options.fit_options_table.isRowHidden(
                PLOT_GUESS_END_X))