|
6 | 6 | #include <MaterialXTest/External/Catch/catch.hpp> |
7 | 7 |
|
8 | 8 | #include <MaterialXCore/Document.h> |
| 9 | +#include <MaterialXFormat/Util.h> |
9 | 10 |
|
10 | 11 | namespace mx = MaterialX; |
11 | 12 |
|
@@ -60,6 +61,37 @@ TEST_CASE("Element", "[element]") |
60 | 61 | REQUIRE_THROWS_AS(doc2->setChildIndex("elem1", 100), mx::Exception); |
61 | 62 | REQUIRE(*doc2 == *doc); |
62 | 63 |
|
| 64 | + // Check content document membership. |
| 65 | + mx::DocumentPtr contentDoc = mx::createDocument(); |
| 66 | + contentDoc->setSourceUri("content.mtlx"); |
| 67 | + mx::ElementPtr contentElem = contentDoc->addChildOfCategory("generic", "contentElem"); |
| 68 | + REQUIRE(contentElem->belongsToContentDocument()); |
| 69 | + mx::DocumentPtr lib = mx::createDocument(); |
| 70 | + lib->setSourceUri("library.mtlx"); |
| 71 | + lib->addChildOfCategory("generic", "libElem"); |
| 72 | + contentDoc->importLibrary(lib); |
| 73 | + mx::ElementPtr libElem = contentDoc->getChild("libElem"); |
| 74 | + REQUIRE(libElem); |
| 75 | + REQUIRE(!libElem->belongsToContentDocument()); |
| 76 | + |
| 77 | + // Check content document membership for referenced standard library |
| 78 | + // elements, which remain outside the content document. |
| 79 | + mx::FileSearchPath searchPath = mx::getDefaultDataSearchPath(); |
| 80 | + mx::DocumentPtr stdlib = mx::createDocument(); |
| 81 | + mx::loadLibraries({ "libraries" }, searchPath, stdlib); |
| 82 | + |
| 83 | + mx::DocumentPtr docWithDataLibrary = mx::createDocument(); |
| 84 | + docWithDataLibrary->setDataLibrary(stdlib); |
| 85 | + mx::ElementPtr referencedNodeDef = docWithDataLibrary->getChild("ND_image_color3"); |
| 86 | + REQUIRE(referencedNodeDef); |
| 87 | + REQUIRE(!referencedNodeDef->belongsToContentDocument()); |
| 88 | + |
| 89 | + mx::DocumentPtr docWithImportedLibrary = mx::createDocument(); |
| 90 | + docWithImportedLibrary->importLibrary(stdlib); |
| 91 | + mx::ElementPtr importedNodeDef = docWithImportedLibrary->getChild("ND_image_color3"); |
| 92 | + REQUIRE(importedNodeDef); |
| 93 | + REQUIRE(!importedNodeDef->belongsToContentDocument()); |
| 94 | + |
63 | 95 | // Create and test an orphaned element. |
64 | 96 | mx::ElementPtr orphan; |
65 | 97 | { |
|
0 commit comments