Beispiel #1
0
 def _get_state_gui_model():
     user_file_path = create_user_file(sample_user_file)
     user_file_reader = UserFileReader(user_file_path)
     user_file_items = user_file_reader.read_user_file()
     if os.path.exists(user_file_path):
         os.remove(user_file_path)
     return StateGuiModel(user_file_items)
Beispiel #2
0
    def test_state_can_be_created_from_valid_user_file_with_data_information(self):
        # Arrange
        file_information = SANSFileInformationMock(instrument=SANSInstrument.SANS2D, run_number=22024)
        data_builder = get_data_builder(SANSFacility.ISIS, file_information)
        data_builder.set_sample_scatter("SANS2D00022024")
        data_builder.set_sample_scatter_period(3)
        data_state = data_builder.build()

        user_file_path = create_user_file(sample_user_file)

        parser = UserFileReaderAdapter(user_file_name=user_file_path, data_info=data_state)
        state = parser.get_all_states()

        # Assert
        self._assert_data(state)
        self._assert_move(state)
        self._assert_mask(state)
        self._assert_reduction(state)
        self._assert_wavelength(state)
        self._assert_scale(state)
        self._assert_adjustment(state)
        self._assert_convert_to_q(state)

        # clean up
        if os.path.exists(user_file_path):
            os.remove(user_file_path)
Beispiel #3
0
    def test_that_will_load_user_file(self):
        # Setup self.presenter.and mock view
        user_file_path = create_user_file(sample_user_file)
        view, settings_diagnostic_tab, _ = create_mock_view(user_file_path)

        self.presenter.set_view(view)

        # Mock out methods which should be called
        self.presenter._beam_centre_presenter = mock.Mock()
        self.presenter._masking_table_presenter = mock.Mock()
        self.presenter.update_view_from_model = mock.Mock()
        self.presenter._workspace_diagnostic_presenter = mock.Mock()

        with mock.patch(
                "sans.gui_logic.presenter.run_tab_presenter.FileLoading"
        ) as mocked_loader:
            mocked_loader.load_user_file.return_value = AllStates()
            self.presenter.on_user_file_load()
            mocked_loader.load_user_file.assert_called_once_with(
                file_path=user_file_path, file_information=mock.ANY)

        self.presenter._beam_centre_presenter.update_centre_positions.assert_called(
        )
        self.presenter._beam_centre_presenter.on_update_rows.assert_called()
        self.presenter._masking_table_presenter.on_update_rows.assert_called()
        self.presenter._workspace_diagnostic_presenter.on_user_file_loadassert_called(
        )

        self.presenter.update_view_from_model.assert_called()

        # Assert
        # Note that the event slices are not set in the user file

        # clean up
        remove_file(user_file_path)
Beispiel #4
0
    def test_state_can_be_created_from_valid_user_file_with_data_information(self):
        # Arrange
        file_information = SANSFileInformationMock(instrument=SANSInstrument.SANS2D, run_number=22024)
        data_builder = get_data_builder(SANSFacility.ISIS, file_information,
                                        user_file="USER_SANS2D_154E_2p4_4m_M3_Xpress_8mm_SampleChanger_FRONT.txt")
        data_builder.set_sample_scatter("SANS2D00022024")
        data_builder.set_sample_scatter_period(3)
        data_state = data_builder.build()

        director = StateDirectorISIS(data_state, file_information)
        user_file_path = create_user_file(sample_user_file)

        director.set_user_file(user_file_path)
        state = director.construct()

        # Assert
        self._assert_data(state)
        self._assert_move(state)
        self._assert_mask(state)
        self._assert_reduction(state)
        self._assert_wavelength(state)
        self._assert_scale(state)
        self._assert_adjustment(state)
        self._assert_convert_to_q(state)

        # clean up
        if os.path.exists(user_file_path):
            os.remove(user_file_path)
    def test_that_gets_pre_processing_options_are_valid_and_other_options_are_empty(
            self):
        # Arrange
        presenter = MainPresenter(SANSFacility.ISIS)
        content = "# MANTID_BATCH_FILE add more text here\n" \
                  "sample_sans,SANS2D00022024,sample_trans,SANS2D00022048," \
                  "sample_direct_beam,SANS2D00022048,output_as,test_file\n" \
                  "sample_sans,SANS2D00022024,output_as,test_file2\n"
        batch_file_path = save_to_csv(content)
        user_file_path = create_user_file(sample_user_file)
        view = create_mock_view2(user_file_path, batch_file_path)
        presenter.set_view(view)

        # Act
        pre_processing_options = presenter.getProcessingOptions()

        # Assert
        expected = {'UseOptimizations':'1','OutputMode':'PublishToADS','PlotResults':'1', \
                    'OutputGraph':'SANS-Latest'}
        self.assertEqual(expected, pre_processing_options)
        self.assertFalse(presenter.getPreprocessingOptions())
        self.assertFalse(presenter.getPostprocessingOptionsAsString())

        # Clean up
        remove_file(sample_user_file)
        remove_file(user_file_path)
Beispiel #6
0
    def test_state_can_be_created_from_valid_user_file_with_data_information(self):
        # Arrange
        data_builder = get_data_builder(SANSFacility.ISIS)
        data_builder.set_sample_scatter("SANS2D00022024")
        data_builder.set_sample_scatter_period(3)
        data_state = data_builder.build()

        director = StateDirectorISIS(data_state)
        user_file_path = create_user_file(sample_user_file)

        director.set_user_file(user_file_path)
        state = director.construct()

        # Assert
        self._assert_data(state)
        self._assert_move(state)
        self._assert_mask(state)
        self._assert_reduction(state)
        self._assert_wavelength(state)
        self._assert_scale(state)
        self._assert_adjustment(state)
        self._assert_convert_to_q(state)

        # clean up
        if os.path.exists(user_file_path):
            os.remove(user_file_path)
