Ejemplo n.º 1
0
        private void Form1_Load(object sender, EventArgs e)
        {
            VE[] list =
            {
                new VE("init",        VE.TailOr("a", "b",  "c"), InitState, () => { SetLog("!"); }),
                new VE("a",           "b",           () => { SetLog("a->b"); }),
                new VE("b",           "a",           () => { SetLog("b->a"); }),
                new VE("a",           "a",           () => { SetLog("a->a"); }),
                new VE("b",           "b",           () => { SetLog("b->b"); }),
                new VE(VE.HeadOr("a", "b"),          "c",  () => { SetLog("a|b->c"); }),
                new VE("c",           VE.TailOr("a", "b"), () => { SetLog("c->a|b"); })
            };

            m_stateVector = new StateVector("init", list);
        }
Ejemplo n.º 2
0
        public void Refresh_OK_ab_ac()
        {
            // 状態Aから状態B or Cへの変化条件が登録済みのため動作する
            int lambdaCheck = 0;

            VEFD func = () => { lambdaCheck++; };

            VE[] list =
            {
                new VE(
                    "a",
                    VE.TailOr("b","c"),
                    func)
            };
            ins = new TW_StateVector("Refresh_OK_ab_ac", "a", list);
            ins.EnableRefreshTrace = true;
            ins.Refresh("b");
            Assert.AreEqual(1, lambdaCheck);
            ins.StateNow = "a";
            ins.Refresh("c");
            Assert.AreEqual(2, lambdaCheck);
        }