using Xunit; namespace LanMountainDesktop.Tests; public sealed class WindowLayerIsolationTests { [Fact] public void AirAppWindow_DoesNotUseDesktopBottomMostOrTopmostPromotion() { var source = ReadRepositoryFile("LanMountainDesktop.AirAppHost", "AirAppWindow.axaml.cs"); Assert.DoesNotContain("WindowBottomMostServiceFactory", source); Assert.DoesNotContain("IWindowBottomMostService", source); Assert.DoesNotContain("SendToBottom", source); Assert.DoesNotContain("Topmost = true", source); Assert.DoesNotContain("Topmost=true", source); } [Fact] public void AirAppWindowDescriptor_DefinesSupportedChromeModes() { var source = ReadRepositoryFile("LanMountainDesktop.AirAppHost", "AirAppWindowDescriptor.cs"); Assert.Contains("AirAppWindowChromeMode", source); Assert.Contains("Standard", source); Assert.Contains("Borderless", source); Assert.Contains("FullScreen", source); Assert.Contains("Tool", source); Assert.Contains("BackgroundOnly", source); } [Fact] public void AirAppWindowDescriptor_MapsBuiltInAppsToExpectedChromeModes() { var source = ReadRepositoryFile("LanMountainDesktop.AirAppHost", "AirAppWindowDescriptor.cs"); Assert.Contains("AirAppLaunchOptions.WorldClockAppId", source); Assert.Contains("AirAppWindowChromeMode.Standard", source); Assert.Contains("width: 360", source); Assert.Contains("height: 220", source); Assert.Contains("AirAppLaunchOptions.WhiteboardAppId", source); Assert.Contains("AirAppWindowChromeMode.FullScreen", source); } [Fact] public void DesktopComponentHost_DoesNotInterceptLivePointerInputForAirApps() { var source = ReadRepositoryFile("LanMountainDesktop", "Views", "MainWindow.ComponentSystem.cs"); var handlerSource = ExtractMethodSource(source, "OnDesktopComponentHostPointerPressed"); Assert.DoesNotContain("TryOpenAirAppFromDesktopComponent", source); Assert.DoesNotContain("OpenWorldClock(placement.PlacementId", source); Assert.DoesNotContain("OpenWhiteboard(", handlerSource); Assert.DoesNotContain("OpenWorldClock(", handlerSource); } [Fact] public void AnalogClockWidget_OpensWorldClockOnlyInLiveMode() { var source = ReadRepositoryFile("LanMountainDesktop", "Views", "Components", "AnalogClockWidget.axaml.cs"); Assert.Contains("IComponentRuntimeContextAware", source); Assert.Contains("DesktopComponentRenderMode.Live", source); Assert.Contains("OpenWorldClock(_componentId, _placementId)", source); Assert.Contains("BuiltInComponentIds.DesktopClock", source); } [Fact] public void AirAppWindow_WhiteboardBranchReusesWidgetAndSavesOnClose() { var source = ReadRepositoryFile("LanMountainDesktop.AirAppHost", "AirAppWindow.axaml.cs"); Assert.Contains("new WhiteboardWidget(baseWidthCells)", source); Assert.Contains("SetComponentPlacementContext(componentId, _options.SourcePlacementId)", source); Assert.Contains("SetSurfaceMode(", source); Assert.Contains("WhiteboardWidgetSurfaceMode.AirApp", source); Assert.Contains("ForceSaveNote()", source); Assert.Contains("widget.Dispose()", source); } [Fact] public void AirAppHost_LoadsHostThemeForWhiteboardToolFlyouts() { var appXaml = ReadRepositoryFile("LanMountainDesktop.AirAppHost", "AirApp.axaml"); var projectFile = ReadRepositoryFile("LanMountainDesktop.AirAppHost", "LanMountainDesktop.AirAppHost.csproj"); Assert.Contains("= 0, $"Could not locate method '{methodName}'."); var braceIndex = source.IndexOf('{', methodIndex); Assert.True(braceIndex >= 0, $"Could not locate method body for '{methodName}'."); var depth = 0; for (var i = braceIndex; i < source.Length; i++) { if (source[i] == '{') { depth++; } else if (source[i] == '}') { depth--; if (depth == 0) { return source.Substring(methodIndex, i - methodIndex + 1); } } } throw new InvalidOperationException($"Could not extract method '{methodName}'."); } }