refactor: consolidate engine architecture contracts
This commit is contained in:
1 parent
4e8deb1180
commit
a8b8e83128
677 files changed
+79854
-9670
No files matched your search
+49
-40
@@ -12,7 +12,9 @@ using namespace eve::ui;
|
||||
|
||||
namespace {
|
||||
|
||||
UINode* nodeById(UIHost* host, const std::string& id) { return host ? host->findById(id) : nullptr; }
|
||||
eve::OptionalRef<UINode> nodeById(UIHost& host, const std::string& id) {
|
||||
return host.findById(id);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -31,52 +33,59 @@ TEST_CASE("editorShell.menuDocksAndSwitchesPanels") {
|
||||
CHECK(database.selectClass("ShellHero"));
|
||||
|
||||
EditorShell shell;
|
||||
shell.open(inspector.host(), database.host(), nullptr);
|
||||
UIHost* menu = shell.host();
|
||||
REQUIRE(menu != nullptr);
|
||||
REQUIRE(nodeById(menu, "menu_inspector") != nullptr);
|
||||
REQUIRE(nodeById(menu, "menu_database") != nullptr);
|
||||
REQUIRE(nodeById(menu, "menu_scene") != nullptr);
|
||||
REQUIRE(nodeById(menu, "menu_close") != nullptr);
|
||||
shell.open(inspector.host(), database.host(), {});
|
||||
auto resolvedMenu = UIHost::resolve(shell.host());
|
||||
REQUIRE(resolvedMenu.has_value());
|
||||
UIHost& menu = resolvedMenu->get();
|
||||
REQUIRE(nodeById(menu, "menu_inspector").has_value());
|
||||
REQUIRE(nodeById(menu, "menu_database").has_value());
|
||||
REQUIRE(nodeById(menu, "menu_scene").has_value());
|
||||
REQUIRE(nodeById(menu, "menu_close").has_value());
|
||||
|
||||
UIHost* inspectorHost = inspector.host();
|
||||
UIHost* databaseHost = database.host();
|
||||
REQUIRE(inspectorHost != nullptr);
|
||||
REQUIRE(databaseHost != nullptr);
|
||||
CHECK(inspectorHost->meta()->visible);
|
||||
CHECK(databaseHost->meta()->visible);
|
||||
CHECK(!inspectorHost->meta()->lockPos);
|
||||
CHECK(!inspectorHost->meta()->lockSize);
|
||||
CHECK(inspectorHost->meta()->percentW == 0.3f);
|
||||
REQUIRE(nodeById(menu, "editor_toolbar") != nullptr);
|
||||
CHECK(int(nodeById(menu, "editor_toolbar")->type) == int(NodeType::Toolbar));
|
||||
auto resolvedInspector = UIHost::resolve(inspector.host());
|
||||
auto resolvedDatabase = UIHost::resolve(database.host());
|
||||
REQUIRE(resolvedInspector.has_value());
|
||||
REQUIRE(resolvedDatabase.has_value());
|
||||
UIHost& inspectorHost = resolvedInspector->get();
|
||||
UIHost& databaseHost = resolvedDatabase->get();
|
||||
CHECK(inspectorHost.meta()->visible);
|
||||
CHECK(databaseHost.meta()->visible);
|
||||
CHECK(!inspectorHost.meta()->lockPos);
|
||||
CHECK(!inspectorHost.meta()->lockSize);
|
||||
CHECK(inspectorHost.meta()->percentW == 0.3f);
|
||||
auto toolbar = nodeById(menu, "editor_toolbar");
|
||||
REQUIRE(toolbar.has_value());
|
||||
CHECK(int(toolbar->get().type) == int(NodeType::Toolbar));
|
||||
|
||||
auto tree = menu->tree();
|
||||
UINode* databaseButton = nodeById(menu, "menu_database");
|
||||
REQUIRE_GE(databaseButton->handlerClick, 1u);
|
||||
tree->clickHandlers[size_t(databaseButton->handlerClick - 1)]();
|
||||
CHECK(!databaseHost->meta()->visible);
|
||||
CHECK(inspectorHost->meta()->visible);
|
||||
tree->clickHandlers[size_t(databaseButton->handlerClick - 1)]();
|
||||
CHECK(databaseHost->meta()->visible);
|
||||
auto tree = menu.tree();
|
||||
auto databaseButton = nodeById(menu, "menu_database");
|
||||
REQUIRE(databaseButton.has_value());
|
||||
REQUIRE_GE(databaseButton->get().handlerClick, 1u);
|
||||
tree->clickHandlers[size_t(databaseButton->get().handlerClick - 1)]();
|
||||
CHECK(!databaseHost.meta()->visible);
|
||||
CHECK(inspectorHost.meta()->visible);
|
||||
tree->clickHandlers[size_t(databaseButton->get().handlerClick - 1)]();
|
||||
CHECK(databaseHost.meta()->visible);
|
||||
|
||||
CHECK(shell.selectPanel("inspector"));
|
||||
CHECK(inspectorHost->meta()->visible);
|
||||
CHECK(!databaseHost->meta()->visible);
|
||||
CHECK(inspectorHost.meta()->visible);
|
||||
CHECK(!databaseHost.meta()->visible);
|
||||
|
||||
UINode* inspectorButton = nodeById(menu, "menu_inspector");
|
||||
REQUIRE_GE(inspectorButton->handlerClick, 1u);
|
||||
tree->clickHandlers[size_t(inspectorButton->handlerClick - 1)]();
|
||||
CHECK(!inspectorHost->meta()->visible);
|
||||
auto inspectorButton = nodeById(menu, "menu_inspector");
|
||||
REQUIRE(inspectorButton.has_value());
|
||||
REQUIRE_GE(inspectorButton->get().handlerClick, 1u);
|
||||
tree->clickHandlers[size_t(inspectorButton->get().handlerClick - 1)]();
|
||||
CHECK(!inspectorHost.meta()->visible);
|
||||
|
||||
UINode* closeButton = nodeById(menu, "menu_close");
|
||||
REQUIRE_GE(closeButton->handlerClick, 1u);
|
||||
tree->clickHandlers[size_t(closeButton->handlerClick - 1)]();
|
||||
CHECK(!inspectorHost->meta()->visible);
|
||||
CHECK(!databaseHost->meta()->visible);
|
||||
auto closeButton = nodeById(menu, "menu_close");
|
||||
REQUIRE(closeButton.has_value());
|
||||
REQUIRE_GE(closeButton->get().handlerClick, 1u);
|
||||
tree->clickHandlers[size_t(closeButton->get().handlerClick - 1)]();
|
||||
CHECK(!inspectorHost.meta()->visible);
|
||||
CHECK(!databaseHost.meta()->visible);
|
||||
|
||||
shell.close();
|
||||
CHECK(!shell.isOpen());
|
||||
CHECK(!inspectorHost->meta()->visible);
|
||||
CHECK(!databaseHost->meta()->visible);
|
||||
CHECK(!inspectorHost.meta()->visible);
|
||||
CHECK(!databaseHost.meta()->visible);
|
||||
}
|
||||
Reference in new issue
Block a user