class TestInspector(TestCase): def setUp(self): self.ins = Inspector() exceptionHandler = ExceptionHandler() sys.excepthook = exceptionHandler.handler self.df_timeseries = pd.DataFrame( data=np.random.randn(10,2), index=pd.date_range('2016-10-29 22:00:00', periods=10) ) def tearDown(self): sys.excepthook = sys._excepthook @check_slot_failure def test_load_series_array(self): self.ins.load_series(np.arange(0,1000,0.1)) @check_slot_failure def test_load_series_dataframe(self): self.ins.load_series(self.df_timeseries) self.assertEqual( len(self.ins.model.items), 2 ) @check_slot_failure def test_load_series_timeseries(self): n_data = self.ins.view.outline_view.do_resample_threshold + 1 series = pd.Series( data=range(n_data), index=pd.date_range('2016-10-29 22:00:00', periods=n_data) ) self.ins.load_series(series) @check_slot_failure def test_load_bytes(self): self.ins.view.load_bytes(self.df_timeseries.to_msgpack()) self.assertEqual( len(self.ins.model.items), 2 ) @check_slot_failure def test_load_series_mixed_types(self): self.test_load_series_array() self.test_load_series_timeseries() self.assertEqual( len(self.ins.model.items), 1 ) @check_slot_failure def test_load_series_mixed_types_reversed_order(self): self.test_load_series_timeseries() self.test_load_series_array() self.assertEqual( len(self.ins.model.items), 1 ) @check_slot_failure def test_auto_mark_gaps(self): index_values = [0, 4, 8, 12, 16, 19] metadata = {'metaA': 'foo', 'submetaB': 'bar'} self.ins.view.toggle_plugin(plugins.MarkingsIO, True) self.ins.load_series([ { 'series': pd.Series(index_values, index_values), 'metadata': metadata } ]) mark_io = self.ins.view.plugins[plugins.MarkingsIO.name] mark_io.sig_apply_on_visible.emit( lambda series, metadata: mark_io.auto_mark_gaps( series=series, metadata=metadata, gap_limit=3, label=Labels.DISCARD, ) ) self.assertEqual( len(self.ins.model.items[0].markings), 4 ) self.assertEqual( list(map(attrgetter('start'), self.ins.model.items[0].markings)), [0, 4, 8, 12], ) self.assertEqual( list(map(attrgetter('end'), self.ins.model.items[0].markings)), [4, 8, 12, 16], ) @check_slot_failure def test_move_interval(self): self.ins.load_series(self.df_timeseries) self.ins.view.move_interval('right') self.ins.view.move_interval(direction='left') @check_slot_failure def test_set_marking_label(self): self.ins.view.set_marking_label(Labels.DISCARD) @check_slot_failure def test_remove_selected_list_items(self): self.ins.load_series(self.df_timeseries) self.ins.view.list_view.setSelectionMode( QtWidgets.QAbstractItemView.MultiSelection # Required for selection in test ) self.ins.view.list_view.selectRow(0) self.ins.view.list_view.selectRow(1) self.ins.view.remove_selected_list_items() self.assertEqual(self.ins.model.items, []) @check_slot_failure def test_maximize_display_interval(self): self.ins.load_series(self.df_timeseries) self.ins.view.outline_view.display_maximal_interval() @check_slot_failure def test_set_label_action(self): self.ins.view.actions['label_discard'].trigger() @check_slot_failure def test_move_actions(self): self.ins.view.actions['move_left'].trigger() self.ins.view.actions['move_right'].trigger()