summaryrefslogtreecommitdiffstats
path: root/tests/auto/render/layerfiltering/tst_layerfiltering.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/render/layerfiltering/tst_layerfiltering.cpp')
-rw-r--r--tests/auto/render/layerfiltering/tst_layerfiltering.cpp539
1 files changed, 414 insertions, 125 deletions
diff --git a/tests/auto/render/layerfiltering/tst_layerfiltering.cpp b/tests/auto/render/layerfiltering/tst_layerfiltering.cpp
index ed61fce87..c2651c477 100644
--- a/tests/auto/render/layerfiltering/tst_layerfiltering.cpp
+++ b/tests/auto/render/layerfiltering/tst_layerfiltering.cpp
@@ -51,18 +51,14 @@ private Q_SLOTS:
// THEN
QCOMPARE(filterJob.hasLayerFilter(), false);
QCOMPARE(filterJob.filteredEntities().size(), 0);
- QCOMPARE(filterJob.layers().size(), 0);
- QCOMPARE(filterJob.filterMode(), Qt3DRender::QLayerFilter::AcceptMatchingLayers);
+ QCOMPARE(filterJob.layerFilters().size(), 0);
QCOMPARE(frontendLayer.recursive(), false);
}
void filterEntities_data()
{
QTest::addColumn<Qt3DCore::QEntity *>("entitySubtree");
- QTest::addColumn<Qt3DCore::QNodeIdVector>("layerIds");
- QTest::addColumn<bool>("hasLayerFilter");
- QTest::addColumn<Qt3DRender::QLayerFilter::FilterMode>("filterMode");
- QTest::addColumn<bool>("recursive");
+ QTest::addColumn<Qt3DCore::QNodeIdVector>("layerFilterIds");
QTest::addColumn<Qt3DCore::QNodeIdVector>("expectedSelectedEntities");
@@ -77,16 +73,13 @@ private Q_SLOTS:
Q_UNUSED(childEntity3);
QTest::newRow("EntitiesNoLayerNoLayerFilterNoDiscardNoRecursive-ShouldSelectAll") << rootEntity
- << Qt3DCore::QNodeIdVector()
- << false
- << Qt3DRender::QLayerFilter::AcceptMatchingLayers
- << false
- << (Qt3DCore::QNodeIdVector()
- << rootEntity->id()
- << childEntity1->id()
- << childEntity2->id()
- << childEntity3->id()
- );
+ << Qt3DCore::QNodeIdVector()
+ << (Qt3DCore::QNodeIdVector()
+ << rootEntity->id()
+ << childEntity1->id()
+ << childEntity2->id()
+ << childEntity3->id()
+ );
}
{
@@ -95,21 +88,15 @@ private Q_SLOTS:
Qt3DCore::QEntity *childEntity2 = new Qt3DCore::QEntity(rootEntity);
Qt3DCore::QEntity *childEntity3 = new Qt3DCore::QEntity(rootEntity);
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(rootEntity);
+
Q_UNUSED(childEntity1);
Q_UNUSED(childEntity2);
Q_UNUSED(childEntity3);
- QTest::newRow("EntitiesNoLayerNoLayerFilterNoDiscardNoRecursive-ShouldSelectAll") << rootEntity
- << Qt3DCore::QNodeIdVector()
- << false
- << Qt3DRender::QLayerFilter::AcceptMatchingLayers
- << false
- << (Qt3DCore::QNodeIdVector()
- << rootEntity->id()
- << childEntity1->id()
- << childEntity2->id()
- << childEntity3->id()
- );
+ QTest::newRow("EntityNoLayerWithLayerFilterWithNoFilter-ShouldSelectNone") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id())
+ << Qt3DCore::QNodeIdVector();
}
{
@@ -122,18 +109,16 @@ private Q_SLOTS:
Q_UNUSED(childEntity2);
Q_UNUSED(childEntity3);
- QTest::newRow("EntitiesNoLayerNoLayerFilterNoDiscardNoRecursive-ShouldSelectAll") << rootEntity
- << Qt3DCore::QNodeIdVector()
- << false
- << Qt3DRender::QLayerFilter::AcceptMatchingLayers
- << false
- << (Qt3DCore::QNodeIdVector()
- << rootEntity->id()
- << childEntity1->id()
- << childEntity2->id()
- << childEntity3->id()
- );
+ Qt3DRender::QLayer *layer = new Qt3DRender::QLayer(rootEntity);
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter->addLayer(layer);
+
+
+ QTest::newRow("AcceptAny-NoLayerWithLayerFilterWithFilter-ShouldSelectNone") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id())
+ << Qt3DCore::QNodeIdVector();
}
+
{
Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity();
Qt3DCore::QEntity *childEntity1 = new Qt3DCore::QEntity(rootEntity);
@@ -141,16 +126,17 @@ private Q_SLOTS:
Qt3DCore::QEntity *childEntity3 = new Qt3DCore::QEntity(rootEntity);
- Q_UNUSED(childEntity1);
- Q_UNUSED(childEntity2);
- Q_UNUSED(childEntity3);
+ Qt3DRender::QLayer *layer = new Qt3DRender::QLayer(rootEntity);
+ childEntity1->addComponent(layer);
+ childEntity2->addComponent(layer);
+ childEntity3->addComponent(layer);
- QTest::newRow("EntityNoLayerWithLayerFilterWithNoFilter-ShouldSelectNone") << rootEntity
- << Qt3DCore::QNodeIdVector()
- << true
- << Qt3DRender::QLayerFilter::AcceptMatchingLayers
- << false
- << Qt3DCore::QNodeIdVector();
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter->addLayer(layer);
+
+ QTest::newRow("AcceptAny-LayerWithLayerFilterWithFilter-ShouldSelectAllButRoot") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id())
+ << (Qt3DCore::QNodeIdVector() << childEntity1->id() << childEntity2->id() << childEntity3->id());
}
{
@@ -159,19 +145,20 @@ private Q_SLOTS:
Qt3DCore::QEntity *childEntity2 = new Qt3DCore::QEntity(rootEntity);
Qt3DCore::QEntity *childEntity3 = new Qt3DCore::QEntity(rootEntity);
- Q_UNUSED(childEntity1);
- Q_UNUSED(childEntity2);
- Q_UNUSED(childEntity3);
+ Q_UNUSED(childEntity1)
Qt3DRender::QLayer *layer = new Qt3DRender::QLayer(rootEntity);
+ Qt3DRender::QLayer *layer2 = new Qt3DRender::QLayer(rootEntity);
+ childEntity2->addComponent(layer2);
+ childEntity3->addComponent(layer);
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter->addLayer(layer);
+ layerFilter->addLayer(layer2);
- QTest::newRow("NoLayerWithLayerFilterWithFilter-ShouldSelectNone") << rootEntity
- << (Qt3DCore::QNodeIdVector() << layer->id())
- << true
- << Qt3DRender::QLayerFilter::AcceptMatchingLayers
- << false
- << Qt3DCore::QNodeIdVector();
+ QTest::newRow("AcceptAny-LayerWithLayerFilterWithFilter-ShouldSelectChild2And3") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id())
+ << (Qt3DCore::QNodeIdVector() << childEntity2->id() << childEntity3->id());
}
{
@@ -182,16 +169,17 @@ private Q_SLOTS:
Qt3DRender::QLayer *layer = new Qt3DRender::QLayer(rootEntity);
+ Qt3DRender::QLayer *layer2 = new Qt3DRender::QLayer(rootEntity);
childEntity1->addComponent(layer);
childEntity2->addComponent(layer);
childEntity3->addComponent(layer);
- QTest::newRow("LayerWithLayerFilterWithFilter-ShouldSelectAllButRoot") << rootEntity
- << (Qt3DCore::QNodeIdVector() << layer->id())
- << true
- << Qt3DRender::QLayerFilter::AcceptMatchingLayers
- << false
- << (Qt3DCore::QNodeIdVector() << childEntity1->id() << childEntity2->id() << childEntity3->id());
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter->addLayer(layer2);
+
+ QTest::newRow("AcceptAny-LayerWithLayerFilterWithFilter-ShouldSelectNone") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id())
+ << Qt3DCore::QNodeIdVector();
}
{
@@ -200,19 +188,41 @@ private Q_SLOTS:
Qt3DCore::QEntity *childEntity2 = new Qt3DCore::QEntity(rootEntity);
Qt3DCore::QEntity *childEntity3 = new Qt3DCore::QEntity(rootEntity);
- Q_UNUSED(childEntity1)
+ childEntity1->setEnabled(false);
Qt3DRender::QLayer *layer = new Qt3DRender::QLayer(rootEntity);
- Qt3DRender::QLayer *layer2 = new Qt3DRender::QLayer(rootEntity);
- childEntity2->addComponent(layer2);
+ childEntity1->addComponent(layer);
+ childEntity2->addComponent(layer);
childEntity3->addComponent(layer);
- QTest::newRow("LayerWithLayerFilterWithFilter-ShouldSelectChild2And3") << rootEntity
- << (Qt3DCore::QNodeIdVector() << layer->id() << layer2->id())
- << true
- << Qt3DRender::QLayerFilter::AcceptMatchingLayers
- << false
- << (Qt3DCore::QNodeIdVector() << childEntity2->id() << childEntity3->id());
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter->addLayer(layer);
+
+ QTest::newRow("AcceptAny-LayerWithEntityDisabled-ShouldSelectOnlyEntityEnabled") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id())
+ << (Qt3DCore::QNodeIdVector() << childEntity2->id() << childEntity3->id());
+ }
+
+ {
+ Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity();
+ Qt3DCore::QEntity *childEntity1 = new Qt3DCore::QEntity(rootEntity);
+ Qt3DCore::QEntity *childEntity2 = new Qt3DCore::QEntity(rootEntity);
+ Qt3DCore::QEntity *childEntity3 = new Qt3DCore::QEntity(rootEntity);
+
+ Qt3DRender::QLayer *layer = new Qt3DRender::QLayer(rootEntity);
+ layer->setRecursive(true);
+ rootEntity->addComponent(layer);
+
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter->addLayer(layer);
+
+ QTest::newRow("AcceptAny-RecursiveLayerOnRoot-ShouldSelectAll") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id())
+ << (Qt3DCore::QNodeIdVector()
+ << rootEntity->id()
+ << childEntity1->id()
+ << childEntity2->id()
+ << childEntity3->id());
}
{
@@ -221,19 +231,104 @@ private Q_SLOTS:
Qt3DCore::QEntity *childEntity2 = new Qt3DCore::QEntity(rootEntity);
Qt3DCore::QEntity *childEntity3 = new Qt3DCore::QEntity(rootEntity);
+ Q_UNUSED(childEntity1);
+ Q_UNUSED(childEntity2);
+ Q_UNUSED(childEntity3);
+
+ Qt3DRender::QLayer *layer = new Qt3DRender::QLayer(rootEntity);
+ layer->setRecursive(true);
+ rootEntity->addComponent(layer);
+
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter->setFilterMode(Qt3DRender::QLayerFilter::DiscardAnyMatchingLayers);
+ layerFilter->addLayer(layer);
+
+ QTest::newRow("DiscardAny-RecursiveLayerLayerFilterDiscardOnRoot-ShouldSelectNone") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id())
+ << (Qt3DCore::QNodeIdVector());
+ }
+
+ {
+ Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity();
+ Qt3DCore::QEntity *childEntity1 = new Qt3DCore::QEntity(rootEntity);
+ Qt3DCore::QEntity *childEntity2 = new Qt3DCore::QEntity(rootEntity);
+ Qt3DCore::QEntity *childEntity3 = new Qt3DCore::QEntity(rootEntity);
+
+ Qt3DRender::QLayer *layer = new Qt3DRender::QLayer(rootEntity);
+ rootEntity->addComponent(layer);
+
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter->setFilterMode(Qt3DRender::QLayerFilter::DiscardAnyMatchingLayers);
+ layerFilter->addLayer(layer);
+
+ QTest::newRow("DiscardAny-LayerLayerFilterDiscardOnRoot-ShouldSelectAllButRoot") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id())
+ << (Qt3DCore::QNodeIdVector()
+ << childEntity1->id()
+ << childEntity2->id()
+ << childEntity3->id());
+ }
+
+ {
+ Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity();
+ Qt3DCore::QEntity *childEntity1 = new Qt3DCore::QEntity(rootEntity);
+ Qt3DCore::QEntity *childEntity2 = new Qt3DCore::QEntity(rootEntity);
+ Qt3DCore::QEntity *childEntity3 = new Qt3DCore::QEntity(rootEntity);
Qt3DRender::QLayer *layer = new Qt3DRender::QLayer(rootEntity);
Qt3DRender::QLayer *layer2 = new Qt3DRender::QLayer(rootEntity);
- childEntity1->addComponent(layer);
+ Qt3DRender::QLayer *layer3 = new Qt3DRender::QLayer(rootEntity);
+ rootEntity->addComponent(layer);
+
+ childEntity1->addComponent(layer2);
+
+ childEntity2->addComponent(layer3);
+
+ childEntity3->addComponent(layer2);
+ childEntity3->addComponent(layer3);
+ childEntity3->addComponent(layer);
+
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter->setFilterMode(Qt3DRender::QLayerFilter::DiscardAnyMatchingLayers);
+ layerFilter->addLayer(layer2);
+ layerFilter->addLayer(layer3);
+
+ QTest::newRow("DiscardAny-LayerLayerFilterDiscardOnRoot-ShouldSelectRoot") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id())
+ << (Qt3DCore::QNodeIdVector()
+ << rootEntity->id());
+ }
+
+ {
+ Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity();
+ Qt3DCore::QEntity *childEntity1 = new Qt3DCore::QEntity(rootEntity);
+ Qt3DCore::QEntity *childEntity2 = new Qt3DCore::QEntity(rootEntity);
+ Qt3DCore::QEntity *childEntity3 = new Qt3DCore::QEntity(rootEntity);
+
+ Qt3DRender::QLayer *layer = new Qt3DRender::QLayer(rootEntity);
+ Qt3DRender::QLayer *layer2 = new Qt3DRender::QLayer(rootEntity);
+ Qt3DRender::QLayer *layer3 = new Qt3DRender::QLayer(rootEntity);
+
+ rootEntity->addComponent(layer);
+
+ childEntity1->addComponent(layer3);
+ childEntity1->addComponent(layer2);
+
childEntity2->addComponent(layer);
+ childEntity2->addComponent(layer3);
+
childEntity3->addComponent(layer);
+ childEntity3->addComponent(layer2);
- QTest::newRow("LayerWithLayerFilterWithFilter-ShouldSelectNone") << rootEntity
- << (Qt3DCore::QNodeIdVector() << layer2->id())
- << true
- << Qt3DRender::QLayerFilter::AcceptMatchingLayers
- << false
- << Qt3DCore::QNodeIdVector();
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter->setFilterMode(Qt3DRender::QLayerFilter::AcceptAllMatchingLayers);
+ layerFilter->addLayer(layer2);
+ layerFilter->addLayer(layer3);
+
+ QTest::newRow("AcceptAll-LayerFilterWith2LayersNonRecursive-ShouldSelectChild1") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id())
+ << (Qt3DCore::QNodeIdVector()
+ << childEntity1->id());
}
{
@@ -242,19 +337,99 @@ private Q_SLOTS:
Qt3DCore::QEntity *childEntity2 = new Qt3DCore::QEntity(rootEntity);
Qt3DCore::QEntity *childEntity3 = new Qt3DCore::QEntity(rootEntity);
- childEntity1->setEnabled(false);
+ Qt3DRender::QLayer *layer = new Qt3DRender::QLayer(rootEntity);
+ layer->setRecursive(true);
+
+ Qt3DRender::QLayer *layer2 = new Qt3DRender::QLayer(rootEntity);
+ Qt3DRender::QLayer *layer3 = new Qt3DRender::QLayer(rootEntity);
+
+ rootEntity->addComponent(layer);
+
+ childEntity1->addComponent(layer3);
+ childEntity1->addComponent(layer2);
+
+ childEntity2->addComponent(layer3);
+
+ childEntity3->addComponent(layer2);
+
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter->setFilterMode(Qt3DRender::QLayerFilter::AcceptAllMatchingLayers);
+ layerFilter->addLayer(layer);
+ layerFilter->addLayer(layer3);
+
+ QTest::newRow("AcceptAll-LayerFilterWith2LayersRecursive-ShouldSelectChild12") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id())
+ << (Qt3DCore::QNodeIdVector()
+ << childEntity1->id()
+ << childEntity2->id());
+ }
+
+ {
+ Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity();
+ Qt3DCore::QEntity *childEntity1 = new Qt3DCore::QEntity(rootEntity);
+ Qt3DCore::QEntity *childEntity2 = new Qt3DCore::QEntity(rootEntity);
+ Qt3DCore::QEntity *childEntity3 = new Qt3DCore::QEntity(rootEntity);
Qt3DRender::QLayer *layer = new Qt3DRender::QLayer(rootEntity);
- childEntity1->addComponent(layer);
+ layer->setRecursive(true);
+
+ Qt3DRender::QLayer *layer2 = new Qt3DRender::QLayer(rootEntity);
+ Qt3DRender::QLayer *layer3 = new Qt3DRender::QLayer(rootEntity);
+
+ rootEntity->addComponent(layer);
+
+ childEntity1->addComponent(layer3);
+ childEntity1->addComponent(layer2);
+
childEntity2->addComponent(layer);
- childEntity3->addComponent(layer);
+ childEntity2->addComponent(layer3);
+
+ childEntity3->addComponent(layer2);
- QTest::newRow("LayerWithEntityDisabled-ShouldSelectOnlyEntityEnabled") << rootEntity
- << (Qt3DCore::QNodeIdVector() << layer->id())
- << true
- << Qt3DRender::QLayerFilter::AcceptMatchingLayers
- << false
- << (Qt3DCore::QNodeIdVector() << childEntity2->id() << childEntity3->id());
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter->setFilterMode(Qt3DRender::QLayerFilter::AcceptAllMatchingLayers);
+ layerFilter->addLayer(layer);
+ layerFilter->addLayer(layer3);
+
+ QTest::newRow("AcceptAll-LayerFilterWith2LayersRecursiveAndDirectReferenceToRecursiveLayer-ShouldSelectChild12") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id())
+ << (Qt3DCore::QNodeIdVector()
+ << childEntity1->id()
+ << childEntity2->id());
+ }
+
+ {
+ Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity();
+ Qt3DCore::QEntity *childEntity1 = new Qt3DCore::QEntity(rootEntity);
+ Qt3DCore::QEntity *childEntity2 = new Qt3DCore::QEntity(rootEntity);
+ Qt3DCore::QEntity *childEntity3 = new Qt3DCore::QEntity(rootEntity);
+
+ Qt3DRender::QLayer *layer = new Qt3DRender::QLayer(rootEntity);
+ Qt3DRender::QLayer *layer2 = new Qt3DRender::QLayer(rootEntity);
+ Qt3DRender::QLayer *layer3 = new Qt3DRender::QLayer(rootEntity);
+
+ rootEntity->addComponent(layer);
+
+ childEntity1->addComponent(layer);
+ childEntity1->addComponent(layer2);
+
+ childEntity2->addComponent(layer);
+ childEntity2->addComponent(layer3);
+
+ childEntity3->addComponent(layer2);
+ childEntity3->addComponent(layer3);
+
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter->setFilterMode(Qt3DRender::QLayerFilter::DiscardAllMatchingLayers);
+ layerFilter->addLayer(layer2);
+ layerFilter->addLayer(layer3);
+
+ QTest::newRow("DiscardAll-LayerFilterWith2Layers-ShouldSelectRootAndChild12") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id())
+ << (Qt3DCore::QNodeIdVector()
+ << rootEntity->id()
+ << childEntity1->id()
+ << childEntity2->id());
}
{
@@ -265,18 +440,28 @@ private Q_SLOTS:
Qt3DRender::QLayer *layer = new Qt3DRender::QLayer(rootEntity);
layer->setRecursive(true);
+
+ Qt3DRender::QLayer *layer2 = new Qt3DRender::QLayer(rootEntity);
+ Qt3DRender::QLayer *layer3 = new Qt3DRender::QLayer(rootEntity);
+
rootEntity->addComponent(layer);
- QTest::newRow("RecursiveLayerOnRoot-ShouldSelectAll") << rootEntity
- << (Qt3DCore::QNodeIdVector() << layer->id())
- << true
- << Qt3DRender::QLayerFilter::AcceptMatchingLayers
- << true
- << (Qt3DCore::QNodeIdVector()
- << rootEntity->id()
- << childEntity1->id()
- << childEntity2->id()
- << childEntity3->id());
+ childEntity1->addComponent(layer2);
+
+ childEntity2->addComponent(layer3);
+
+ childEntity3->addComponent(layer3);
+
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter->setFilterMode(Qt3DRender::QLayerFilter::DiscardAllMatchingLayers);
+ layerFilter->addLayer(layer);
+ layerFilter->addLayer(layer3);
+
+ QTest::newRow("DiscardAll-LayerFilterWith2LayersRecursive-ShouldSelectRootAndChild1") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id())
+ << (Qt3DCore::QNodeIdVector()
+ << rootEntity->id()
+ << childEntity1->id());
}
{
@@ -285,20 +470,76 @@ private Q_SLOTS:
Qt3DCore::QEntity *childEntity2 = new Qt3DCore::QEntity(rootEntity);
Qt3DCore::QEntity *childEntity3 = new Qt3DCore::QEntity(rootEntity);
- Q_UNUSED(childEntity1);
- Q_UNUSED(childEntity2);
- Q_UNUSED(childEntity3);
+ Qt3DRender::QLayer *layer = new Qt3DRender::QLayer(rootEntity);
+ layer->setRecursive(true);
+
+ Qt3DRender::QLayer *layer2 = new Qt3DRender::QLayer(rootEntity);
+ Qt3DRender::QLayer *layer3 = new Qt3DRender::QLayer(rootEntity);
+
+ rootEntity->addComponent(layer);
+
+ childEntity1->addComponent(layer2);
+ childEntity1->addComponent(layer);
+
+ childEntity2->addComponent(layer3);
+
+ childEntity3->addComponent(layer3);
+
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter->setFilterMode(Qt3DRender::QLayerFilter::DiscardAllMatchingLayers);
+ layerFilter->addLayer(layer);
+ layerFilter->addLayer(layer3);
+
+ QTest::newRow("DiscardAll-LayerFilterWith2LayersRecursiveAndDirectReference-ShouldSelectRootAndChild1") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id())
+ << (Qt3DCore::QNodeIdVector()
+ << rootEntity->id()
+ << childEntity1->id());
+ }
+
+ {
+ Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity();
+ Qt3DCore::QEntity *childEntity1 = new Qt3DCore::QEntity(rootEntity);
+ Qt3DCore::QEntity *childEntity2 = new Qt3DCore::QEntity(rootEntity);
+ Qt3DCore::QEntity *childEntity3 = new Qt3DCore::QEntity(rootEntity);
Qt3DRender::QLayer *layer = new Qt3DRender::QLayer(rootEntity);
layer->setRecursive(true);
+
+ Qt3DRender::QLayer *layer2 = new Qt3DRender::QLayer(rootEntity);
+ Qt3DRender::QLayer *layer3 = new Qt3DRender::QLayer(rootEntity);
+ Qt3DRender::QLayer *layer4 = new Qt3DRender::QLayer(rootEntity);
+ Qt3DRender::QLayer *layer5 = new Qt3DRender::QLayer(rootEntity);
+
rootEntity->addComponent(layer);
- QTest::newRow("RecursiveLayerLayerFilterDiscardOnRoot-ShouldSelectNone") << rootEntity
- << (Qt3DCore::QNodeIdVector() << layer->id())
- << true
- << Qt3DRender::QLayerFilter::DiscardMatchingLayers
- << true
- << (Qt3DCore::QNodeIdVector());
+ childEntity1->addComponent(layer2);
+ childEntity1->addComponent(layer3);
+
+ childEntity2->addComponent(layer2);
+ childEntity2->addComponent(layer3);
+ childEntity2->addComponent(layer4);
+ childEntity2->addComponent(layer5);
+
+ childEntity3->addComponent(layer2);
+ childEntity3->addComponent(layer3);
+ childEntity3->addComponent(layer5);
+
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter->setFilterMode(Qt3DRender::QLayerFilter::AcceptAllMatchingLayers);
+ layerFilter->addLayer(layer);
+ layerFilter->addLayer(layer2);
+ layerFilter->addLayer(layer3);
+
+ Qt3DRender::QLayerFilter *layerFilter2 = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter2->setFilterMode(Qt3DRender::QLayerFilter::DiscardAnyMatchingLayers);
+ layerFilter2->addLayer(layer4);
+ layerFilter2->addLayer(layer5);
+
+ QTest::newRow("NestedFiltering-SelectAllOfLayer123AndNoneOf45-ShouldChild1") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id() << layerFilter2->id())
+ << (Qt3DCore::QNodeIdVector()
+ << childEntity1->id());
}
{
@@ -306,19 +547,73 @@ private Q_SLOTS:
Qt3DCore::QEntity *childEntity1 = new Qt3DCore::QEntity(rootEntity);
Qt3DCore::QEntity *childEntity2 = new Qt3DCore::QEntity(rootEntity);
Qt3DCore::QEntity *childEntity3 = new Qt3DCore::QEntity(rootEntity);
+ Qt3DCore::QEntity *childEntity4 = new Qt3DCore::QEntity(rootEntity);
+ Qt3DCore::QEntity *childEntity5 = new Qt3DCore::QEntity(rootEntity);
Qt3DRender::QLayer *layer = new Qt3DRender::QLayer(rootEntity);
+ layer->setRecursive(true);
+
+ Qt3DRender::QLayer *layer2 = new Qt3DRender::QLayer(rootEntity);
+ Qt3DRender::QLayer *layer3 = new Qt3DRender::QLayer(rootEntity);
+ Qt3DRender::QLayer *layer4 = new Qt3DRender::QLayer(rootEntity);
+ Qt3DRender::QLayer *layer5 = new Qt3DRender::QLayer(rootEntity);
+ Qt3DRender::QLayer *layer6 = new Qt3DRender::QLayer(rootEntity);
+
rootEntity->addComponent(layer);
- QTest::newRow("LayerLayerFilterDiscardOnRoot-ShouldSelectAllButRoot") << rootEntity
- << (Qt3DCore::QNodeIdVector() << layer->id())
- << true
- << Qt3DRender::QLayerFilter::DiscardMatchingLayers
- << false
- << (Qt3DCore::QNodeIdVector()
- << childEntity1->id()
- << childEntity2->id()
- << childEntity3->id());
+ childEntity1->addComponent(layer2);
+ childEntity1->addComponent(layer3);
+
+ childEntity2->addComponent(layer2);
+ childEntity2->addComponent(layer3);
+ childEntity2->addComponent(layer4);
+ childEntity2->addComponent(layer5);
+
+ childEntity3->addComponent(layer2);
+ childEntity3->addComponent(layer5);
+
+ childEntity4->addComponent(layer2);
+ childEntity4->addComponent(layer);
+ childEntity4->addComponent(layer3);
+ childEntity4->addComponent(layer6);
+
+ childEntity5->addComponent(layer3);
+ childEntity5->addComponent(layer4);
+ childEntity5->addComponent(layer6);
+
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter->setFilterMode(Qt3DRender::QLayerFilter::DiscardAnyMatchingLayers);
+ layerFilter->addLayer(layer5);
+ layerFilter->addLayer(layer4);
+
+ Qt3DRender::QLayerFilter *layerFilter2 = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter2->setFilterMode(Qt3DRender::QLayerFilter::AcceptAnyMatchingLayers);
+ layerFilter2->addLayer(layer2);
+ layerFilter2->addLayer(layer3);
+
+ Qt3DRender::QLayerFilter *layerFilter3 = new Qt3DRender::QLayerFilter(rootEntity);
+ layerFilter3->setFilterMode(Qt3DRender::QLayerFilter::AcceptAllMatchingLayers);
+ layerFilter3->addLayer(layer);
+ layerFilter3->addLayer(layer6);
+
+ QTest::newRow("NestedFiltering-SelectAllNoneOfAnyLayer45AndAnyOf23AndAllOf16-ShouldSelectChild4-Step1") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id())
+ << (Qt3DCore::QNodeIdVector()
+ << rootEntity->id()
+ << childEntity1->id()
+ << childEntity4->id()
+ );
+
+ QTest::newRow("NestedFiltering-SelectAllNoneOfAnyLayer45AndAnyOf23AndAllOf16-ShouldSelectChild4-Step2") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id() << layerFilter2->id())
+ << (Qt3DCore::QNodeIdVector()
+ << childEntity1->id()
+ << childEntity4->id());
+
+ QTest::newRow("NestedFiltering-SelectAllNoneOfAnyLayer45AndAnyOf23AndAllOf16-ShouldSelectChild4-Step3") << rootEntity
+ << (Qt3DCore::QNodeIdVector() << layerFilter->id() << layerFilter2->id() << layerFilter3->id())
+ << (Qt3DCore::QNodeIdVector()
+ << childEntity4->id());
}
}
@@ -326,13 +621,9 @@ private Q_SLOTS:
{
//QSKIP("Skipping until TestAspect can be registered");
QFETCH(Qt3DCore::QEntity *, entitySubtree);
- QFETCH(Qt3DCore::QNodeIdVector, layerIds);
- QFETCH(bool, hasLayerFilter);
- QFETCH(Qt3DRender::QLayerFilter::FilterMode, filterMode);
- QFETCH(bool, recursive);
+ QFETCH(Qt3DCore::QNodeIdVector, layerFilterIds);
QFETCH(Qt3DCore::QNodeIdVector, expectedSelectedEntities);
- Q_UNUSED(recursive);
// GIVEN
QScopedPointer<Qt3DRender::TestAspect> aspect(new Qt3DRender::TestAspect(entitySubtree));
@@ -345,17 +636,15 @@ private Q_SLOTS:
// WHEN
Qt3DRender::Render::FilterLayerEntityJob filterJob;
- filterJob.setHasLayerFilter(hasLayerFilter);
- filterJob.setLayers(layerIds);
- filterJob.setFilterMode(filterMode);
+ filterJob.setLayerFilters(layerFilterIds);
filterJob.setManager(aspect->nodeManagers());
filterJob.run();
// THEN
const QVector<Qt3DRender::Render::Entity *> filterEntities = filterJob.filteredEntities();
- QCOMPARE(expectedSelectedEntities.size(), filterEntities.size());
+ QCOMPARE(filterEntities.size(), expectedSelectedEntities.size());
for (auto i = 0, m = expectedSelectedEntities.size(); i < m; ++i)
- QCOMPARE(expectedSelectedEntities.at(i), filterEntities.at(i)->peerId());
+ QCOMPARE(filterEntities.at(i)->peerId(), expectedSelectedEntities.at(i));
}
};