Beispiel #7
0
    def test_stat_can_be_crated_from_valid_user_file_and_later_on_reset(self):
        # Arrange
        data_builder = get_data_builder(SANSFacility.ISIS)
        data_builder.set_sample_scatter("SANS2D00022024")
        data_builder.set_sample_scatter_period(3)
        data_state = data_builder.build()

        director = StateDirectorISIS(data_state)
        user_file_path = create_user_file(sample_user_file)
        director.set_user_file(user_file_path)

        # Set additional items
        director.set_mask_builder_radius_min(0.001298)
        director.set_mask_builder_radius_max(0.003298)
        director.set_scale_builder_width(1.)
        director.set_scale_builder_height(1.5)
        director.set_scale_builder_thickness(12.)
        director.set_scale_builder_shape(SampleShape.Cuboid)

        # Act
        state = director.construct()

        # Assert
        self.assertTrue(state.mask.radius_min == 0.001298)
        self.assertTrue(state.mask.radius_max == 0.003298)
        self.assertTrue(state.scale.width == 1.)
        self.assertTrue(state.scale.height == 1.5)
        self.assertTrue(state.scale.thickness == 12.)
        self.assertTrue(state.scale.shape is SampleShape.Cuboid)

        # clean up
        if os.path.exists(user_file_path):
            os.remove(user_file_path)
Beispiel #8
0
    def test_stat_can_be_created_from_valid_user_file_and_later_on_reset(self):
        # Arrange
        file_information = SANSFileInformationMock(instrument=SANSInstrument.SANS2D, run_number=22024)
        data_builder = get_data_builder(SANSFacility.ISIS, file_information)
        data_builder.set_sample_scatter("SANS2D00022024")
        data_builder.set_sample_scatter_period(3)
        data_state = data_builder.build()

        director = StateDirectorISIS(data_state, file_information)
        user_file_path = create_user_file(sample_user_file)
        director.set_user_file(user_file_path)

        # Set additional items
        director.set_mask_builder_radius_min(0.001298)
        director.set_mask_builder_radius_max(0.003298)
        director.set_scale_builder_width(1.)
        director.set_scale_builder_height(1.5)
        director.set_scale_builder_thickness(12.)
        director.set_scale_builder_shape(SampleShape.FlatPlate)

        # Act
        state = director.construct()

        # Assert
        self.assertEqual(state.mask.radius_min,  0.001298)
        self.assertEqual(state.mask.radius_max,  0.003298)
        self.assertEqual(state.scale.width,  1.)
        self.assertEqual(state.scale.height,  1.5)
        self.assertEqual(state.scale.thickness,  12.)
        self.assertEqual(state.scale.shape, SampleShape.FlatPlate)

        # clean up
        if os.path.exists(user_file_path):
            os.remove(user_file_path)
 def _get_state_gui_model():
     user_file_path = create_user_file(sample_user_file)
     user_file_reader = UserFileReader(user_file_path)
     user_file_items = user_file_reader.read_user_file()
     if os.path.exists(user_file_path):
         os.remove(user_file_path)
     return StateGuiModel(user_file_items)
Beispiel #10
0
    def test_stat_can_be_crated_from_valid_user_file_and_later_on_reset(self):
        # Arrange
        data_builder = get_data_builder(SANSFacility.ISIS)
        data_builder.set_sample_scatter("SANS2D00022024")
        data_builder.set_sample_scatter_period(3)
        data_state = data_builder.build()

        director = StateDirectorISIS(data_state)
        user_file_path = create_user_file(sample_user_file)
        director.set_user_file(user_file_path)

        # Set additional items
        director.set_mask_builder_radius_min(0.001298)
        director.set_mask_builder_radius_max(0.003298)
        director.set_scale_builder_width(1.)
        director.set_scale_builder_height(1.5)
        director.set_scale_builder_thickness(12.)
        director.set_scale_builder_shape(SampleShape.Cuboid)

        # Act
        state = director.construct()

        # Assert
        self.assertTrue(state.mask.radius_min == 0.001298)
        self.assertTrue(state.mask.radius_max == 0.003298)
        self.assertTrue(state.scale.width == 1.)
        self.assertTrue(state.scale.height == 1.5)
        self.assertTrue(state.scale.thickness == 12.)
        self.assertTrue(state.scale.shape is SampleShape.Cuboid)

        # clean up
        if os.path.exists(user_file_path):
            os.remove(user_file_path)
Beispiel #11
0
    def test_state_can_be_created_from_valid_user_file_with_data_information(
            self):
        # Arrange
        data_builder = get_data_builder(SANSFacility.ISIS)
        data_builder.set_sample_scatter("SANS2D00022024")
        data_builder.set_sample_scatter_period(3)
        data_state = data_builder.build()

        director = StateDirectorISIS(data_state)
        user_file_path = create_user_file(sample_user_file)

        director.set_user_file(user_file_path)
        state = director.construct()

        # Assert
        self._assert_data(state)
        self._assert_move(state)
        self._assert_mask(state)
        self._assert_reduction(state)
        self._assert_wavelength(state)
        self._assert_scale(state)
        self._assert_adjustment(state)
        self._assert_convert_to_q(state)

        # clean up
        if os.path.exists(user_file_path):
            os.remove(user_file_path)
Beispiel #12
0
    def test_that_gets_pre_processing_options_are_valid_and_other_options_are_empty(self):
        # Arrange
        presenter = MainPresenter(SANSFacility.ISIS)
        content = "# MANTID_BATCH_FILE add more text here\n" \
                  "sample_sans,SANS2D00022024,sample_trans,SANS2D00022048," \
                  "sample_direct_beam,SANS2D00022048,output_as,test_file\n" \
                  "sample_sans,SANS2D00022024,output_as,test_file2\n"
        batch_file_path = save_to_csv(content)
        user_file_path = create_user_file(sample_user_file)
        view = create_mock_view2(user_file_path, batch_file_path)
        presenter.set_view(view)

        # Act
        pre_processing_options = presenter.getProcessingOptions()

        # Assert
        expected = {'UseOptimizations':'1','OutputMode':'PublishToADS','PlotResults':'1', \
                    'OutputGraph':'SANS-Latest'}
        self.assertEqual(expected, pre_processing_options)
        self.assertFalse(presenter.getPreprocessingOptions())
        self.assertFalse(presenter.getPostprocessingOptionsAsString())

        # Clean up
        remove_file(sample_user_file)
        remove_file(user_file_path)
