public void Test_WPFBrowserNavigator_Navition_Resolve_OnName() { TestNavigation((wpfbuild, wpfnav, WindowTest) => { wpfnav.Should().NotBeNull(); wpfbuild.Register <A2>("javascript\\navigation_1.html", "Special1"); wpfbuild.Register <A2>("javascript\\navigation_2.html", "Special2"); wpfnav.UseINavigable = true; wpfnav.UseINavigable = true; var a1 = new A2(); var mre = new ManualResetEvent(false); WindowTest.RunOnUIThread( () => { wpfnav.NavigateAsync(a1, "Special1").ContinueWith(t => mre.Set()); }); mre.WaitOne(); WindowTest.RunOnUIThread(() => { //a1.Navigation.Should().Be(wpfnav); a1.Navigation.Should().NotBeNull(); }); Thread.Sleep(1000); WindowTest.RunOnUIThread( () => wpfnav.Source.LocalPath.Should().EndWith("javascript\\navigation_1.html")); mre = new ManualResetEvent(false); WindowTest.RunOnUIThread( () => { wpfnav.NavigateAsync(a1, "Special2").ContinueWith(t => mre.Set()); }); mre.WaitOne(); WindowTest.RunOnUIThread(() => { //a1.Navigation.Should().Be(wpfnav); a1.Navigation.Should().NotBeNull(); }); Thread.Sleep(1000); WindowTest.RunOnUIThread( () => wpfnav.Source.LocalPath.Should().EndWith("javascript\\navigation_2.html")); }); }
public void Test_HTMLWindow_Path() { bool fl = false; EventHandler ea = null; var a = new A1(); string pn = Path.Combine(Path.GetTempPath(), "MVMMAWe"); TestNavigation((wpfbuild, wpfnav, WindowTest) => { wpfnav.SessionPath.Should().BeNull(); wpfnav.SessionPath = pn; ea = (o, e) => { fl = true; wpfnav.OnFirstLoad -= ea; }; wpfnav.OnFirstLoad += ea; wpfnav.Should().NotBeNull(); SetUpRoute(wpfbuild); wpfnav.UseINavigable = true; var mre = new ManualResetEvent(false); WindowTest.RunOnUIThread(() => wpfnav.IsHTMLLoaded.Should().BeFalse()); WindowTest.RunOnUIThread( () => { wpfnav.NavigateAsync(a).ContinueWith(t => mre.Set()); }); mre.WaitOne(); fl.Should().BeTrue(); }); Directory.Exists(pn).Should().BeTrue(); }
public void Test_WPFBrowserNavigator_Simple() { var vm = new VM(); TestNavigation((wpfnav, WindowTest) => { wpfnav.Should().NotBeNull(); _INavigationBuilder.Register <VM>("Navigation data\\index.html"); wpfnav.UseINavigable = true; var mre = new ManualResetEvent(false); DateTime?nav = null; DateTime?Opened = null; DisplayEvent de = null; wpfnav.OnDisplay += (o, e) => { Opened = DateTime.Now; de = e; }; WindowTest.RunOnUIThread( () => { wpfnav.NavigateAsync(vm).ContinueWith ( t => { vm.Navigation.Should().Be(wpfnav); nav = DateTime.Now; mre.Set(); }); }); mre.WaitOne(); mre = new ManualResetEvent(false); Thread.Sleep(4500); de.Should().NotBeNull(); de.DisplayedViewModel.Should().Be(vm); Opened.HasValue.Should().BeTrue(); Opened.Value.Subtract(nav.Value).Should().BeGreaterThan(TimeSpan.FromSeconds(2)). And.BeLessOrEqualTo(TimeSpan.FromSeconds(3)); WindowTest.RunOnUIThread( () => { wpfnav.NavigateAsync(vm).ContinueWith ( t => { mre.Set(); }); }); mre.WaitOne(); Thread.Sleep(500); vm.Navigation.Should().Be(wpfnav); }); }
public void Test_WPFBrowserNavigator_Navition_Resolve_OnName_alernativesignature() { TestNavigation((wpfbuild, wpfnav, WindowTest) => { wpfnav.Should().NotBeNull(); wpfbuild.RegisterAbsolute <A2>(string.Format("{0}\\{1}", Assembly.GetExecutingAssembly().GetPath(), "javascript\\navigation_1.html"), "Special1"); wpfbuild.Register <A2>(new Uri(string.Format("{0}\\{1}", Assembly.GetExecutingAssembly().GetPath(), "javascript\\navigation_2.html")), "Special2"); wpfnav.UseINavigable = true; var a1 = new A2(); var mre = new ManualResetEvent(false); WindowTest.RunOnUIThread( () => { wpfnav.NavigateAsync(a1, "Special1").ContinueWith(t => mre.Set()); }); mre.WaitOne(); WindowTest.RunOnUIThread(() => { //a1.Navigation.Should().Be(wpfnav); a1.Navigation.Should().NotBeNull(); }); WindowTest.RunOnUIThread( () => wpfnav.Source.LocalPath.Should().EndWith("javascript\\navigation_1.html")); mre = new ManualResetEvent(false); WindowTest.RunOnUIThread( () => { wpfnav.NavigateAsync(a1, "Special2").ContinueWith(t => mre.Set()); }); mre.WaitOne(); WindowTest.RunOnUIThread(() => { //a1.Navigation.Should().Be(wpfnav); a1.Navigation.Should().NotBeNull(); }); Thread.Sleep(1000); WindowTest.RunOnUIThread( () => wpfnav.Source.LocalPath.Should().EndWith("javascript\\navigation_2.html")); }); }
public void Test_WPFBrowserNavigator_Navition_Simple() { TestNavigation((wpfbuild, wpfnav, WindowTest) => { wpfnav.Should().NotBeNull(); SetUpRoute(wpfbuild); wpfnav.UseINavigable = true; var a1 = new A1(); var a2 = new A2(); var mre = new ManualResetEvent(false); WindowTest.RunOnUIThread( () => { wpfnav.NavigateAsync(a1).ContinueWith(t => mre.Set()); }); mre.WaitOne(); WindowTest.RunOnUIThread(() => { //a1.Navigation.Should().Be(wpfnav); a1.Navigation.Should().NotBeNull(); }); WindowTest.RunOnUIThread( () => wpfnav.Source.LocalPath.Should().EndWith("javascript\\navigation_1.html")); mre = new ManualResetEvent(false); WindowTest.RunOnUIThread( () => { wpfnav.NavigateAsync(a2).ContinueWith(t => mre.Set()); }); mre.WaitOne(); WindowTest.RunOnUIThread(() => { //a1.Navigation.Should().Be(wpfnav); a2.Navigation.Should().NotBeNull(); a1.Navigation.Should().BeNull(); }); WindowTest.RunOnUIThread(() => wpfnav.Source.LocalPath.Should().EndWith("javascript\\navigation_2.html")); }); }
public void Test_HTMLWindowRecovery_UnderClosure_Capacity_Base() { //bool fl = false; //EventHandler ea = null; var a = new A1(); IWebSessionWatcher watch = Substitute.For <IWebSessionWatcher>(); TestNavigation((wpfbuild, wpfnav, WindowTest) => { wpfnav.WebSessionWatcher.Should().NotBeNull(); wpfnav.WebSessionWatcher = watch; //ea = (o, e) => { fl = true; wpfnav.OnFirstLoad -= ea; }; //wpfnav.OnFirstLoad += ea; //wpfnav.Should().NotBeNull(); SetUpRoute(wpfbuild); wpfnav.UseINavigable = true; var mre = new ManualResetEvent(false); WindowTest.RunOnUIThread(() => wpfnav.IsHTMLLoaded.Should().BeFalse()); WindowTest.RunOnUIThread( () => { wpfnav.NavigateAsync(a).ContinueWith(t => mre.Set()); }); mre.WaitOne(); WindowTest.RunOnUIThread(() => { wpfnav.IsHTMLLoaded.Should().BeTrue(); //a1.Navigation.Should().Be(wpfnav); a.Navigation.Should().NotBeNull(); System.Windows.Application.Current.Shutdown(); var p = (a.Navigation as IWebViewProvider).WebView.RenderProcess; WebCore.Shutdown(); //p.Kill(); mre.Set(); }); mre.WaitOne(); Thread.Sleep(1000); watch.DidNotReceive().LogCritical("WebView crashed trying recover"); }, false, false); }
private Exception Test_HTMLWindow_WebCoreShutDown_Base_Exception(IWebSessionWatcher iWatcher) { var a = new AA1(); Exception res = null; TestNavigation((wpfbuild, wpfnav, WindowTest) => { wpfnav.WebSessionWatcher.Should().NotBeNull(); if (iWatcher != null) { wpfnav.WebSessionWatcher = iWatcher; } SetUpRoute(wpfbuild); wpfnav.UseINavigable = true; IAwesomeBinding bind = null; var mre = new ManualResetEvent(false); WindowTest.RunOnUIThread(() => wpfnav.IsHTMLLoaded.Should().BeFalse()); WindowTest.RunOnUIThread( () => { wpfnav.NavigateAsync(a).ContinueWith(t => { var tt = t as Task <IAwesomeBinding>; bind = tt.Result; mre.Set(); }); }); mre.WaitOne(); WindowTest.RunOnUIThread(() => { wpfnav.IsHTMLLoaded.Should().BeTrue(); a.Navigation.Should().NotBeNull(); var js = bind.JSRootObject; JSObject mycommand = (JSObject)js.Invoke("Change"); mycommand.Invoke("Execute"); }); Thread.Sleep(1500); res = a.Exception; }); return(res); }
public void Test_WPFBrowserNavigator_Navition_Resolve_NotFound() { TestNavigation((wpfbuild, wpfnav, WindowTest) => { wpfnav.Should().NotBeNull(); wpfnav.UseINavigable = true; var a1 = new A2(); WindowTest.RunOnUIThread( () => { Action wf = () => wpfnav.NavigateAsync(a1); wf.ShouldThrow <Exception>(); }); }); }
public void Test_WPFBrowserNavigator_Navition_Resolve_OnBaseType_ShoulFailed() { TestNavigation((wpfbuild, wpfnav, WindowTest) => { wpfnav.Should().NotBeNull(); wpfbuild.Register <A>("javascript\\navigation_1.html"); wpfbuild.Register <A1>("javascript\\navigation_2.html", "Special"); wpfnav.UseINavigable = true; var a1 = new object(); WindowTest.RunOnUIThread( () => { Action wf = () => wpfnav.NavigateAsync(a1); wf.ShouldThrow <Exception>(); }); }); }
public void Test_WPFBrowserNavigator_Navition_Debug_One_NoDebug() { TestNavigation((wpfbuild, wpfnav, WindowTest) => { WindowTest.RunOnUIThread(() => { wpfnav.IsDebug.Should().BeFalse(); DispatcherTimer dt = new DispatcherTimer(); dt.Interval = TimeSpan.FromSeconds(10); dt.Tick += (o, e) => { dt.Stop(); System.Windows.Application.Current.Shutdown(); }; dt.Start(); wpfnav.OpenDebugBrowser(); }); }); }
public void Test_HTMLWindow_Event() { bool fl = false; EventHandler ea = null; var a = new A1(); string pn = Path.Combine(Path.GetTempPath(), "MVMMAWe"); bool fslr = false; NavigationEvent nea = null; TestNavigation((wpfbuild, wpfnav, WindowTest) => { wpfnav.OnFirstLoad += (o, e) => { fslr = true; }; wpfnav.OnNavigate += (o, e) => { nea = e; }; ea = (o, e) => { fl = true; wpfnav.OnFirstLoad -= ea; }; wpfnav.OnFirstLoad += ea; wpfnav.Should().NotBeNull(); SetUpRoute(wpfbuild); wpfnav.UseINavigable = true; var mre = new ManualResetEvent(false); WindowTest.RunOnUIThread(() => wpfnav.IsHTMLLoaded.Should().BeFalse()); WindowTest.RunOnUIThread( () => { wpfnav.NavigateAsync(a).ContinueWith(t => mre.Set()); }); mre.WaitOne(); fl.Should().BeTrue(); }); fslr.Should().BeTrue(); nea.Should().NotBeNull(); nea.OldViewModel.Should().BeNull(); nea.NewViewModel.Should().Be(a); }
public void Test_WPFBrowserNavigator_Simple() { bool fl = false; EventHandler ea = null; TestNavigation((wpfbuild, wpfnav, WindowTest) => { ea = (o, e) => { fl = true; wpfnav.OnFirstLoad -= ea; }; wpfnav.OnFirstLoad += ea; wpfnav.Should().NotBeNull(); SetUpRoute(wpfbuild); wpfnav.UseINavigable = true; var a = new A1(); var mre = new ManualResetEvent(false); WindowTest.RunOnUIThread(() => wpfnav.IsHTMLLoaded.Should().BeFalse()); WindowTest.RunOnUIThread( () => { wpfnav.NavigateAsync(a).ContinueWith(t => mre.Set()); }); mre.WaitOne(); fl.Should().BeTrue(); WindowTest.RunOnUIThread(() => { wpfnav.IsHTMLLoaded.Should().BeTrue(); //a1.Navigation.Should().Be(wpfnav); a.Navigation.Should().NotBeNull(); }); mre.WaitOne(); }); }
private void Test_HTMLWindow_WebCoreShutDown_Base(IWebSessionWatcher iWatcher) { var a = new A1(); TestNavigation((wpfbuild, wpfnav, WindowTest) => { wpfnav.WebSessionWatcher.Should().NotBeNull(); if (iWatcher != null) { wpfnav.WebSessionWatcher = iWatcher; } SetUpRoute(wpfbuild); wpfnav.UseINavigable = true; var mre = new ManualResetEvent(false); WindowTest.RunOnUIThread(() => wpfnav.IsHTMLLoaded.Should().BeFalse()); WindowTest.RunOnUIThread( () => { wpfnav.NavigateAsync(a).ContinueWith(t => mre.Set()); }); mre.WaitOne(); WindowTest.RunOnUIThread(() => { wpfnav.IsHTMLLoaded.Should().BeTrue(); a.Navigation.Should().NotBeNull(); }); WebCore.Shutdown(); Thread.Sleep(1500); }); }
private void Test_HTMLWindowRecovery_Capacity_Base(IWebSessionWatcher iWatcher) { bool fl = false; EventHandler ea = null; var a = new A1(); TestNavigation((wpfbuild, wpfnav, WindowTest) => { wpfnav.WebSessionWatcher.Should().NotBeNull(); if (iWatcher != null) { wpfnav.WebSessionWatcher = iWatcher; } ea = (o, e) => { fl = true; wpfnav.OnFirstLoad -= ea; }; wpfnav.OnFirstLoad += ea; wpfnav.Should().NotBeNull(); SetUpRoute(wpfbuild); wpfnav.UseINavigable = true; var mre = new ManualResetEvent(false); WindowTest.RunOnUIThread(() => wpfnav.IsHTMLLoaded.Should().BeFalse()); WindowTest.RunOnUIThread( () => { wpfnav.NavigateAsync(a).ContinueWith(t => mre.Set()); }); mre.WaitOne(); fl.Should().BeTrue(); WindowTest.RunOnUIThread(() => { wpfnav.IsHTMLLoaded.Should().BeTrue(); //a1.Navigation.Should().Be(wpfnav); a.Navigation.Should().NotBeNull(); }); mre.WaitOne(); var webv = (a.Navigation as IWebViewProvider).WebView; mre = new ManualResetEvent(false); Process p = null; WindowTest.RunOnUIThread(() => { p = webv.RenderProcess; p.Kill(); mre.Set(); }); mre.WaitOne(); Thread.Sleep(500); p.WaitForExit(); Process np = null; mre = new ManualResetEvent(false); WindowTest.RunOnUIThread(() => { np = webv.RenderProcess; mre.Set(); }); np.Should().NotBe(p); }); }
public void Test_WPFBrowserNavigator_Navition_Debug_One() { TestNavigation((wpfbuild, wpfnav, WindowTest) => { WindowTest.RunOnUIThread(() => { wpfnav.IsDebug.Should().BeTrue(); Action safe = () => wpfnav.ShowDebugWindow(); safe.ShouldNotThrow <Exception>(); }); wpfnav.Should().NotBeNull(); wpfbuild.Register <A>("javascript\\navigation_1.html"); wpfbuild.Register <A1>("javascript\\navigation_2.html", "Special"); wpfnav.UseINavigable = true; wpfnav.UseINavigable.Should().BeTrue(); wpfnav.EnableBrowserDebug = true; wpfnav.EnableBrowserDebug.Should().BeTrue(); wpfnav.OnNavigate += wpfnav_OnNavigate; wpfnav.OnNavigate -= wpfnav_OnNavigate; var a1 = new A2(); var mre = new ManualResetEvent(false); WindowTest.RunOnUIThread( () => { wpfnav.NavigateAsync(a1).ContinueWith(t => mre.Set()); }); mre.WaitOne(); WindowTest.RunOnUIThread(() => { a1.Navigation.Should().NotBeNull(); wpfnav.Source.LocalPath.Should().EndWith("javascript\\navigation_1.html"); wpfnav.ShowDebugWindow(); wpfnav.OpenDebugBrowser(); }); WindowTest.RunOnUIThread(() => { wpfnav.Focus(); wpfnav.RaiseEvent( new System.Windows.Input.KeyEventArgs( Keyboard.PrimaryDevice, PresentationSource.FromVisual(wpfnav), 0, Key.F5) { RoutedEvent = Keyboard.PreviewKeyDownEvent } ); }); }, true); }