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.");
}
}