Add XCUI editor collection primitives and stack rollback
This commit is contained in:
@@ -205,3 +205,34 @@ TEST(UIRuntimeTest, ScreenStackControllerReplaceTopSwapsMenuContent) {
|
||||
EXPECT_TRUE(DrawDataContainsText(frame.drawData, "Settings Menu"));
|
||||
EXPECT_FALSE(DrawDataContainsText(frame.drawData, "Pause Menu"));
|
||||
}
|
||||
|
||||
TEST(UIRuntimeTest, ScreenStackControllerReplaceTopKeepsPreviousScreenWhenReplacementFails) {
|
||||
TempFileScope pauseView("xcui_runtime_pause", ".xcui", BuildViewMarkup("Pause Menu"));
|
||||
|
||||
UIDocumentScreenHost host = {};
|
||||
UISystem system(host);
|
||||
UIScreenStackController stack(system);
|
||||
|
||||
const auto pauseLayer = stack.PushMenu(BuildScreenAsset(pauseView.Path(), "runtime.pause"), "pause");
|
||||
ASSERT_NE(pauseLayer, 0u);
|
||||
|
||||
XCEngine::UI::Runtime::UIScreenLayerOptions replacementOptions = {};
|
||||
replacementOptions.debugName = "broken";
|
||||
replacementOptions.acceptsInput = true;
|
||||
replacementOptions.blocksLayersBelow = true;
|
||||
|
||||
UIScreenAsset invalidAsset = {};
|
||||
invalidAsset.screenId = "runtime.invalid";
|
||||
invalidAsset.documentPath = (fs::temp_directory_path() / "xcui_missing_runtime_screen.xcui").string();
|
||||
|
||||
EXPECT_FALSE(stack.ReplaceTop(invalidAsset, replacementOptions));
|
||||
ASSERT_EQ(stack.GetEntryCount(), 1u);
|
||||
ASSERT_NE(stack.GetTop(), nullptr);
|
||||
EXPECT_EQ(stack.GetTop()->layerId, pauseLayer);
|
||||
EXPECT_EQ(stack.GetTop()->asset.screenId, "runtime.pause");
|
||||
EXPECT_EQ(system.GetLayerCount(), 1u);
|
||||
|
||||
const auto& frame = system.Update(BuildInputState(6u));
|
||||
EXPECT_EQ(frame.presentedLayerCount, 1u);
|
||||
EXPECT_TRUE(DrawDataContainsText(frame.drawData, "Pause Menu"));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user