Beispiel #13
0
 def _get_files_and_mock_presenter(content):
     batch_file_path = save_to_csv(content)
     user_file_path = create_user_file(sample_user_file)
     view, _, _ = create_mock_view(user_file_path, batch_file_path)
     # We just use the sample_user_file since it exists.
     view.get_mask_file = mock.MagicMock(return_value=user_file_path)
     presenter = RunTabPresenter(SANSFacility.ISIS)
     presenter.set_view(view)
     return batch_file_path, user_file_path, presenter, view
    def test_that_create_state_creates_correct_state(self):
        user_file_path = create_user_file(sample_user_file)
        user_file_reader = UserFileReader(user_file_path)
        user_file_items = user_file_reader.read_user_file()

        state_from_view =  StateGuiModel(user_file_items)

        state = create_state(state_from_view, "SANS2D00022024", '', SANSFacility.ISIS)

        self.assertEqual(state.data.sample_scatter, "SANS2D00022024")
    def test_that_create_state_creates_correct_state(self):
        user_file_path = create_user_file(sample_user_file)
        user_file_reader = UserFileReader(user_file_path)
        user_file_items = user_file_reader.read_user_file()

        state_from_view =  StateGuiModel(user_file_items)

        state = create_state(state_from_view, "SANS2D00022024", '', SANSFacility.ISIS)

        self.assertEqual(state.data.sample_scatter, "SANS2D00022024")
Beispiel #16
0
    def test_that_create_state_creates_correct_state(self):
        user_file_path = create_user_file(sample_user_file)
        user_file_reader = UserFileReaderAdapter(user_file_name=user_file_path, file_information=None)
        user_file_items = user_file_reader.get_all_states(file_information=None)

        state_from_view = StateGuiModel(user_file_items)

        state = create_state(state_from_view, "SANS2D00022024", '', SANSFacility.ISIS)

        self.assertEqual(state.data.sample_scatter, "SANS2D00022024")
Beispiel #17
0
 def test_that_can_get_states_from_row_user_file(self):
     # Arrange
     row_user_file_path = create_user_file(sample_user_file_gravity_OFF)
     batch_file_path, user_file_path, presenter, _ = self._get_files_and_mock_presenter(
         BATCH_FILE_TEST_CONTENT_4, row_user_file_path=row_user_file_path)
     presenter.on_user_file_load()
     presenter.on_batch_file_load()
     # Act
     state = presenter.get_state_for_row(1)
     state0 = presenter.get_state_for_row(0)
     # Assert
     self.assertTrue(state.convert_to_q.use_gravity is False)
     self.assertTrue(state0.convert_to_q.use_gravity is True)
 def _get_files_and_mock_presenter(self, content, is_multi_period=True, row_user_file_path = ""):
     batch_parser = mock.MagicMock()
     batch_parser.parse_batch_file = mock.MagicMock(return_value=content)
     self.BatchCsvParserMock.return_value = batch_parser
     batch_file_path = 'batch_file_path'
     user_file_path = create_user_file(sample_user_file)
     view, _, _ = create_mock_view(user_file_path, batch_file_path, row_user_file_path)
     # We just use the sample_user_file since it exists.
     view.get_mask_file = mock.MagicMock(return_value=user_file_path)
     view.is_multi_period_view = mock.MagicMock(return_value=is_multi_period)
     presenter = RunTabPresenter(SANSFacility.ISIS)
     presenter.set_view(view)
     return batch_file_path, user_file_path, presenter, view
 def _get_files_and_mock_presenter(self, content, is_multi_period=True, row_user_file_path = ""):
     batch_parser = mock.MagicMock()
     batch_parser.parse_batch_file = mock.MagicMock(return_value=content)
     self.BatchCsvParserMock.return_value = batch_parser
     batch_file_path = 'batch_file_path'
     user_file_path = create_user_file(sample_user_file)
     view, _, _ = create_mock_view(user_file_path, batch_file_path, row_user_file_path)
     # We just use the sample_user_file since it exists.
     view.get_mask_file = mock.MagicMock(return_value=user_file_path)
     view.is_multi_period_view = mock.MagicMock(return_value=is_multi_period)
     presenter = RunTabPresenter(SANSFacility.ISIS)
     presenter.set_view(view)
     return batch_file_path, user_file_path, presenter, view
    def test_batch_file_dir_not_added_to_config_if_batch_file_load_fails(self):
        presenter = RunTabPresenter(SANSFacility.ISIS)
        user_file_path = create_user_file(sample_user_file)
        view, settings_diagnostic_tab, masking_table = create_mock_view(
            user_file_path, "A/Path/batch_file.csv")
        presenter.set_view(view)

        presenter.on_batch_file_load()
        config_dirs = config["datasearch.directories"]
        result = "A/Path/" in config_dirs

        self.assertFalse(
            result, "We do not expect A/Path/ to be added to config, "
            "datasearch.directories is now {}".format(config_dirs))
Beispiel #21
0
    def test_fails_silently_when_batch_file_does_not_exist(self):
        presenter = RunTabPresenter(SANSFacility.ISIS)
        user_file_path = create_user_file(sample_user_file)
        view, settings_diagnostic_tab, masking_table = create_mock_view(
            user_file_path, "non_existent_batch_file")
        presenter.set_view(view)

        try:
            presenter.on_batch_file_load()
            has_raised = False
        except:  # noqa
            has_raised = True
        self.assertFalse(has_raised)

        # Clean up
        self._remove_files(user_file_path=user_file_path)
    def test_that_can_get_states_from_row_user_file(self):
        # Arrange
        row_user_file_path = create_user_file(sample_user_file_gravity_OFF)
        batch_file_path, user_file_path, presenter, _ = self._get_files_and_mock_presenter(BATCH_FILE_TEST_CONTENT_2,
                                                                                           row_user_file_path = row_user_file_path)

        presenter.on_user_file_load()
        presenter.on_batch_file_load()

        # Act
        state = presenter.get_state_for_row(1)
        state0 = presenter.get_state_for_row(0)

        # Assert
        self.assertTrue(state.convert_to_q.use_gravity is False)
        self.assertTrue(state0.convert_to_q.use_gravity is True)
Beispiel #23
0
 def test_move_with_hab_centre_uses_hab_centre_value(self):
     user_file_centre = """
     set centre 160.2 -170.5
     set centre/hab 160.5 -170.1
     """
     user_file_path = create_user_file(user_file_centre)
     mocked_sans = self.create_mock_inst_file_information(SANSInstrument.SANS2D)
     parser = UserFileReaderAdapter(user_file_name=user_file_path, file_information=mocked_sans)
     state = parser.get_all_states(file_information=mocked_sans)
     move = state.move
     lab = move.detectors[DetectorType.LAB.value]
     hab = move.detectors[DetectorType.HAB.value]
     self.assertEqual(lab.sample_centre_pos1,  160.2/1000.)
     self.assertEqual(lab.sample_centre_pos2, -170.5/1000.)
     self.assertEqual(hab.sample_centre_pos1,  160.5/1000. )
     self.assertEqual(hab.sample_centre_pos2, -170.1/1000.)
    def test_fails_silently_when_batch_file_does_not_exist(self):
        self.os_patcher.stop()
        presenter = RunTabPresenter(SANSFacility.ISIS)
        user_file_path = create_user_file(sample_user_file)
        view, settings_diagnostic_tab, masking_table = create_mock_view(user_file_path, "non_existent_batch_file")
        presenter.set_view(view)

        try:
            presenter.on_batch_file_load()
            has_raised = False
        except:  # noqa
            has_raised = True
        self.assertFalse(has_raised)

        # Clean up
        self._remove_files(user_file_path=user_file_path)
        self.os_patcher.start()
