Exemplo n.º 1
0
    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());
        }
    }
Exemplo n.º 2
0
    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());
        }
    }
Exemplo n.º 3
0
    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());
        }
    }
Exemplo n.º 4
0
    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);
        }
    }
Exemplo n.º 5
0
        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;
        }
Exemplo n.º 6
0
    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());
        }
    }
Exemplo n.º 7
0
    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());
        }
    }
Exemplo n.º 8
0
    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);
        }
    }
Exemplo n.º 9
0
    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);
        }
    }
Exemplo n.º 10
0
    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());
        }
    }