public IEnumerator TestMockDriverForcedStateTransition() { var states = new List <XrSessionState>(); MockRuntime.Instance.TestCallback = (methodName, param) => { if (methodName == nameof(OpenXRFeature.OnSessionStateChange)) { var oldState = (XrSessionState)((MockRuntime.XrSessionStateChangedParams)param).OldState; var newState = (XrSessionState)((MockRuntime.XrSessionStateChangedParams)param).NewState; states.Add(newState); } return(true); }; AddExtension(MockRuntime.XR_UNITY_mock_test); base.InitializeAndStart(); yield return(null); Assert.AreEqual(10, MockRuntime.Instance.XrInstance); Assert.AreEqual(XrSessionState.Focused, states[states.Count - 1]); var wait = new WaitForLoaderShutdown(Loader); var ret = MockDriver.TransitionToState(MockRuntime.Instance.XrSession, XrSessionState.LossPending, true) == XrResult.Success; Assert.IsTrue(ret); yield return(wait); Assert.AreEqual(XrSessionState.LossPending, states[states.Count - 1]); }
public IEnumerator TestRequestExitShutsdownSubsystems() { bool sawSessionDestroy = false; MockRuntime.Instance.TestCallback = (methodName, param) => { if (methodName == nameof(OpenXRFeature.OnSessionDestroy)) { sawSessionDestroy = true; } return(true); }; AddExtension(MockRuntime.XR_UNITY_mock_test); base.InitializeAndStart(); yield return(null); Assert.IsTrue(base.IsRunning <XRDisplaySubsystem>()); var wait = new WaitForLoaderShutdown(Loader); MockDriver.RequestExitSession(MockRuntime.Instance.XrSession); yield return(wait); Assert.IsTrue(sawSessionDestroy); }
public IEnumerator RestartAfterExitSession() { AddExtension(MockRuntime.XR_UNITY_mock_test); base.InitializeAndStart(); yield return(null); Assert.AreEqual(OpenXRLoader.LoaderState.Started, Loader.currentLoaderState); var wait = new WaitForLoaderShutdown(Loader); MockDriver.RequestExitSession(MockRuntime.Instance.XrSession); yield return(wait); Assert.AreEqual(OpenXRLoader.LoaderState.Uninitialized, Loader.currentLoaderState); base.InitializeAndStart(); yield return(null); Assert.AreEqual(OpenXRLoader.LoaderState.Started, Loader.currentLoaderState); }