public async Task ReactInstanceManager_ArgumentChecks() { var manager = CreateReactInstanceManager(); AssertEx.Throws <ArgumentNullException>( () => manager.AttachMeasuredRootView(null), ex => Assert.AreEqual("rootView", ex.ParamName)); AssertEx.Throws <ArgumentNullException>( () => manager.CreateAllViewManagers(null), ex => Assert.AreEqual("reactContext", ex.ParamName)); AssertEx.Throws <ArgumentNullException>( () => manager.DetachRootView(null), ex => Assert.AreEqual("rootView", ex.ParamName)); AssertEx.Throws <ArgumentNullException>( () => manager.OnResume(null), ex => Assert.AreEqual("onBackPressed", ex.ParamName)); await DispatcherHelpers.RunOnDispatcherAsync(manager.OnDestroy); }
public async Task ReactInstanceManager_RecreateReactContextAsync_EnsuresCalledOnce() { var jsBundleFile = "ms-appx:///Resources/test.js"; var manager = CreateReactInstanceManager(jsBundleFile); var caught = false; await DispatcherHelpers.RunOnDispatcherAsync(async() => { try { await manager.RecreateReactContextAsync(CancellationToken.None); } catch (InvalidOperationException) { caught = true; } }); Assert.IsTrue(caught); await DispatcherHelpers.CallOnDispatcherAsync(manager.DisposeAsync); }
public async Task ReactInstanceManager_RecreateInBackground_EnsuresCalledOnce() { var jsBundleFile = "ms-appx:///Resources/test.js"; var manager = CreateReactInstanceManager(jsBundleFile); var caught = false; await DispatcherHelpers.RunOnDispatcherAsync(() => { try { manager.RecreateReactContextInBackground(); } catch (InvalidOperationException) { caught = true; } }); Assert.IsTrue(caught); await DispatcherHelpers.RunOnDispatcherAsync(manager.OnDestroy); }
public async Task ReactInstanceManager_OnDestroy_CreateInBackground() { var jsBundleFile = "ms-appx:///Resources/test.js"; var manager = CreateReactInstanceManager(jsBundleFile); var waitHandle = new AutoResetEvent(false); manager.ReactContextInitialized += (sender, args) => waitHandle.Set(); await DispatcherHelpers.RunOnDispatcherAsync( () => manager.CreateReactContextInBackground()); Assert.IsTrue(waitHandle.WaitOne()); Assert.AreEqual(jsBundleFile, manager.SourceUrl); await DispatcherHelpers.CallOnDispatcherAsync(manager.DisposeAsync); await DispatcherHelpers.RunOnDispatcherAsync( () => manager.CreateReactContextInBackground()); Assert.IsTrue(waitHandle.WaitOne()); await DispatcherHelpers.CallOnDispatcherAsync(manager.DisposeAsync); }