Beispiel #25
0
    def test_that_can_get_states_from_row_user_file(self):
        # Arrange
        row_user_file_path = create_user_file(sample_user_file_gravity_OFF)
        batch_file_path, user_file_path, presenter, _ = self._get_files_and_mock_presenter(BATCH_FILE_TEST_CONTENT_4,
                                                                                           row_user_file_path = row_user_file_path)
        presenter.on_user_file_load()
        presenter.on_batch_file_load()
        presenter._table_model.update_thickness_from_file_information(1, self.get_file_information_mock())
        presenter._table_model.update_thickness_from_file_information(2, self.get_file_information_mock())


        # Act
        state = presenter.get_state_for_row(1)
        state0 = presenter.get_state_for_row(0)
        # Assert
        self.assertFalse(state.convert_to_q.use_gravity)
        self.assertTrue(state0.convert_to_q.use_gravity)
    def test_that_returns_none_when_index_does_not_exist(self):
        # Arrange
        batch_file_path = save_to_csv(BATCH_FILE_TEST_CONTENT_2)
        user_file_path = create_user_file(sample_user_file)
        view, _, _ = create_mock_view(user_file_path, batch_file_path)
        presenter = RunTabPresenter(SANSFacility.ISIS)
        presenter.set_view(view)
        presenter.on_user_file_load()
        presenter.on_batch_file_load()

        # Act
        state = presenter.get_state_for_row(3)

        # Assert
        self.assertTrue(state is None)

        # Clean up
        remove_file(batch_file_path)
        remove_file(user_file_path)
Beispiel #27
0
    def test_state_can_be_created_from_valid_user_file_with_data_information(self):
        user_file_path = create_user_file(sample_user_file)

        mocked_sans = self.create_mock_inst_file_information(SANSInstrument.SANS2D)

        parser = UserFileReaderAdapter(user_file_name=user_file_path, file_information=mocked_sans)
        state = parser.get_all_states(file_information=mocked_sans)

        # Assert
        self._assert_move(state)
        self._assert_mask(state)
        self._assert_reduction(state)
        self._assert_wavelength(state)
        self._assert_scale(state)
        self._assert_adjustment(state)
        self._assert_convert_to_q(state)

        # clean up
        if os.path.exists(user_file_path):
            os.remove(user_file_path)
    def _get_files_and_mock_presenter(self,
                                      content,
                                      is_multi_period=True,
                                      row_user_file_path=""):
        if row_user_file_path:
            content[1].user_file = row_user_file_path

        batch_parser = mock.MagicMock()
        batch_parser.parse_batch_file = mock.MagicMock(return_value=content)
        self._mock_csv_parser.return_value = batch_parser
        batch_file_path = 'batch_file_path'

        user_file_path = create_user_file(sample_user_file)
        view, _, _ = create_mock_view(user_file_path, batch_file_path,
                                      row_user_file_path)
        # We just use the sample_user_file since it exists.
        view.get_mask_file = mock.MagicMock(return_value=user_file_path)
        view.is_multi_period_view = mock.MagicMock(
            return_value=is_multi_period)
        self.presenter.set_view(view)
        return batch_file_path, user_file_path, view
