Esempio n. 1
0
        public override State Build(FSMRepresentationBuilder fb)
        {
            var retval = new ConcreteStateImpl(this.StateName);

            fb.AddBuiltConcreteState(retval);
            return(retval);
        }
Esempio n. 2
0
        public override State Build(FSMRepresentationBuilder fb)
        {
            ConcreteSubStateImpl retval = null;
            var sr = fb.GetStateRep(this.SuperStateName);

            if (sr != null)
            {
                sr.Build(fb);
                SuperState superState = fb.GetBuiltSuperState(this.SuperStateName);
                if (superState != null)
                {
                    retval = new ConcreteSubStateImpl(this.StateName, superState);
                    fb.AddBuiltConcreteState(retval);
                }
                else
                {
                    var e = $"Could not build sub state ({this.StateName}) because super state ({this.SuperStateName}) had an error.";
                    fb.SetError();
                    fb.Error(sr.SyntaxLocation, e);
                }
            }
            else
            {
                var e = $"Super state ({this.SuperStateName}) was not declared.";
                fb.SetError();
                fb.Error(null, e);
            }
            return(retval);
        }
Esempio n. 3
0
        public static FSMRepresentationBuilder GetDefaultTestConfig(
            bool usesExceptions = true, string version = "")
        {
            var builder = new FSMRepresentationBuilder();

            builder.AddPragma("namespace TurnStyleExample");
            builder.SetName("TurnStyle");
            builder.SetContextName("TurnStyleContext");
            builder.SetVersion(version);

            if (usesExceptions)
            {
                builder.SetException("Exception");
            }

            builder.AddBuiltConcreteState(new ConcreteStateImpl("Locked"));
            builder.AddBuiltConcreteState(new ConcreteStateImpl("Unlocked"));

            builder.SetInitialState("Locked");

            builder.AddTransition("Coin", "Unlocked", null);
            builder.AddTransition("Pass", "Locked", null);

            builder.AddAction("Unlock");
            builder.AddAction("Lock");
            builder.AddAction("Alarm");
            builder.AddAction("Thankyou");

            return(builder);
        }
        protected static SMCSharpGenerator InitWithBuilder(FSMRepresentationBuilder fsmbld)
        {
            var retval = new SMCSharpGenerator();

            retval.FSMInit(fsmbld.StateMap, "fileName");
            retval.Initialize();
            return(retval);
        }
Esempio n. 5
0
        public void NoNamespacePragma()
        {
            var fsmbld = new FSMRepresentationBuilder();

            var actual = GenerateUsing(fsmbld);

            Assert.That(actual, Is.Empty);
        }
Esempio n. 6
0
        public static FSMRepresentationBuilder InitBuildStateWithTwoUsings()
        {
            var builder = new FSMRepresentationBuilder();

            builder.AddPragma("using aClass");
            builder.AddPragma("using bClass");

            return(builder);
        }
Esempio n. 7
0
        private FSMRepresentationBuilder InitBuilderState()
        {
            var builder = new FSMRepresentationBuilder();

            builder.AddBuiltConcreteState(new ConcreteStateImpl("Locked"));
            builder.AddBuiltConcreteState(new ConcreteStateImpl("Unlocked"));

            builder.Build();
            return(builder);
        }
Esempio n. 8
0
        public void ConcreteStates()
        {
            FSMRepresentationBuilder fsmbld = InitBuilderState();
            StateMap     map = fsmbld.StateMap;
            FSMGenerator fsm = new SMCSharpGenerator();

            fsm.FSMInit(map, "TurnStyle");
            fsm.Initialize();
            Assert.AreEqual(2, fsm.ConcreteStates.Count());
        }
Esempio n. 9
0
        public override State Build(FSMRepresentationBuilder fb)
        {
            // SuperSub states depend upon other states, and so must request
            // that they be built first.  Also, they are depended upon by other
            // states, so they must ignore duplicate requests for being built.

            State retval = null;

            if (!fb.IsStateBuilt(this.StateName))
            {
                var sr = fb.GetStateRep(this.SuperStateName);
                if (sr != null)
                {
                    sr.Build(fb);
                    var superState = fb.GetBuiltSuperState(this.SuperStateName);
                    if (superState != null)
                    {
                        var s = new SuperSubStateImpl(this.StateName, superState);
                        retval = s;
                        fb.AddBuiltSuperState(s);
                    }
                    else
                    {
                        var e = "Could not build super sub state (" + this.StateName + ") because super state (" + this.SuperStateName + ") had an error.";
                        fb.SetError();
                        fb.Error(sr.SyntaxLocation, e);
                    }
                }
                else
                {
                    var e = $"Super state ({this.SuperStateName}) was not declared.";
                    fb.SetError();
                    fb.Error(sr.SyntaxLocation, e);
                }
            }
            else
            {
                retval = fb.GetBuiltState(this.StateName);
            }
            return(retval);
        }
Esempio n. 10
0
        public override State Build(FSMRepresentationBuilder fb)
        {
            // Many other states may depend upon super states.  Thus there may
            // be many requests for them to be built.  Thus we have to check to
            // see if its has already been built, and ignore any subsequent
            // requests.
            //
            // Also, since super states do not depend upon anyone, they can be
            // built as soon as they are seen.

            SuperState retval;

            if (!fb.IsStateBuilt(this.StateName))
            {
                var ss = new SuperStateImpl(this.StateName);
                fb.AddBuiltSuperState(ss);
                retval = ss;
            }
            else
            {
                retval = fb.GetBuiltSuperState(this.StateName);
            }
            return(retval);
        }
        protected string GenerateUsing(FSMRepresentationBuilder fsmbld)
        {
            var fsm = InitWithBuilder(fsmbld);

            return(this.gen.GenerateCode(fsm));
        }
Esempio n. 12
0
 public void SetUp()
 {
     this.stateRep = new SubStateRep(StateName, SuperStateName, null);
     this.builder  = new FSMRepresentationBuilder();
 }
Esempio n. 13
0
 public abstract State Build(FSMRepresentationBuilder fb);