public IEnumerator BootTest3() { using (var tester = new Tester()) { var counter = new Counter(); BootParam prm = new BootParam(); prm.ParallelBoot = true; const int num = 5; for (int i = 0; i < num; i++) { prm.BootContents.Add(new MainTestParam { Counter = counter, BootWait = 0.5f }); } tester.Controller.Boot(prm); yield return(counter.Wait("Run", 1)); //秒数指定なので少し待つ yield return(null); yield return(null); //同時に起動している Assert.AreEqual(counter.Get("Boot"), num); Assert.AreEqual(counter.Get("Enable"), num); Assert.AreEqual(counter.Get("Run"), num); yield return(tester.Close()); } }
public IEnumerator AppendTest1() { using (var tester = new Tester()) { var counter = new Counter(); BootParam prm = new BootParam(); prm.BootContents.Add(new MainTestParam { Counter = counter }); yield return(WrapTask(tester.Controller.Boot(prm))); tester.Message <IContentParam>(MainTestContent.Event.Append, new MainTestParam { Counter = counter }); tester.Message <IContentParam>(MainTestContent.Event.Append, new MainTestParam { Counter = counter }); tester.Message <IContentParam>(MainTestContent.Event.Append, new MainTestParam { Counter = counter }); tester.Message <IContentParam>(MainTestContent.Event.Append, new MainTestParam { Counter = counter }); Debug.Log("counter"); yield return(counter.Wait("Run", 5)); Debug.Log("counter.Wait(#un, 5);"); yield return(tester.Close()); } }
public IEnumerator BootTest2() { using (var tester = new Tester()) { //逐次起動 var counter = new Counter(); BootParam prm = new BootParam(); const int num = 5; for (int i = 0; i < num; i++) { prm.BootContents.Add(new MainTestParam { Counter = counter, BootWait = 0.5f }); } tester.Controller.Boot(prm); for (int i = 1; i < num + 1; i++) { //少し待つ yield return(null); yield return(counter.Wait("Run", i)); yield return(null); //順番に起動する Assert.AreEqual(counter.Get("Boot"), i); Assert.AreEqual(counter.Get("Enable"), i); Assert.AreEqual(counter.Get("Run"), i); } yield return(tester.Close()); } }
public IEnumerator ModalTest2() { using (var tester = new Tester()) { BootParam prm = new BootParam(); var counter = new Counter(); prm.BootContents.Add(new MainTestParam { Counter = counter }); yield return(WrapTask(tester.Controller.Boot(prm))); var content = tester.Controller.Get <MainTestContent>(); var modalRet = content.RunModal(() => true); Exception error = null; bool ret = false; try { content.Append <SubContent1>(new SubParam1 { Counter = counter }).ContinueWith(x => ret = true); } catch (Exception ex) { error = ex; } //モーダル中の追加はエラーになる Assert.IsNotNull(error); Assert.IsFalse(ret); error = null; try { content.Switch <SubContent1>(new SubParam1 { Counter = counter }).ContinueWith(x => ret = true); } catch (Exception ex) { error = ex; } //モーダル中の変更はエラーになる Assert.IsNotNull(error); Assert.IsFalse(ret); yield return(WrapTask(modalRet)); Assert.AreEqual(true, modalRet.Result); } }
public static void Initialize(ref BootParam param) { LinuxMainMemoryStart = param.LinuxMainMemoryStart; LinuxMainMemorySize = param.LinuxMainMemorySize; LinuxIPCBuffer = new ByteBufferRef(param.SyncIPCBufferBase.ToIntPtr(), param.SyncIPCBufferSize); if (param.SyncIPCBufferSize < MinimumIPCBufferSize) { ArchDefinition.Panic(); } LinuxServerTid = param.LinuxServerTid; }
public IEnumerator SwitchTest1() { using (var tester = new Tester()) { var counter = new Counter(); BootParam prm = new BootParam(); prm.BootContents.Add(new MainTestParam { Counter = counter }); yield return(WrapTask(tester.Controller.Boot(prm))); tester.Message(MainTestContent.Event.Switch, counter); yield return(counter.Wait("Run", 2)); yield return(tester.Close()); } }
public IEnumerator BootTest1() { using (var tester = new Tester()) { var counter = new Counter(); BootParam prm = new BootParam(); prm.BootContents.Add(new MainTestParam { Counter = counter }); tester.Controller.Boot(prm); yield return(counter.Wait("Run", 1)); Assert.AreEqual(counter.Get("Boot"), 1); Assert.AreEqual(counter.Get("Enable"), 1); Assert.AreEqual(counter.Get("Run"), 1); yield return(tester.Close()); } }
public IEnumerator MangedTest() { using (var tester = new Tester()) { var counter = new Counter(); BootParam prm = new BootParam(); prm.BootContents.Add(new MainTestParam { Counter = counter }); yield return(WrapTask(tester.Controller.Boot(prm))); var manded = tester.Controller.Get <IHasManagedHolder>(); bool dispose = false; // disposed時にアクションを発火するように登録 var action = manded.Manage(() => dispose = true); Assert.IsFalse(dispose); //Unmanageで解放される manded.Unmanage(action); Assert.IsTrue(dispose); //再登録 dispose = false; manded.Manage(() => dispose = true); //非同期を登録 var asyncDispose = new AsyncDispose(); manded.ManageAsync(asyncDispose); tester.Message(MainTestContent.Event.Switch, counter); //直ぐには実行されない Assert.IsFalse(asyncDispose.Disposed); yield return(counter.Wait("Run", 2)); yield return(tester.Close()); Assert.IsTrue(dispose); Assert.IsTrue(asyncDispose.Disposed); } }
public IEnumerator ModalTest1() { using (var tester = new Tester()) { BootParam prm = new BootParam(); var counter = new Counter(); prm.BootContents.Add(new MainTestParam { Counter = counter }); yield return(WrapTask(tester.Controller.Boot(prm))); var content = tester.Controller.Get <MainTestContent>(); var modalRet = content.RunModal(() => 124); yield return(WrapTask(modalRet)); Assert.AreEqual(124, modalRet.Result); modalRet = content.RunModal <int>(() => throw new Exception("error")); yield return(WrapTask(modalRet)); Assert.IsNotNull(modalRet.Exception); } }
public IEnumerator SwitchTest2() { using (var tester = new Tester()) { var counter = new Counter(); BootParam prm = new BootParam(); prm.BootContents.Add(new MainTestParam { Counter = counter }); yield return(WrapTask(tester.Controller.Boot(prm))); //Refからのスイッチ yield return(WrapTask(tester.Controller.Get <MainTestContent>().Switch(new MainTestParam { Counter = counter, BootWait = 0.5f }))); //ちゃんと待てる Assert.AreEqual(counter.Get("Boot"), 2); Assert.AreEqual(counter.Get("Enable"), 2); Assert.AreEqual(counter.Get("Run"), 2); yield return(tester.Close()); } }