Beispiel #29
0
 def _get_state_gui_model():
     user_file_path = create_user_file(sample_user_file)
     adapter = UserFileReaderAdapter(file_information=None,
                                     user_file_name=user_file_path)
     return StateGuiModel(adapter.get_all_states(file_information=None))
    def test_that_can_read_user_file(self):
        # Arrange
        user_file_path = create_user_file(sample_user_file)
        reader = UserFileReader(user_file_path)

        # Act
        output = reader.read_user_file()

        # Assert
        expected_values = {LimitsId.wavelength: [simple_range(start=1.5, stop=12.5, step=0.125,
                                                              step_type=RangeStepType.Lin)],
                           LimitsId.q: [q_rebin_values(min=.001, max=.2, rebin_string="0.001,0.001,0.0126,-0.08,0.2")],
                           LimitsId.qxy: [simple_range(0, 0.05, 0.001, RangeStepType.Lin)],
                           BackId.single_monitors: [back_single_monitor_entry(1, 35000, 65000),
                                                    back_single_monitor_entry(2, 85000, 98000)],
                           DetectorId.reduction_mode: [ISISReductionMode.LAB],
                           GravityId.on_off: [True],
                           FitId.general: [fit_general(start=1.5, stop=12.5, fit_type=FitType.Logarithmic,
                                                       data_type=None, polynomial_order=0)],
                           MaskId.vertical_single_strip_mask: [single_entry_with_detector(191, DetectorType.LAB),
                                                               single_entry_with_detector(191, DetectorType.HAB),
                                                               single_entry_with_detector(0, DetectorType.LAB),
                                                               single_entry_with_detector(0, DetectorType.HAB)],
                           MaskId.horizontal_single_strip_mask: [single_entry_with_detector(0, DetectorType.LAB),
                                                                 single_entry_with_detector(0, DetectorType.HAB)],
                           MaskId.horizontal_range_strip_mask: [range_entry_with_detector(190, 191, DetectorType.LAB),
                                                                range_entry_with_detector(167, 172, DetectorType.LAB),
                                                                range_entry_with_detector(190, 191, DetectorType.HAB),
                                                                range_entry_with_detector(156, 159, DetectorType.HAB)
                                                                ],
                           MaskId.time: [range_entry_with_detector(17500, 22000, None)],
                           MonId.direct: [monitor_file("DIRECTM1_15785_12m_31Oct12_v12.dat", DetectorType.LAB),
                                          monitor_file("DIRECTM1_15785_12m_31Oct12_v12.dat", DetectorType.HAB)],
                           MonId.spectrum: [monitor_spectrum(1, True, True), monitor_spectrum(1, False, True)],
                           SetId.centre: [position_entry(155.45, -169.6, DetectorType.LAB)],
                           SetId.scales: [set_scales_entry(0.074, 1.0, 1.0, 1.0, 1.0)],
                           SampleId.offset: [53.0],
                           DetectorId.correction_x: [single_entry_with_detector(-16.0, DetectorType.LAB),
                                                     single_entry_with_detector(-44.0, DetectorType.HAB)],
                           DetectorId.correction_y: [single_entry_with_detector(-20.0, DetectorType.HAB)],
                           DetectorId.correction_z: [single_entry_with_detector(47.0, DetectorType.LAB),
                                                     single_entry_with_detector(47.0, DetectorType.HAB)],
                           DetectorId.correction_rotation: [single_entry_with_detector(0.0, DetectorType.HAB)],
                           LimitsId.events_binning: ["7000.0,500.0,60000.0"],
                           MaskId.clear_detector_mask: [True],
                           MaskId.clear_time_mask: [True],
                           LimitsId.radius: [range_entry(12, 15)],
                           TransId.spec_shift: [-70.],
                           PrintId.print_line: ["for changer"],
                           BackId.all_monitors: [range_entry(start=3500, stop=4500)],
                           FitId.monitor_times: [range_entry(start=1000, stop=2000)],
                           TransId.spec: [4],
                           BackId.trans: [range_entry(start=123, stop=466)],
                           TransId.radius: [7.0],
                           TransId.roi: ["test.xml", "test2.xml"],
                           TransId.mask: ["test3.xml", "test4.xml"],
                           SampleId.path: [True],
                           LimitsId.radius_cut: [200.0],
                           LimitsId.wavelength_cut: [8.0],
                           QResolutionId.on: [True],
                           QResolutionId.delta_r: [11.],
                           QResolutionId.collimation_length: [12.],
                           QResolutionId.a1: [13.],
                           QResolutionId.a2: [14.],
                           QResolutionId.moderator: ["moderator_rkh_file.txt"],
                           TubeCalibrationFileId.file: ["TUBE_SANS2D_BOTH_31681_25Sept15.nxs"]}

        self.assertEqual(len(expected_values), len(output))
        for key, value in list(expected_values.items()):
            self.assertTrue(key in output)
            self.assertEqual(len(output[key]), len(value))
            elements = output[key]
            # Make sure that the different entries are sorted
            UserFileReaderTest._sort_list(elements)
            UserFileReaderTest._sort_list(value)
            self.assertEqual(elements, value, "{} is not {}".format(elements, value))

        # clean up
        if os.path.exists(user_file_path):
            os.remove(user_file_path)
    def test_that_will_load_user_file(self):
        # Setup presenter and mock view
        user_file_path = create_user_file(sample_user_file)
        view, settings_diagnostic_tab, _ = create_mock_view(user_file_path)
        presenter = RunTabPresenter(SANSFacility.ISIS)
        presenter.set_view(view)

        # Act
        presenter.on_user_file_load()

        # Assert
        # Note that the event slices are not set in the user file
        self.assertFalse(view.event_slices)
        self.assertTrue(view.reduction_dimensionality is ReductionDimensionality.OneDim)
        self.assertTrue(view.save_types[0] is SaveType.NXcanSAS)
        self.assertTrue(view.zero_error_free)
        self.assertTrue(view.use_optimizations)
        self.assertTrue(view.reduction_mode is ISISReductionMode.LAB)
        self.assertTrue(view.merge_scale == 1.)
        self.assertTrue(view.merge_shift == 0.)
        self.assertFalse(view.merge_scale_fit)
        self.assertFalse(view.merge_shift_fit)
        self.assertTrue(view.event_binning == "7000.0,500.0,60000.0")
        self.assertTrue(view.wavelength_step_type is RangeStepType.Lin)
        self.assertTrue(view.wavelength_min == 1.5)
        self.assertTrue(view.wavelength_max == 12.5)
        self.assertTrue(view.wavelength_step == 0.125)
        self.assertTrue(view.absolute_scale == 0.074)
        self.assertTrue(view.z_offset == 53.)
        self.assertTrue(view.normalization_incident_monitor == 1)
        self.assertTrue(view.normalization_interpolate)
        self.assertTrue(view.transmission_incident_monitor == 1)
        self.assertTrue(view.transmission_interpolate)
        self.assertTrue(view.transmission_roi_files == "test2.xml")
        self.assertTrue(view.transmission_mask_files == "test4.xml")
        self.assertTrue(view.transmission_radius == 7.)
        self.assertTrue(view.transmission_monitor == 4)
        self.assertTrue(view.transmission_mn_shift == -70)
        self.assertTrue(view.transmission_sample_use_fit)
        self.assertTrue(view.transmission_sample_fit_type is FitType.Logarithmic)
        self.assertTrue(view.transmission_sample_polynomial_order == 2)
        self.assertTrue(view.transmission_sample_wavelength_min == 1.5)
        self.assertTrue(view.transmission_sample_wavelength_max == 12.5)
        self.assertTrue(view.transmission_sample_use_wavelength)
        self.assertFalse(view.pixel_adjustment_det_1)
        self.assertFalse(view.pixel_adjustment_det_2)
        self.assertFalse(view.wavelength_adjustment_det_1)
        self.assertFalse(view.wavelength_adjustment_det_2)
        self.assertTrue(view.q_1d_min_or_rebin_string == "0.001,0.001,0.0126,-0.08,0.2")
        self.assertTrue(view.q_xy_max == 0.05)
        self.assertTrue(view.q_xy_step == 0.001)
        self.assertTrue(view.q_xy_step_type == RangeStepType.Lin)
        self.assertTrue(view.gravity_on_off)
        self.assertTrue(view.use_q_resolution)
        self.assertTrue(view.q_resolution_sample_a == 14.)
        self.assertTrue(view.q_resolution_source_a == 13.)
        self.assertTrue(view.q_resolution_delta_r == 11.)
        self.assertTrue(view.q_resolution_collimation_length == 12.)
        self.assertTrue(view.q_resolution_moderator_file == "moderator_rkh_file.txt")
        self.assertFalse(view.phi_limit_use_mirror)
        self.assertTrue(view.radius_limit_min == 12.)
        self.assertTrue(view.radius_limit_min == 12.)
        self.assertTrue(view.radius_limit_max == 15.)
        self.assertFalse(view.compatibility_mode)
        self.assertFalse(view.show_transmission)

        # Assert that Beam Centre View is updated correctly
        self.assertEqual(view.beam_centre.lab_pos_1, 155.45)
        self.assertEqual(view.beam_centre.lab_pos_2, -169.6)
        self.assertEqual(view.beam_centre.hab_pos_1, 155.45)
        self.assertEqual(view.beam_centre.hab_pos_2, -169.6)

        # Assert certain function calls
        self.assertTrue(view.get_user_file_path.call_count == 3)
        self.assertTrue(view.get_batch_file_path.call_count == 2)  # called twice for the sub presenter updates (masking table and settings diagnostic tab)  # noqa
        self.assertTrue(view.get_cell.call_count == 64)

        self.assertTrue(view.get_number_of_rows.call_count == 6)

        # clean up
        remove_file(user_file_path)
