コード例 #1
0
        public void GuardedCondition()
        {
            string input = @"A[],
B[],
D[],
C[];
A[(count(@/C)==0)] -->* B,
D -->* C
";
            var    p     = new ResedaParser();

            p.dispTree(input);
            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());
            OutputEvent a = (OutputEvent)term.subProcess.structuredData[0];
            OutputEvent b = (OutputEvent)term.subProcess.structuredData[1];
            OutputEvent d = (OutputEvent)term.subProcess.structuredData[2];
            OutputEvent c = (OutputEvent)term.subProcess.structuredData[3];

            Assert.IsTrue(b.IsEnabled());
            b.Execute();

            Assert.IsFalse(c.IsEnabled());
            Assert.ThrowsException <Exception>(() =>
            {
                c.Execute();
            });
        }