#include "MetaCoreEditor/MetaCoreEditorModule.h" #include "MetaCoreFoundation/MetaCoreLogService.h" #include "MetaCoreScene/MetaCoreScene.h" #include #include namespace { void MetaCoreExpect(bool condition, const char* message) { if (!condition) { std::cerr << "MetaCoreSmokeTests failed: " << message << '\n'; std::exit(1); } } class MetaCoreDummyPanelProvider final : public MetaCore::MetaCoreIEditorPanelProvider { public: std::string GetPanelId() const override { return "Dummy"; } std::string GetPanelTitle() const override { return "Dummy"; } bool IsOpenByDefault() const override { return false; } void DrawPanel(MetaCore::MetaCoreEditorContext&) override {} }; } // namespace int main() { MetaCore::MetaCoreScene scene = MetaCore::MetaCoreCreateDefaultScene(); MetaCoreExpect(scene.GetGameObjects().size() == 3, "默认场景应包含三个对象"); bool hasCamera = false; bool hasLight = false; bool hasCube = false; for (const MetaCore::MetaCoreGameObject& object : scene.GetGameObjects()) { hasCamera = hasCamera || object.Camera.has_value(); hasLight = hasLight || object.Light.has_value(); hasCube = hasCube || object.MeshRenderer.has_value(); } MetaCoreExpect(hasCamera, "默认场景应包含摄像机"); MetaCoreExpect(hasLight, "默认场景应包含光源"); MetaCoreExpect(hasCube, "默认场景应包含立方体"); MetaCore::MetaCoreEditorModuleRegistry moduleRegistry; moduleRegistry.RegisterPanelProvider(std::make_unique()); MetaCoreExpect(!moduleRegistry.AccessPanelOpenState("Dummy"), "面板默认状态应为关闭"); MetaCore::MetaCoreLogService logService; logService.AddEntry(MetaCore::MetaCoreLogLevel::Info, "Test", "Smoke"); MetaCoreExpect(logService.GetEntries().size() == 1, "日志服务应记录一条日志"); std::cout << "MetaCoreSmokeTests passed\n"; return 0; }