Beispiel #32
0
    def test_that_can_read_user_file(self):
        # Arrange
        user_file_path = create_user_file(sample_user_file)
        reader = UserFileReader(user_file_path)

        # Act
        output = reader.read_user_file()

        # Assert
        expected_values = {
            LimitsId.WAVELENGTH: [
                simple_range(start=1.5,
                             stop=12.5,
                             step=0.125,
                             step_type=RangeStepType.LIN)
            ],
            LimitsId.Q: [
                q_rebin_values(min=.001,
                               max=.2,
                               rebin_string="0.001,0.001,0.0126,-0.08,0.2")
            ],
            LimitsId.QXY: [simple_range(0, 0.05, 0.001, RangeStepType.LIN)],
            BackId.SINGLE_MONITORS: [
                back_single_monitor_entry(1, 35000, 65000),
                back_single_monitor_entry(2, 85000, 98000)
            ],
            DetectorId.REDUCTION_MODE: [ReductionMode.LAB],
            GravityId.ON_OFF: [True],
            FitId.GENERAL: [
                fit_general(start=1.5,
                            stop=12.5,
                            fit_type=FitType.LOGARITHMIC,
                            data_type=None,
                            polynomial_order=0)
            ],
            MaskId.VERTICAL_SINGLE_STRIP_MASK: [
                single_entry_with_detector(191, DetectorType.LAB),
                single_entry_with_detector(191, DetectorType.HAB),
                single_entry_with_detector(0, DetectorType.LAB),
                single_entry_with_detector(0, DetectorType.HAB)
            ],
            MaskId.HORIZONTAL_SINGLE_STRIP_MASK: [
                single_entry_with_detector(0, DetectorType.LAB),
                single_entry_with_detector(0, DetectorType.HAB)
            ],
            MaskId.HORIZONTAL_RANGE_STRIP_MASK: [
                range_entry_with_detector(190, 191, DetectorType.LAB),
                range_entry_with_detector(167, 172, DetectorType.LAB),
                range_entry_with_detector(190, 191, DetectorType.HAB),
                range_entry_with_detector(156, 159, DetectorType.HAB)
            ],
            MaskId.TIME: [range_entry_with_detector(17500, 22000, None)],
            MonId.DIRECT: [
                monitor_file("DIRECTM1_15785_12m_31Oct12_v12.dat",
                             DetectorType.LAB),
                monitor_file("DIRECTM1_15785_12m_31Oct12_v12.dat",
                             DetectorType.HAB)
            ],
            MonId.SPECTRUM: [
                monitor_spectrum(1, True, True),
                monitor_spectrum(1, False, True)
            ],
            SetId.CENTRE: [position_entry(155.45, -169.6, DetectorType.LAB)],
            SetId.SCALES: [set_scales_entry(0.074, 1.0, 1.0, 1.0, 1.0)],
            SampleId.OFFSET: [53.0],
            DetectorId.CORRECTION_X: [
                single_entry_with_detector(-16.0, DetectorType.LAB),
                single_entry_with_detector(-44.0, DetectorType.HAB)
            ],
            DetectorId.CORRECTION_Y:
            [single_entry_with_detector(-20.0, DetectorType.HAB)],
            DetectorId.CORRECTION_Z: [
                single_entry_with_detector(47.0, DetectorType.LAB),
                single_entry_with_detector(47.0, DetectorType.HAB)
            ],
            DetectorId.CORRECTION_ROTATION:
            [single_entry_with_detector(0.0, DetectorType.HAB)],
            LimitsId.EVENTS_BINNING: ["7000.0,500.0,60000.0"],
            MaskId.CLEAR_DETECTOR_MASK: [True],
            MaskId.CLEAR_TIME_MASK: [True],
            LimitsId.RADIUS: [range_entry(12, 15)],
            TransId.SPEC_4_SHIFT: [-70.],
            PrintId.PRINT_LINE: ["for changer"],
            BackId.ALL_MONITORS: [range_entry(start=3500, stop=4500)],
            FitId.MONITOR_TIMES: [range_entry(start=1000, stop=2000)],
            TransId.SPEC: [4],
            BackId.TRANS: [range_entry(start=123, stop=466)],
            TransId.RADIUS: [7.0],
            TransId.ROI: ["test.xml", "test2.xml"],
            TransId.MASK: ["test3.xml", "test4.xml"],
            SampleId.PATH: [True],
            LimitsId.RADIUS_CUT: [200.0],
            LimitsId.WAVELENGTH_CUT: [8.0],
            QResolutionId.ON: [True],
            QResolutionId.DELTA_R: [11.],
            QResolutionId.COLLIMATION_LENGTH: [12.],
            QResolutionId.A1: [13.],
            QResolutionId.A2: [14.],
            QResolutionId.MODERATOR: ["moderator_rkh_file.txt"],
            TubeCalibrationFileId.FILE:
            ["TUBE_SANS2D_BOTH_31681_25Sept15.nxs"]
        }

        self.assertEqual(len(expected_values), len(output))
        for key, value in list(expected_values.items()):
            self.assertTrue(key in output)
            self.assertEqual(len(output[key]), len(value))
            elements = output[key]
            # Make sure that the different entries are sorted
            UserFileReaderTest._sort_list(elements)
            UserFileReaderTest._sort_list(value)
            self.assertEqual(elements, value,
                             "{} is not {}".format(elements, value))

        # clean up
        if os.path.exists(user_file_path):
            os.remove(user_file_path)
