def test_plot_viewport(self): vwp = viewport.PointSpectrumViewport(self.panel) self.add_control(vwp, wx.EXPAND, proportion=1) for horz, vert in PLOTS: vwp.canvas.set_1d_data(horz, vert) vwp.Refresh() test.gui_loop(0.5)
def test_threaded_plot(self): vwp = viewport.PointSpectrumViewport(self.panel) vwp.canvas.SetBackgroundColour("#333") vwp.canvas.SetForegroundColour("#A0CC27") self.add_control(vwp, wx.EXPAND, proportion=1) vwp.canvas.set_plot_mode(canvas.PLOT_MODE_BAR) vwp.canvas.set_plot_mode(canvas.PLOT_MODE_LINE) # vwp.canvas.set_plot_mode(canvas.PLOT_MODE_POINT) data_size = 100 xs = range(data_size) ys = self._generate_sine_list(data_size) is_done = threading.Event() def rotate(q, v): # v.bottom_legend.unit = 'm' scale = 1.001 timeout = time.time() + 8 while time.time() < timeout: v.canvas.set_1d_data(xs, ys, unit_x='m', unit_y='g') q[-1] *= scale q.rotate(1) v.bottom_legend.range = (min(xs), max(xs)) v.bottom_legend.SetToolTip(u"Time (s)") v.left_legend.range = (min(ys), max(ys)) v.left_legend.SetToolTip(u"Count per second") time.sleep(0.01) is_done.set() t = threading.Thread(target=rotate, args=(ys, vwp)) # Setting Daemon to True, will cause the thread to exit when the parent does t.setDaemon(True) t.start() for i in range(10): # Fail after 10s not yet finished test.gui_loop(1) if is_done.is_set(): return self.assertTrue(is_done.is_set())
def test_threaded_plot(self): test.goto_manual() vwp = viewport.PointSpectrumViewport(self.panel) vwp.canvas.SetBackgroundColour("#333") vwp.canvas.SetForegroundColour("#A0CC27") self.add_control(vwp, wx.EXPAND, proportion=1) vwp.canvas.set_plot_mode(canvas.PLOT_MODE_BAR) vwp.canvas.set_plot_mode(canvas.PLOT_MODE_LINE) # vwp.canvas.set_plot_mode(canvas.PLOT_MODE_POINT) data_size = 100 xs = range(data_size) ys = self._generate_sine_list(data_size) def rotate(q, v): # v.bottom_legend.unit = 'm' scale = 1.001 timeout = time.time() + 600 while True: v.canvas.set_1d_data(xs, ys, unit_x='m', unit_y='g') q[-1] *= scale q.rotate(1) if time.time() > timeout: break v.bottom_legend.range = (min(xs), max(xs)) v.bottom_legend.SetToolTipString(u"Time (s)") v.left_legend.range = (min(ys), max(ys)) v.left_legend.SetToolTipString(u"Count per second") # threading._sleep(0.000001) self.frame.Destroy() t = threading.Thread(target=rotate, args=(ys, vwp)) # Setting Daemon to True, will cause the thread to exit when the parent does t.setDaemon(True) t.start() test.gui_loop()
def test_plot_viewport(self): # vwp = viewport.PlotViewport(self.panel) vwp = viewport.PointSpectrumViewport(self.panel) vwp.canvas.SetBackgroundColour("#333") self.add_control(vwp, wx.EXPAND, proportion=1) vwp.canvas.SetForegroundColour("#27C4CC") for mode in MODES: vwp.canvas.set_plot_mode(mode) """ # Note: With the new version of the plotting canvas, which can # be navigated, all ranges will be accepted, and no ValueError is raised for plot in BAD_RANGED_PLOTS: with self.assertRaises(ValueError): logging.debug("Testing range X = %s, range Y = %s", plot[0], plot[1]) vwp.canvas.set_1d_data(plot[2], plot[3], range_x=plot[0], range_y=plot[1]) vwp.canvas.draw() test.gui_loop(0.3) """ vwp.Refresh() for plot in BAD_PLOTS: with self.assertRaises(ValueError): vwp.canvas.set_1d_data(plot[0], plot[1]) vwp.canvas.draw() test.gui_loop(0.1) vwp.Refresh() for plot in INCORRECT_PLOTS: vwp.canvas.set_1d_data(plot[0], plot[1]) vwp.bottom_legend.range = (min(plot[0]), max(plot[0])) vwp.left_legend.range = (min(plot[1]), max(plot[1])) test.gui_loop(0.1) vwp.Refresh() for plot in PLOTS: vwp.canvas.set_1d_data(plot[0], plot[1]) vwp.bottom_legend.range = (min(plot[0]), max(plot[0])) vwp.left_legend.range = (min(plot[1]), max(plot[1])) test.gui_loop(0.1) vwp.Refresh() for plot in RANGED_PLOTS[:-1]: vwp.canvas.set_1d_data(plot[2], plot[3], range_x=plot[0], range_y=plot[1]) vwp.bottom_legend.range = (min(plot[0]), max(plot[0])) vwp.left_legend.range = (min(plot[1]), max(plot[1])) test.gui_loop(0.1) # Test setting ranges for plot in RANGED_PLOTS[:-1]: range_x = plot[0] range_y = plot[1] # data width and height w = abs(range_x[1] - range_x[0]) h = abs(range_y[1] - range_y[0]) vwp.canvas.set_1d_data(plot[2], plot[3], range_x=range_x, range_y=range_y) vwp.bottom_legend.range = (min(plot[0]), max(plot[0])) vwp.left_legend.range = (min(plot[1]), max(plot[1])) # Test setting bad ranges test_xrange = (range_x[1], range_x[0]) with self.assertRaises(ValueError): vwp.hrange.value = test_xrange test_yrange = (range_y[1], range_y[0]) with self.assertRaises(ValueError): vwp.vrange.value = test_yrange # Test setting ranges that fall within the data ranges test_xrange = (range_x[0] + w * 0.2, range_x[1] - w * 0.2) vwp.hrange.value = test_xrange self.assertEqual(vwp.hrange.value, test_xrange) test_yrange = (range_y[0] + h * 0.2, range_y[1] - h * 0.2) vwp.vrange.value = test_yrange self.assertEqual(vwp.vrange.value, test_yrange) test.gui_loop(0.1) vwp.Refresh()