using System.Buffers.Binary; namespace MBN_STOCK_WEBVIEW.LegacyWeb.Tests; public sealed class LegacyStartupIntroNativeContractTests { private static readonly string RepositoryRoot = FindRepositoryRoot(); private static readonly string AppRoot = Path.Combine( RepositoryRoot, "src", "MBN_STOCK_WEBVIEW.LegacyParityApp"); private static readonly string WindowXaml = File.ReadAllText( Path.Combine(AppRoot, "MainWindow.xaml")); private static readonly string Window = File.ReadAllText( Path.Combine(AppRoot, "MainWindow.xaml.cs")); private static readonly string StartupIntro = File.ReadAllText( Path.Combine(AppRoot, "MainWindow.StartupIntro.cs")); private static readonly string Manifest = File.ReadAllText( Path.Combine(AppRoot, "Package.appxmanifest")); private static readonly string Project = File.ReadAllText( Path.Combine(AppRoot, "MBN_STOCK_WEBVIEW.LegacyParityApp.csproj")); [Fact] public void IntroUsesOnlyPackagedBrandAssetsAndCompactCopy() { var overlay = Slice( WindowXaml, "x:Name=\"LoadingOverlay\"", ""; Assert.Contains(heroInclude, Project, StringComparison.Ordinal); var heroPath = Path.Combine(RepositoryRoot, "Assets", "StartupHero.png"); var bytes = File.ReadAllBytes(heroPath); Assert.True(bytes.Length > 500_000); Assert.Equal( new byte[] { 137, 80, 78, 71, 13, 10, 26, 10 }, bytes[..8]); Assert.True(bytes.Length >= 24); var width = BinaryPrimitives.ReadInt32BigEndian(bytes.AsSpan(16, 4)); var height = BinaryPrimitives.ReadInt32BigEndian(bytes.AsSpan(20, 4)); Assert.True(width >= 1600); Assert.True(height >= 900); Assert.True((double)width / height > 1.7); } [Fact] public void IntroUsesTheDeepNavyMbnAccentAndShortNativeMotion() { var overlay = Slice( WindowXaml, "x:Name=\"LoadingOverlay\"", ""); Assert.Contains("x:Name=\"Browser\"", browser, StringComparison.Ordinal); Assert.Contains("IsHitTestVisible=\"False\"", browser, StringComparison.Ordinal); Assert.Contains( "LoadingOverlay.Visibility = Visibility.Collapsed;", StartupIntro, StringComparison.Ordinal); Assert.Contains( "LoadingOverlay.IsHitTestVisible = false;", StartupIntro, StringComparison.Ordinal); Assert.Contains( "Browser.IsHitTestVisible = true;", StartupIntro, StringComparison.Ordinal); var loaded = Slice( Window, "private async void OnRootLoaded(", "private void ConfigureWindow()"); Assert.Contains("StartStartupIntro();", loaded, StringComparison.Ordinal); } [Fact] public void MsixSystemSplashMatchesTheNativeIntroCanvas() { Assert.Contains( "BackgroundColor=\"#08182B\"", Manifest, StringComparison.OrdinalIgnoreCase); Assert.Contains( "", Manifest, StringComparison.Ordinal); } private static string Slice(string value, string start, string end) { var startIndex = RequiredIndex(value, start); var endIndex = RequiredIndex(value, end, startIndex + start.Length); return value[startIndex..endIndex]; } private static int RequiredIndex(string value, string needle, int startIndex = 0) { var index = value.IndexOf(needle, startIndex, StringComparison.Ordinal); Assert.True(index >= 0, $"Required marker was not found: {needle}"); return index; } private static string FindRepositoryRoot() { var directory = new DirectoryInfo(AppContext.BaseDirectory); while (directory is not null) { if (File.Exists(Path.Combine(directory.FullName, "MBN_STOCK_WEBVIEW.sln"))) { return directory.FullName; } directory = directory.Parent; } throw new DirectoryNotFoundException("Repository root was not found."); } }