Beispiel #33
0
    def test_that_can_read_user_file(self):
        # Arrange
        user_file_path = create_user_file(sample_user_file)
        reader = UserFileReader(user_file_path)

        # Act
        output = reader.read_user_file()

        # Assert
        expected_values = {
            LimitsId.wavelength: [
                simple_range(start=1.5,
                             stop=12.5,
                             step=0.125,
                             step_type=RangeStepType.Lin)
            ],
            LimitsId.q: [
                q_rebin_values(min=.001,
                               max=.2,
                               rebin_string="0.001,0.001,0.0126,-0.08,0.2")
            ],
            LimitsId.qxy: [simple_range(0, 0.05, 0.001, RangeStepType.Lin)],
            BackId.single_monitors: [
                back_single_monitor_entry(1, 35000, 65000),
                back_single_monitor_entry(2, 85000, 98000)
            ],
            DetectorId.reduction_mode: [ISISReductionMode.LAB],
            GravityId.on_off: [True],
            FitId.general: [
                fit_general(start=1.5,
                            stop=12.5,
                            fit_type=FitType.Logarithmic,
                            data_type=None,
                            polynomial_order=0)
            ],
            MaskId.vertical_single_strip_mask: [
                single_entry_with_detector(191, DetectorType.LAB),
                single_entry_with_detector(191, DetectorType.HAB),
                single_entry_with_detector(0, DetectorType.LAB),
                single_entry_with_detector(0, DetectorType.HAB)
            ],
            MaskId.horizontal_single_strip_mask: [
                single_entry_with_detector(0, DetectorType.LAB),
                single_entry_with_detector(0, DetectorType.HAB)
            ],
            MaskId.horizontal_range_strip_mask: [
                range_entry_with_detector(190, 191, DetectorType.LAB),
                range_entry_with_detector(167, 172, DetectorType.LAB),
                range_entry_with_detector(190, 191, DetectorType.HAB),
                range_entry_with_detector(156, 159, DetectorType.HAB)
            ],
            MaskId.time: [range_entry_with_detector(17500, 22000, None)],
            MonId.direct: [
                monitor_file("DIRECTM1_15785_12m_31Oct12_v12.dat",
                             DetectorType.LAB),
                monitor_file("DIRECTM1_15785_12m_31Oct12_v12.dat",
                             DetectorType.HAB)
            ],
            MonId.spectrum: [
                monitor_spectrum(1, True, True),
                monitor_spectrum(1, False, True)
            ],
            SetId.centre: [position_entry(155.45, -169.6, DetectorType.LAB)],
            SetId.scales: [set_scales_entry(0.074, 1.0, 1.0, 1.0, 1.0)],
            SampleId.offset: [53.0],
            DetectorId.correction_x: [
                single_entry_with_detector(-16.0, DetectorType.LAB),
                single_entry_with_detector(-44.0, DetectorType.HAB)
            ],
            DetectorId.correction_y:
            [single_entry_with_detector(-20.0, DetectorType.HAB)],
            DetectorId.correction_z: [
                single_entry_with_detector(47.0, DetectorType.LAB),
                single_entry_with_detector(47.0, DetectorType.HAB)
            ],
            DetectorId.correction_rotation:
            [single_entry_with_detector(0.0, DetectorType.HAB)],
            LimitsId.events_binning: ["7000.0,500.0,60000.0"],
            MaskId.clear_detector_mask: [True],
            MaskId.clear_time_mask: [True],
            LimitsId.radius: [range_entry(12, 15)],
            TransId.spec_shift: [-70.],
            PrintId.print_line: ["for changer"],
            BackId.all_monitors: [range_entry(start=3500, stop=4500)],
            FitId.monitor_times: [range_entry(start=1000, stop=2000)],
            TransId.spec: [4],
            BackId.trans: [range_entry(start=123, stop=466)],
            TransId.radius: [7.0],
            TransId.roi: ["test.xml", "test2.xml"],
            TransId.mask: ["test3.xml", "test4.xml"],
            SampleId.path: [True],
            LimitsId.radius_cut: [200.0],
            LimitsId.wavelength_cut: [8.0],
            QResolutionId.on: [True],
            QResolutionId.delta_r: [11.],
            QResolutionId.collimation_length: [12.],
            QResolutionId.a1: [13.],
            QResolutionId.a2: [14.],
            QResolutionId.moderator: ["moderator_rkh_file.txt"],
            TubeCalibrationFileId.file:
            ["TUBE_SANS2D_BOTH_31681_25Sept15.nxs"]
        }

        self.assertTrue(len(expected_values) == len(output))
        for key, value in list(expected_values.items()):
            self.assertTrue(key in output)
            self.assertTrue(len(output[key]) == len(value))
            elements = output[key]
            # Make sure that the different entries are sorted
            UserFileReaderTest._sort_list(elements)
            UserFileReaderTest._sort_list(value)
            self.assertTrue(elements == value)

        # clean up
        if os.path.exists(user_file_path):
            os.remove(user_file_path)
