Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSybren A. Stüvel <sybren@blender.org>2021-10-21 16:53:12 +0300
committerSybren A. Stüvel <sybren@blender.org>2021-10-21 16:53:16 +0300
commit5ccec8ec6bed3e0eda1cffaae565fdfaccd2a6ac (patch)
treeb6f6523e8a3f9e0a9ab1f20171028b03621f026d /source/blender/blenkernel/intern/asset_catalog_test.cc
parent9a1fce698bc6dd51c66464f9dcccfb89d0432823 (diff)
Asset Catalogs: treat first-loaded catalog as main catalog
When there are multiple catalogs with the same path (so different UUIDs all mapped to the same catalog path), treat the first-loaded one as the main catalog for that path, and the rest as aliases. This ensures that the UUID of a catalog (as chosen in the tree UI and thus interacted with by users) is stable, regardless of whether by some coincidence later another catalog with the same UUID is created.
Diffstat (limited to 'source/blender/blenkernel/intern/asset_catalog_test.cc')
-rw-r--r--source/blender/blenkernel/intern/asset_catalog_test.cc32
1 files changed, 32 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/asset_catalog_test.cc b/source/blender/blenkernel/intern/asset_catalog_test.cc
index 478d2d2b31e..7691658bc57 100644
--- a/source/blender/blenkernel/intern/asset_catalog_test.cc
+++ b/source/blender/blenkernel/intern/asset_catalog_test.cc
@@ -39,6 +39,7 @@ const bUUID UUID_POSES_RUZENA("79a4f887-ab60-4bd4-94da-d572e27d6aed");
const bUUID UUID_POSES_RUZENA_HAND("81811c31-1a88-4bd7-bb34-c6fc2607a12e");
const bUUID UUID_POSES_RUZENA_FACE("82162c1f-06cc-4d91-a9bf-4f72c104e348");
const bUUID UUID_WITHOUT_SIMPLENAME("d7916a31-6ca9-4909-955f-182ca2b81fa3");
+const bUUID UUID_ANOTHER_RUZENA("00000000-d9fa-4b91-b704-e6af1f1339ef");
/* UUIDs from lib/tests/asset_library/modified_assets.cats.txt */
const bUUID UUID_AGENT_47("c5744ba5-43f5-4f73-8e52-010ad4a61b34");
@@ -290,6 +291,37 @@ TEST_F(AssetCatalogTest, load_single_file)
EXPECT_EQ(UUID_POSES_RUZENA, poses_ruzena->catalog_id);
EXPECT_EQ("character/Ružena/poselib", poses_ruzena->path.str());
EXPECT_EQ("POSES_RUŽENA", poses_ruzena->simple_name);
+
+ /* Test getting a catalog that aliases an earlier-defined catalog. */
+ AssetCatalog *another_ruzena = service.find_catalog(UUID_ANOTHER_RUZENA);
+ ASSERT_NE(nullptr, another_ruzena);
+ EXPECT_EQ(UUID_ANOTHER_RUZENA, another_ruzena->catalog_id);
+ EXPECT_EQ("character/Ružena/poselib", another_ruzena->path.str());
+ EXPECT_EQ("Another Ružena", another_ruzena->simple_name);
+}
+
+TEST_F(AssetCatalogTest, is_first_loaded_flag)
+{
+ AssetCatalogService service(asset_library_root_);
+ service.load_from_disk(asset_library_root_ + "/" + "blender_assets.cats.txt");
+
+ AssetCatalog *new_cat = service.create_catalog("never/before/seen/path");
+ EXPECT_FALSE(new_cat->flags.is_first_loaded)
+ << "Adding a catalog at runtime should never mark it as 'first loaded'; "
+ "only loading from disk is allowed to do that.";
+
+ AssetCatalog *alias_cat = service.create_catalog("character/Ružena/poselib");
+ EXPECT_FALSE(alias_cat->flags.is_first_loaded)
+ << "Adding a new catalog with an already-loaded path should not mark it as 'first loaded'";
+
+ EXPECT_TRUE(service.find_catalog(UUID_POSES_ELLIE)->flags.is_first_loaded);
+ EXPECT_TRUE(service.find_catalog(UUID_POSES_ELLIE_WHITESPACE)->flags.is_first_loaded);
+ EXPECT_TRUE(service.find_catalog(UUID_POSES_RUZENA)->flags.is_first_loaded);
+ EXPECT_FALSE(service.find_catalog(UUID_ANOTHER_RUZENA)->flags.is_first_loaded);
+
+ AssetCatalog *ruzena = service.find_catalog_by_path("character/Ružena/poselib");
+ EXPECT_EQ(UUID_POSES_RUZENA, ruzena->catalog_id)
+ << "The first-seen definition of a catalog should be returned";
}
TEST_F(AssetCatalogTest, insert_item_into_tree)