using System.Drawing; using System.Linq; using System.Windows.Controls; using System.Windows.Threading; using Microsoft.Web.WebView2.Wpf; using Xunit; using ytLive.Models; using ytLive.Services; namespace ytLive.Tests; [Collection("RealApp")] public sealed class WebView2ManagerTests { private readonly RealAppHost _app; public WebView2ManagerTests(RealAppHost app) { _app = app; } [Fact] public void WebView2_Control_Size_Is_Canvas_Resolution_Regardless_Of_Source() { _app.Run(() => { var panel = new Canvas(); var source = new Source { Type = SourceType.WebSource, Width = 640, Height = 480, }; using var manager = new WebView2Manager(panel, Dispatcher.CurrentDispatcher); manager.Register(source); var webView = panel.Children.OfType().First(); Assert.Equal(1920.0, webView.Width); Assert.Equal(1080.0, webView.Height); }); } [Fact] public void WebView2_Control_Size_Does_Not_Track_Box_After_Register() { _app.Run(() => { var panel = new Canvas(); var source = new Source { Type = SourceType.WebSource, Width = 640, Height = 480, }; using var manager = new WebView2Manager(panel, Dispatcher.CurrentDispatcher); manager.Register(source); var webView = panel.Children.OfType().First(); source.Width = 1024; source.Height = 768; Assert.Equal(1920.0, webView.Width); Assert.Equal(1080.0, webView.Height); }); } [Fact] public void WebView2_Control_Size_Ignores_Zero_Sized_Source() { _app.Run(() => { var panel = new Canvas(); var source = new Source { Type = SourceType.WebSource, Width = 0, Height = 0, }; using var manager = new WebView2Manager(panel, Dispatcher.CurrentDispatcher); manager.Register(source); var webView = panel.Children.OfType().First(); Assert.Equal(1920.0, webView.Width); Assert.Equal(1080.0, webView.Height); }); } [Fact] public void WebView2_DefaultBackgroundColor_Is_Transparent() { _app.Run(() => { var panel = new Canvas(); var source = new Source { Type = SourceType.WebSource, Width = 640, Height = 480, }; using var manager = new WebView2Manager(panel, Dispatcher.CurrentDispatcher); manager.Register(source); var webView = panel.Children.OfType().First(); Assert.Equal(System.Drawing.Color.Transparent, webView.DefaultBackgroundColor); }); } }