Beispiel #34
0
    def test_that_will_load_user_file(self):
        # Setup self.presenter.and mock view
        user_file_path = create_user_file(sample_user_file)
        view, settings_diagnostic_tab, _ = create_mock_view(user_file_path)

        self.presenter.set_view(view)

        # Act
        try:
            self.presenter.on_user_file_load()
        except RuntimeError:
            # Assert that RuntimeError from no instrument is caught
            self.fail(
                "on_user_file_load raises a RuntimeError which should be caught"
            )

        # Assert
        # Note that the event slices are not set in the user file
        self.assertFalse(view.event_slices)
        self.assertEqual(view.reduction_dimensionality,
                         ReductionDimensionality.ONE_DIM)
        self.assertEqual(view.save_types[0], SaveType.NX_CAN_SAS)
        self.assertTrue(view.zero_error_free)
        self.assertTrue(view.use_optimizations)
        self.assertEqual(view.reduction_mode, ReductionMode.LAB)
        self.assertEqual(view.merge_scale, 1.)
        self.assertEqual(view.merge_shift, 0.)
        self.assertFalse(view.merge_scale_fit)
        self.assertFalse(view.merge_shift_fit)
        self.assertEqual(view.event_binning, "7000.0,500.0,60000.0")
        self.assertEqual(view.wavelength_step_type, RangeStepType.LIN)
        self.assertEqual(view.wavelength_min, 1.5)
        self.assertEqual(view.wavelength_max, 12.5)
        self.assertEqual(view.wavelength_step, 0.125)
        self.assertEqual(view.absolute_scale, 0.074)
        self.assertEqual(view.z_offset, 53.)
        self.assertEqual(view.normalization_incident_monitor, 1)
        self.assertTrue(view.normalization_interpolate)
        self.assertEqual(view.transmission_incident_monitor, 1)
        self.assertTrue(view.transmission_interpolate)
        self.assertEqual(view.transmission_roi_files, "test2.xml")
        self.assertEqual(view.transmission_mask_files, "test4.xml")
        self.assertEqual(view.transmission_radius, 7.)
        self.assertEqual(view.transmission_monitor, 4)
        self.assertEqual(view.transmission_mn_4_shift, -70)
        self.assertTrue(view.transmission_sample_use_fit)
        self.assertEqual(view.transmission_sample_fit_type,
                         FitType.LOGARITHMIC)
        self.assertEqual(view.transmission_sample_polynomial_order, 2)
        self.assertEqual(view.transmission_sample_wavelength_min, 1.5)
        self.assertEqual(view.transmission_sample_wavelength_max, 12.5)
        self.assertTrue(view.transmission_sample_use_wavelength)
        self.assertFalse(view.pixel_adjustment_det_1)
        self.assertFalse(view.pixel_adjustment_det_2)
        self.assertFalse(view.wavelength_adjustment_det_1)
        self.assertFalse(view.wavelength_adjustment_det_2)
        self.assertEqual(view.q_1d_min_or_rebin_string,
                         "0.001,0.001,0.0126,-0.08,0.2")
        self.assertEqual(view.q_xy_max, 0.05)
        self.assertEqual(view.q_xy_step, 0.001)
        self.assertEqual(view.q_xy_step_type, RangeStepType.LIN)
        self.assertTrue(view.gravity_on_off)
        self.assertTrue(view.use_q_resolution)
        self.assertEqual(view.q_resolution_sample_a, 14.)
        self.assertEqual(view.q_resolution_source_a, 13.)
        self.assertEqual(view.q_resolution_delta_r, 11.)
        self.assertEqual(view.q_resolution_collimation_length, 12.)
        self.assertEqual(view.q_resolution_moderator_file,
                         "moderator_rkh_file.txt")
        self.assertTrue(view.phi_limit_use_mirror)
        self.assertEqual(view.radius_limit_min, 12.)
        self.assertEqual(view.radius_limit_min, 12.)
        self.assertEqual(view.radius_limit_max, 15.)
        self.assertTrue(view.compatibility_mode)

        # clean up
        remove_file(user_file_path)
Beispiel #35
0
    def test_that_will_load_user_file(self):
        # Setup presenter and mock view
        user_file_path = create_user_file(sample_user_file)
        view, settings_diagnostic_tab, _ = create_mock_view(user_file_path)
        presenter = RunTabPresenter(SANSFacility.ISIS)
        presenter.set_view(view)

        # Act
        presenter.on_user_file_load()

        # Assert
        # Note that the event slices are not set in the user file
        self.assertFalse(view.event_slices)
        self.assertTrue(
            view.reduction_dimensionality is ReductionDimensionality.OneDim)
        self.assertTrue(view.save_types[0] is SaveType.NXcanSAS)
        self.assertTrue(view.zero_error_free)
        self.assertTrue(view.use_optimizations)
        self.assertTrue(view.reduction_mode is ISISReductionMode.LAB)
        self.assertTrue(view.merge_scale == 1.)
        self.assertTrue(view.merge_shift == 0.)
        self.assertFalse(view.merge_scale_fit)
        self.assertFalse(view.merge_shift_fit)
        self.assertTrue(view.event_binning == "7000.0,500.0,60000.0")
        self.assertTrue(view.wavelength_step_type is RangeStepType.Lin)
        self.assertTrue(view.wavelength_min == 1.5)
        self.assertTrue(view.wavelength_max == 12.5)
        self.assertTrue(view.wavelength_step == 0.125)
        self.assertTrue(view.absolute_scale == 0.074)
        self.assertTrue(view.z_offset == 53.)
        self.assertTrue(view.normalization_incident_monitor == 1)
        self.assertTrue(view.normalization_interpolate)
        self.assertTrue(view.transmission_incident_monitor == 1)
        self.assertTrue(view.transmission_interpolate)
        self.assertTrue(view.transmission_roi_files == "test2.xml")
        self.assertTrue(view.transmission_mask_files == "test4.xml")
        self.assertTrue(view.transmission_radius == 7.)
        self.assertTrue(view.transmission_monitor == 4)
        self.assertTrue(view.transmission_mn_shift == -70)
        self.assertTrue(view.transmission_sample_use_fit)
        self.assertTrue(
            view.transmission_sample_fit_type is FitType.Logarithmic)
        self.assertTrue(view.transmission_sample_polynomial_order == 2)
        self.assertTrue(view.transmission_sample_wavelength_min == 1.5)
        self.assertTrue(view.transmission_sample_wavelength_max == 12.5)
        self.assertTrue(view.transmission_sample_use_wavelength)
        self.assertFalse(view.pixel_adjustment_det_1)
        self.assertFalse(view.pixel_adjustment_det_2)
        self.assertFalse(view.wavelength_adjustment_det_1)
        self.assertFalse(view.wavelength_adjustment_det_2)
        self.assertTrue(
            view.q_1d_min_or_rebin_string == "0.001,0.001,0.0126,-0.08,0.2")
        self.assertTrue(view.q_xy_max == 0.05)
        self.assertTrue(view.q_xy_step == 0.001)
        self.assertTrue(view.q_xy_step_type == RangeStepType.Lin)
        self.assertTrue(view.gravity_on_off)
        self.assertTrue(view.use_q_resolution)
        self.assertTrue(view.q_resolution_sample_a == 14.)
        self.assertTrue(view.q_resolution_source_a == 13.)
        self.assertTrue(view.q_resolution_delta_r == 11.)
        self.assertTrue(view.q_resolution_collimation_length == 12.)
        self.assertTrue(
            view.q_resolution_moderator_file == "moderator_rkh_file.txt")
        self.assertTrue(view.phi_limit_use_mirror)
        self.assertTrue(view.radius_limit_min == 12.)
        self.assertTrue(view.radius_limit_min == 12.)
        self.assertTrue(view.radius_limit_max == 15.)
        self.assertFalse(view.compatibility_mode)
        self.assertTrue(view.show_transmission)

        # Assert that Beam Centre View is updated correctly
        self.assertEqual(view.beam_centre.lab_pos_1, 155.45)
        self.assertEqual(view.beam_centre.lab_pos_2, -169.6)
        self.assertEqual(view.beam_centre.hab_pos_1, 155.45)
        self.assertEqual(view.beam_centre.hab_pos_2, -169.6)

        # clean up
        remove_file(user_file_path)