Skip to content

Commit

Permalink
BUG: Fix SubjectHierarchyGenericSelfTest
Browse files Browse the repository at this point in the history
Follow-up of 5f7ae8d (ENH: Improve empty folder visibility logic):

- Update test to consider that empty folders are now visible by default.
- Update testAttributeFilters to check for showEmptyHierarchyItems set
  to False and True.

Fixes #7288

Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>
  • Loading branch information
cpinter and jcfr committed Oct 18, 2023
1 parent 417e0a2 commit d472770
Showing 1 changed file with 26 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -473,57 +473,58 @@ def section_AttributeFilters(self):

shProxyModel = shTreeView.sortFilterProxyModel()

def testAttributeFilters(filteredObject, proxyModel):
def testAttributeFilters(filteredObject, proxyModel, showEmptyHierarchyItems=True):

expectedEmptyHierarchyItemCount = 1 if showEmptyHierarchyItems else 0

# Check include node attribute name filter
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 9)
filteredObject.includeNodeAttributeNamesFilter = ['Markups.MovingInSliceView']
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 5)
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 5 + expectedEmptyHierarchyItemCount)
filteredObject.addNodeAttributeFilter('Sajt')
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 9)
filteredObject.includeNodeAttributeNamesFilter = []
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 9)
# Check attribute value filter
filteredObject.addNodeAttributeFilter('Markups.MovingMarkupIndex', 3)
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 3)
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 3 + expectedEmptyHierarchyItemCount)
filteredObject.includeNodeAttributeNamesFilter = []
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 9)
filteredObject.addNodeAttributeFilter('Markups.MovingMarkupIndex', '3')
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 3)
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 3 + expectedEmptyHierarchyItemCount)
filteredObject.includeNodeAttributeNamesFilter = []
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 9)

# Check exclude node attribute name filter (overrides include node attribute name filter)
filteredObject.excludeNodeAttributeNamesFilter = ['Markups.MovingInSliceView']
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 5)
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 4 + expectedEmptyHierarchyItemCount)
filteredObject.excludeNodeAttributeNamesFilter = []
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 9)
# Check if exclude indeed overrides include node attribute name filter
filteredObject.includeNodeAttributeNamesFilter = ['Markups.MovingMarkupIndex']
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 9)
filteredObject.excludeNodeAttributeNamesFilter = ['Markups.MovingInSliceView']
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 4)
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 4 + expectedEmptyHierarchyItemCount)
filteredObject.includeNodeAttributeNamesFilter = []
filteredObject.excludeNodeAttributeNamesFilter = []
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 9)

# Check include item attribute name filter
filteredObject.includeItemAttributeNamesFilter = ['ItemAttribute1']
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 2)
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 2 + expectedEmptyHierarchyItemCount)
filteredObject.includeItemAttributeNamesFilter = ['ItemAttribute1', 'FolderAttribute1']
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 3)
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 2 + expectedEmptyHierarchyItemCount)
filteredObject.addItemAttributeFilter('ItemAttribute2')
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 4)
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 4)
filteredObject.includeItemAttributeNamesFilter = ['ItemAttribute1', 'ItemAttribute2']
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 4)
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 4)
filteredObject.includeItemAttributeNamesFilter = []
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 9)

# Check legacy (item) attribute value filter
filteredObject.attributeNameFilter = 'ItemAttribute1'
filteredObject.attributeValueFilter = '1'
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 2)
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 2 + expectedEmptyHierarchyItemCount)
filteredObject.attributeNameFilter = ''
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 9)

Expand All @@ -534,9 +535,10 @@ def testAttributeFilters(filteredObject, proxyModel):
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 9)
# Check if exclude indeed overrides include item attribute filter
filteredObject.includeItemAttributeNamesFilter = ['ItemAttribute1']
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 2)
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 2 + expectedEmptyHierarchyItemCount)
filteredObject.excludeItemAttributeNamesFilter = ['ItemAttribute1']
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 0)
expectedEmptyHierarchyItemCountAferExclude = 2 if showEmptyHierarchyItems else 0
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 0 + expectedEmptyHierarchyItemCountAferExclude)
filteredObject.includeItemAttributeNamesFilter = []
filteredObject.excludeItemAttributeNamesFilter = []
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 9)
Expand All @@ -548,7 +550,7 @@ def testAttributeFilters(filteredObject, proxyModel):

# Check attribute filtering with class name and attribute value
filteredObject.addNodeAttributeFilter('Markups.MovingMarkupIndex', 3, True, 'vtkMRMLMarkupsCurveNode')
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 3)
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 3 + expectedEmptyHierarchyItemCount)
filteredObject.addNodeAttributeFilter('ParentAttribute', '', True, 'vtkMRMLMarkupsAngleNode')
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 5)
filteredObject.addNodeAttributeFilter('ChildAttribute', '', True, 'vtkMRMLMarkupsAngleNode')
Expand All @@ -557,15 +559,22 @@ def testAttributeFilters(filteredObject, proxyModel):
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 9)
# Check with empty attribute value
filteredObject.addNodeAttributeFilter('Markups.MovingMarkupIndex', '', True, 'vtkMRMLMarkupsCurveNode')
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 4)
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 4 + expectedEmptyHierarchyItemCount)
filteredObject.includeNodeAttributeNamesFilter = []
self.assertEqual(shProxyModel.acceptedItemCount(shNode.GetSceneItemID()), 9)

logging.info('Test attribute filters on proxy model directly')
logging.info('Test attribute filters on proxy model directly (showEmptyHierarchyItems=True)')
testAttributeFilters(shProxyModel, shProxyModel)
logging.info('Test attribute filters on tree view')
logging.info('Test attribute filters on tree view (showEmptyHierarchyItems=True)')
testAttributeFilters(shTreeView, shProxyModel)

shProxyModel.showEmptyHierarchyItems = False

logging.info('Test attribute filters on proxy model directly (showEmptyHierarchyItems=False)')
testAttributeFilters(shProxyModel, shProxyModel, showEmptyHierarchyItems=False)
logging.info('Test attribute filters on tree view (showEmptyHierarchyItems=False)')
testAttributeFilters(shTreeView, shProxyModel, showEmptyHierarchyItems=False)

# ------------------------------------------------------------------------------
def section_ComboboxFeatures(self):
self.delayDisplay("Combobox features", self.delayMs)
Expand Down

0 comments on commit d472770

Please sign in to comment.