Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed the edge cases and added a beefy unit test. #1546 #1556

Merged
merged 1 commit into from
May 29, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion src/sas/qtgui/MainWindow/DataExplorer.py
Original file line number Diff line number Diff line change
Expand Up @@ -1044,7 +1044,10 @@ def isPlotShown(self, plot):
"""
if not hasattr(plot, 'name'):
return False
ids_vals = [val.data[0].name for val in self.active_plots.values()]

ids_vals = [val.data[0].name for val in self.active_plots.values()
if val.data[0].plot_role != Data1D.ROLE_DATA or
isinstance(val.data[0], Data2D)]

return plot.name in ids_vals

Expand Down
97 changes: 95 additions & 2 deletions src/sas/qtgui/MainWindow/UnitTesting/DataExplorerTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@
import path_prepare

# Local
from sas.qtgui.Plotting.PlotterData import Data1D
from sas.qtgui.Plotting.PlotterData import Data1D, Data2D
from sas.sascalc.dataloader.loader import Loader
from sas.qtgui.MainWindow.DataManager import DataManager

from sas.qtgui.MainWindow.DataExplorer import DataExplorerWindow
from sas.qtgui.MainWindow.GuiManager import GuiManager
from sas.qtgui.Utilities.GuiUtils import *
from UnitTesting.TestUtils import QtSignalSpy
from sas.qtgui.UnitTesting.TestUtils import QtSignalSpy
from sas.qtgui.Plotting.Plotter import Plotter
from sas.qtgui.Plotting.Plotter2D import Plotter2D
import sas.qtgui.Plotting.PlotHelper as PlotHelper
Expand Down Expand Up @@ -917,6 +917,99 @@ def testClosePlotsForItem(self):
self.assertEqual(len(PlotHelper.currentPlots()), 0)
self.assertEqual(len(self.form.plot_widgets), 0)

def testPlotsFromMultipleData1D(self):
"""
Tests interplay between plotting 1D datasets and plotting
a single 1D dataset from two separate fit tabs
GH issue 1546
"""
# prepare active_plots
plot1 = Plotter(parent=self.form)
data1 = Data1D()
data1.name = 'p1'
data1.plot_role = Data1D.ROLE_DATA
plot1.data = data1

plot2 = Plotter(parent=self.form)
data2 = Data1D()
data2.name = 'M2 [p1]'
data2.plot_role = Data1D.ROLE_DEFAULT
plot2.data = data2

plot3 = Plotter(parent=self.form)
data3 = Data1D()
data3.name = 'Residuals for M2[p1]'
data3.plot_role = Data1D.ROLE_RESIDUAL
plot3.data = data3

# pretend we're displaying three plots
self.form.active_plots['p1'] = plot1
self.form.active_plots['M2 [p1]'] = plot2
self.form.active_plots['Residuals for M2[p1]'] = plot3

# redoing plots from the same tab
# data -> must be shown
self.assertFalse(self.form.isPlotShown(data1))

# model and residuals are already shown
self.assertTrue(self.form.isPlotShown(data2))
self.assertTrue(self.form.isPlotShown(data3))

# Try from different fit page
plot4 = Plotter(parent=self.form)
data4 = Data1D()
data4.name = 'M1 [p1]'
data4.plot_role = Data1D.ROLE_DEFAULT
plot4.data = data1
# same data but must show, since different model
self.assertFalse(self.form.isPlotShown(data4))

def testPlotsFromMultipleData2D(self):
"""
Tests interplay between plotting 2D datasets and plotting
a single 2D dataset from two separate fit tabs
GH issue 1546
"""
# prepare active_plots
plot1 = Plotter(parent=self.form)
data1 = Data2D()
data1.name = 'p1'
data1.plot_role = Data1D.ROLE_DATA
plot1.data = data1

plot2 = Plotter(parent=self.form)
data2 = Data2D()
data2.name = 'M2 [p1]'
data2.plot_role = Data1D.ROLE_DEFAULT
plot2.data = data2

plot3 = Plotter(parent=self.form)
data3 = Data2D()
data3.name = 'Residuals for M2[p1]'
data3.plot_role = Data1D.ROLE_RESIDUAL
plot3.data = data3

# pretend we're displaying three plots
self.form.active_plots['p1'] = plot1
self.form.active_plots['M2 [p1]'] = plot2
self.form.active_plots['Residuals for M2[p1]'] = plot3

# redoing plots from the same tab
# data -> Already there, don't show
self.assertTrue(self.form.isPlotShown(data1))

# model and residuals are already shown
self.assertTrue(self.form.isPlotShown(data2))
self.assertTrue(self.form.isPlotShown(data3))

# Try from different fit page
plot4 = Plotter(parent=self.form)
data4 = Data2D()
data4.name = 'M1 [p1]'
plot4.data = data1
# same data but must show, since different model
self.assertFalse(self.form.isPlotShown(data4))


if __name__ == "__main__":
unittest.main()