Sync editor rendering and UI workspace updates

This commit is contained in:
2026-04-09 02:59:36 +08:00
parent 23b23a56be
commit d46bf87970
107 changed files with 10918 additions and 430 deletions

View File

@@ -37,6 +37,58 @@ TEST(UISelectionModelTest, ToggleSelectionSelectsAndDeselectsMatchingId) {
EXPECT_EQ(selection.GetSelectedId(), "treeMaterials");
EXPECT_TRUE(selection.ToggleSelection("treeUi"));
EXPECT_EQ(selection.GetSelectedId(), "treeUi");
ASSERT_EQ(selection.GetSelectedIds().size(), 1u);
EXPECT_EQ(selection.GetSelectedIds()[0], "treeUi");
}
TEST(UISelectionModelTest, MultiSelectionTracksMembershipAndPrimarySelection) {
UISelectionModel selection = {};
EXPECT_TRUE(selection.AddSelection("scene", true));
EXPECT_TRUE(selection.AddSelection("camera"));
EXPECT_TRUE(selection.AddSelection("lights"));
EXPECT_EQ(selection.GetSelectionCount(), 3u);
EXPECT_TRUE(selection.HasMultipleSelection());
EXPECT_TRUE(selection.IsSelected("scene"));
EXPECT_TRUE(selection.IsSelected("camera"));
EXPECT_TRUE(selection.IsSelected("lights"));
EXPECT_EQ(selection.GetSelectedId(), "scene");
EXPECT_TRUE(selection.SetPrimarySelection("lights"));
EXPECT_EQ(selection.GetSelectedId(), "lights");
EXPECT_FALSE(selection.SetPrimarySelection("missing"));
}
TEST(UISelectionModelTest, SetSelectionsNormalizesDuplicatesAndKeepsRequestedPrimary) {
UISelectionModel selection = {};
EXPECT_TRUE(selection.SetSelections(
{ "", "camera", "lights", "camera", "sun" },
"lights"));
ASSERT_EQ(selection.GetSelectedIds().size(), 3u);
EXPECT_EQ(selection.GetSelectedIds()[0], "camera");
EXPECT_EQ(selection.GetSelectedIds()[1], "lights");
EXPECT_EQ(selection.GetSelectedIds()[2], "sun");
EXPECT_EQ(selection.GetSelectedId(), "lights");
EXPECT_TRUE(selection.SetSelections({ "camera", "sun" }));
EXPECT_EQ(selection.GetSelectedId(), "sun");
}
TEST(UISelectionModelTest, RemovingPrimaryFallsBackToMostRecentlyAddedRemainingItem) {
UISelectionModel selection = {};
EXPECT_TRUE(selection.SetSelections({ "scene", "camera", "lights" }, "camera"));
EXPECT_TRUE(selection.RemoveSelection("camera"));
EXPECT_TRUE(selection.IsSelected("scene"));
EXPECT_TRUE(selection.IsSelected("lights"));
EXPECT_FALSE(selection.IsSelected("camera"));
EXPECT_EQ(selection.GetSelectedId(), "lights");
EXPECT_TRUE(selection.RemoveSelection("lights"));
EXPECT_EQ(selection.GetSelectedId(), "scene");
EXPECT_TRUE(selection.RemoveSelection("scene"));
EXPECT_FALSE(selection.HasSelection());
}
} // namespace