def test_mode_update(self): self.ip._mode_update() self.ip._mode_update() data = RadarData( os.path.join(THIS_DIR, 'input_data', 'small_data_picks.mat')) ip = InteractivePicker(data) ip._mode_update() ip._mode_update()
class TestInteractivePicker(unittest.TestCase): def setUp(self): data = RadarData(os.path.join(THIS_DIR, 'input_data', 'small_data.mat')) self.ip = InteractivePicker(data) def test_other_lims(self): data = RadarData(os.path.join(THIS_DIR, 'input_data', 'small_data.mat')) ip = InteractivePicker(data, xdat='dist') self.assertEqual(ip.x, 'dist') with self.assertRaises(ValueError): ip = InteractivePicker(data, xdat='dum') ip = InteractivePicker(data, ydat='twtt') self.assertEqual(ip.y, 'twtt') ip = InteractivePicker(data, ydat='depth') self.assertEqual(ip.y, 'depth') data.nmo_depth = data.travel_time ip = InteractivePicker(data, ydat='depth') self.assertEqual(ip.y, 'depth') with self.assertRaises(ValueError): ip = InteractivePicker(data, ydat='dum') with self.assertRaises(ValueError): ip = InteractivePicker(data, ydat='elev') data.elevation = np.arange(ip.dat.tnum) data.flags.elev = True ip = InteractivePicker(data, x_range=None) self.assertEqual(ip.x_range, (0, ip.dat.tnum)) def test_PickNum(self): self.ip.pickNumberBox.setValue(1) def test_update_polarity(self): self.assertEqual(self.ip.dat.picks.pickparams.pol, 1) self.ip.wbw_radio.setChecked(True) self.assertEqual(self.ip.dat.picks.pickparams.pol, -1) def test_reverse_color(self): self.assertEqual(self.ip.im.get_cmap(), plt.cm.get_cmap(self.ip.ColorSelector.currentText())) self.ip._update_color_reversal(QtCore.Qt.Checked) self.assertEqual( self.ip.im.get_cmap(), plt.cm.get_cmap(self.ip.ColorSelector.currentText() + '_r')) def test_select_lines_click(self): data = RadarData( os.path.join(THIS_DIR, 'input_data', 'small_data_picks.mat')) self.ip = InteractivePicker(data) event = DummyEvent() event.artist = self.ip.cline[0] self.ip._select_lines_click(event) self.assertEqual(self.ip.pickNumberBox.value(), 1) event.artist = 'dumdum' self.ip._select_lines_click(event) self.assertEqual(self.ip.pickNumberBox.value(), 1) event.artist = self.ip.cline[1] self.ip._select_lines_click(event) self.assertEqual(self.ip.pickNumberBox.value(), 5) def test_freq_update(self): p = self.ip.dat.picks.pickparams.plength self.ip._freq_update(678) self.assertEqual(self.ip.dat.picks.pickparams.freq, 678) self.assertFalse(p == self.ip.dat.picks.pickparams.plength) def test_add_pick(self): #blank pick self.ip._add_pick() self.assertTrue(self.ip.dat.picks.samp1.shape[0] == 1) # Overwrite slot self.ip._add_pick() self.assertTrue(self.ip.dat.picks.samp1.shape[0] == 1) # add to existing data = RadarData( os.path.join(THIS_DIR, 'input_data', 'small_data_picks.mat')) self.ip = InteractivePicker(data) self.assertTrue(self.ip.dat.picks.samp1.shape[0] == 2) self.ip._add_pick() self.assertTrue(self.ip.dat.picks.samp1.shape[0] == 3) # Check that we can add a non-blank pick self.ip._add_pick(snum=10, tnum=2) self.assertTrue(self.ip.dat.picks.samp1.shape[0] == 3) self.assertTrue(self.ip.current_pick[1, 2] > 5) # snum but no tnum self.ip._add_pick(snum=10, tnum=None) self.assertTrue(self.ip.current_pick[1, 0] > 5) def test_color_select(self): self.ip._color_select('bone') self.assertTrue(self.ip.im.get_cmap(), 'bone') self.ip._color_select('CEGSIC') self.assertTrue(self.ip.im.get_cmap(), 'CEGSIC') def test_lim_update(self): self.ip._update_lims(-100, 100) self.assertEqual(self.ip.im.get_clim(), (-100, 100)) with self.assertRaises(ValueError): self.ip._update_lims(100, -100) self.ip.minSpinner.setValue(-999) self.ip.maxSpinner.setValue(999) self.assertEqual(self.ip.im.get_clim(), (-999, 999)) self.ip.minSpinner.setValue(1000) self.assertEqual(self.ip.im.get_clim(), (1000, 1001)) def test_mode_update(self): self.ip._mode_update() self.ip._mode_update() data = RadarData( os.path.join(THIS_DIR, 'input_data', 'small_data_picks.mat')) ip = InteractivePicker(data) ip._mode_update() ip._mode_update() def test_edit_lines_click_existingline(self): # First, plain left click # event has x and y data event = DummyEvent() event.xdata = 10. event.ydata = 1.0e-1 event.button = 1 self.ip._freq_update(800) # assume we have a pick self.ip._add_pick(snum=10, tnum=1) self.ip._add_point_pick = MagicMock() self.ip.update_lines = MagicMock() self.ip._edit_lines_click(event) self.assertTrue(self.ip._add_point_pick.called) self.assertTrue(self.ip.update_lines.called) # now nanpick self.ip._n_pressed = True self.ip._add_nanpick = MagicMock() self.ip.update_lines = MagicMock() self.ip._edit_lines_click(event) self.assertTrue(self.ip._add_nanpick.called) self.assertTrue(self.ip.update_lines.called) self.ip._n_pressed = False # now delete pick event.button = 3 self.ip._delete_picks = MagicMock() self.ip.update_lines = MagicMock() self.ip._edit_lines_click(event) self.assertTrue(self.ip._delete_picks.called) self.assertTrue(self.ip.update_lines.called) @unittest.skipIf(sys.version_info[0] < 3, 'Mock is only on 3+') def test_edit_lines_click_newline(self): # First, plain left click # event has x and y data event = DummyEvent() event.xdata = 10. event.ydata = 1.0e-1 event.button = 1 # assume we have no picks self.ip._add_pick = MagicMock() self.ip.update_lines = MagicMock() self.ip._edit_lines_click(event) self.assertTrue(self.ip._add_pick.called) self.assertTrue(self.ip.update_lines.called) @unittest.skipIf(sys.version_info[0] < 3, 'Mock is only on 3+') def test_add_point_pick(self): # need to mock a lot to not deal with actually doing any picking with patch('impdar.lib.picklib.packet_pick', return_value=np.zeros((5, ))) as mock1: with patch('impdar.lib.picklib.pick', return_value=np.zeros( (5, self.ip.dat.tnum - 1))) as mock2: self.ip._add_pick(0, 0) self.ip._add_point_pick(0, self.ip.dat.tnum - 1) @unittest.skipIf(sys.version_info[0] < 3, 'Mock is only on 3+') def test_add_nan_pick(self): with patch('impdar.lib.picklib.packet_pick', return_value=np.zeros((5, ))) as mock1: self.ip._add_pick(0, 0) self.ip._add_nanpick(1, 10) self.assertEqual(self.ip.dat.picks.lasttrace.snum[0], 1) self.assertEqual(self.ip.dat.picks.lasttrace.tnum[0], 10)