Skip to content

Commit 1ffb188

Browse files
committed
Enable the merging scene index test and add test for removing input scenes.
1 parent d0d5c33 commit 1ffb188

File tree

2 files changed

+73
-14
lines changed

2 files changed

+73
-14
lines changed

pxr/imaging/hd/CMakeLists.txt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,16 @@ pxr_build_test(testHdDataSource
334334
testenv/testHdDataSource.cpp
335335
)
336336

337+
pxr_build_test(testHdMergingSceneIndex
338+
LIBRARIES
339+
hd
340+
sdf
341+
tf
342+
343+
CPPFILES
344+
testenv/testHdMergingSceneIndex.cpp
345+
)
346+
337347
pxr_build_test(testHdSceneIndex
338348
LIBRARIES
339349
hd
@@ -437,6 +447,10 @@ pxr_register_test(testHdDataSource
437447
COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testHdDataSource"
438448
)
439449

450+
pxr_register_test(testHdMergingSceneIndex
451+
COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testHdMergingSceneIndex"
452+
)
453+
440454
pxr_register_test(testHdSceneIndex
441455
COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testHdSceneIndex"
442456
)

pxr/imaging/hd/testenv/testHdMergingSceneIndex.cpp

Lines changed: 59 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,14 @@
88
#include "pxr/imaging/hd/api.h"
99
#include "pxr/imaging/hd/filteringSceneIndex.h"
1010
#include "pxr/imaging/hd/mergingSceneIndex.h"
11+
#include "pxr/imaging/hd/retainedDataSource.h"
1112
#include "pxr/imaging/hd/retainedSceneIndex.h"
1213

1314
#include "pxr/base/tf/declarePtrs.h"
1415

1516
#include <iostream>
1617

17-
template <typename T>
18-
bool
19-
_CompareValue(const char* msg, const T& v1, const T& v2)
20-
{
21-
if (v1 == v2) {
22-
std::cout << msg << " matches." << std::endl;
23-
}
24-
else {
25-
std::cerr << msg << " doesn't match. Expecting " << v2 << " got " << v1
26-
<< std::endl;
27-
return false;
28-
}
29-
return true;
30-
}
18+
PXR_NAMESPACE_USING_DIRECTIVE
3119

3220
TF_DECLARE_REF_PTRS(_MySceneIndex);
3321

@@ -53,6 +41,21 @@ operator<<(std::ostream& out, const std::vector<T>& v)
5341
return out;
5442
}
5543

44+
template <typename T>
45+
bool
46+
_CompareValue(const char* msg, const T& v1, const T& v2)
47+
{
48+
if (v1 == v2) {
49+
std::cout << msg << " matches." << std::endl;
50+
}
51+
else {
52+
std::cerr << msg << " doesn't match. Expecting " << v2 << " got " << v1
53+
<< std::endl;
54+
return false;
55+
}
56+
return true;
57+
}
58+
5659
class _MySceneIndex final : public HdSingleInputFilteringSceneIndexBase
5760
{
5861
public:
@@ -225,6 +228,47 @@ _TestNoticesAfterRemove()
225228
});
226229
}
227230

231+
static bool
232+
_TestRemoveInputScenes()
233+
{
234+
const TfToken primType("PrimType");
235+
auto dataSource = HdRetainedContainerDataSource::New();
236+
237+
HdRetainedSceneIndexRefPtr siA = HdRetainedSceneIndex::New();
238+
siA->AddPrims({ { SdfPath("/A/B/C/D/E/F"), primType, dataSource },
239+
{ SdfPath("/A/B/C/D2"), primType, dataSource } });
240+
241+
HdRetainedSceneIndexRefPtr siB = HdRetainedSceneIndex::New();
242+
siB->AddPrims({ { SdfPath("/A/B/C/D"), primType, dataSource } });
243+
244+
HdRetainedSceneIndexRefPtr siC = HdRetainedSceneIndex::New();
245+
siC->AddPrims({ { SdfPath("/A/B/C"), primType, dataSource } });
246+
247+
HdMergingSceneIndexRefPtr mergingSceneIndex = HdMergingSceneIndex::New();
248+
mergingSceneIndex->AddInputScene(siA, SdfPath("/A/B"));
249+
mergingSceneIndex->AddInputScene(siB, SdfPath("/A/B/C"));
250+
mergingSceneIndex->AddInputScene(siC, SdfPath::AbsoluteRootPath());
251+
252+
_Logger logger;
253+
mergingSceneIndex->AddObserver(HdSceneIndexObserverPtr(&logger));
254+
255+
mergingSceneIndex->RemoveInputScenes({siA, siB});
256+
257+
auto logEntries = logger.GetLog();
258+
259+
return _CompareValue(
260+
"NOTICES", logEntries,
261+
{
262+
_LogEntry("remove", "/A/B/C/D/E"),
263+
_LogEntry("remove", "/A/B/C/D2"),
264+
_LogEntry("add", "/A/B"),
265+
_LogEntry("add", "/A/B/C"),
266+
_LogEntry("add", "/A/B/C/D"),
267+
_LogEntry("remove", "/A/B/C/D"),
268+
_LogEntry("add", "/A/B/C"),
269+
});
270+
}
271+
228272
#define xstr(s) str(s)
229273
#define str(s) #s
230274
#define TEST(X) \
@@ -244,6 +288,7 @@ main(int argc, char** argv)
244288

245289
int i = 0;
246290
TEST(_TestNoticesAfterRemove);
291+
TEST(_TestRemoveInputScenes);
247292

248293
//-------------------------------------------------------------------------
249294
std::cout << "DONE testHdMergingSceneIndex" << std::endl;

0 commit comments

Comments
 (0)