namespace AcDream.UI.Abstractions.Tests; /// /// K.3: gains a top-of-screen menu-bar /// surface for global navigation. Same shape as ImGui's main menu bar: /// open with BeginMainMenuBar, drop top-level menus with /// BeginMenu, drop clickable items with MenuItem (which /// returns true on the frame the user clicks). /// public sealed class IPanelRendererMainMenuBarTests { [Fact] public void BeginMainMenuBar_records_call_and_returns_default_true() { var r = new FakePanelRenderer(); bool result = r.BeginMainMenuBar(); Assert.True(result); Assert.Contains(r.Calls, c => c.Method == "BeginMainMenuBar"); } [Fact] public void BeginMainMenuBar_returns_override_when_set() { var r = new FakePanelRenderer { MainMenuBarReturns = false }; Assert.False(r.BeginMainMenuBar()); } [Fact] public void EndMainMenuBar_records_call() { var r = new FakePanelRenderer(); r.EndMainMenuBar(); Assert.Contains(r.Calls, c => c.Method == "EndMainMenuBar"); } [Fact] public void BeginMenu_records_label_and_returns_default_true() { var r = new FakePanelRenderer(); bool result = r.BeginMenu("View"); Assert.True(result); var call = Assert.Single(r.Calls, c => c.Method == "BeginMenu"); Assert.Equal("View", call.Args[0]); } [Fact] public void BeginMenu_returns_override_when_set() { var r = new FakePanelRenderer { MenuReturns = false }; Assert.False(r.BeginMenu("View")); } [Fact] public void EndMenu_records_call() { var r = new FakePanelRenderer(); r.EndMenu(); Assert.Contains(r.Calls, c => c.Method == "EndMenu"); } [Fact] public void MenuItem_records_label_and_shortcut() { var r = new FakePanelRenderer(); r.MenuItem("Settings", "F11"); var call = Assert.Single(r.Calls, c => c.Method == "MenuItem"); Assert.Equal("Settings", call.Args[0]); Assert.Equal("F11", call.Args[1]); } [Fact] public void MenuItem_returns_override_when_set() { var r = new FakePanelRenderer { MenuItemReturns = true }; Assert.True(r.MenuItem("Settings")); } [Fact] public void MenuItem_default_returns_false_unsclicked() { var r = new FakePanelRenderer(); Assert.False(r.MenuItem("Settings")); } }