Esempio n. 1
0
        public void StateChaining2()
        {
            var A  = fixture.dsf.Name("A").Value(1.0).State;
            var B  = fixture.dsf.Name("B").Value(2.0).State;
            var tf = fixture.dtf;

            tf.DefaultState = A;
            var aa = tf.Name("a").Transition;
            var ba = tf.Name("a").Transition;

            tf.DefaultState = B;
            var ab = tf.Name("b").Transition;
            var bb = tf.Name("b").Transition;

            A.AddTransitions(new Transition <double, double>[] { aa, ab });
            B.AddTransitions(new Transition <double, double>[] { ba, bb });

            var ta = new NameTrigger <double, double>("a");
            var tb = new NameTrigger <double, double>("b");

            State <double, double> current_state = A;

            fixture.transition(ref current_state, ta);
            Assert.Equal(A, current_state);
            fixture.transition(ref current_state, tb);
            Assert.Equal(B, current_state);
            fixture.transition(ref current_state, tb);
            Assert.Equal(B, current_state);
            fixture.transition(ref current_state, ta);
            Assert.Equal(A, current_state);
        }
Esempio n. 2
0
        public void StateChaining()
        {
            var C  = fixture.dsf.Name("C").Value(3.0).State;
            var bc = fixture.dtf.Name("bc").Value(2.0).NextState(C).Transition;
            var B  = fixture.dsf.Name("B").Value(2.0).Transition(bc).State;
            var ab = fixture.dtf.Name("ab").Value(1.0).NextState(B).Transition;
            var A  = fixture.dsf.Name("A").Value(1.0).Transition(ab).State;
            var ca = fixture.dtf.Name("ca").Value(3.0).NextState(A).Transition;

            C.AddTransition(ca);

            var tab = new NameTrigger <double, double>("ab");
            var tbc = new NameTrigger <double, double>("bc");
            var tca = new NameTrigger <double, double>("ca");

            Assert.NotEqual(A, B);
            Assert.NotEqual(B, C);
            Assert.NotEqual(A, C);

            State <double, double> current_state = A;

            State <double, double> .StateTransition(ref current_state, tab);

            Assert.Equal(current_state, B);
            State <double, double> .StateTransition(ref current_state, tbc);

            Assert.Equal(current_state, C);
            State <double, double> .StateTransition(ref current_state, tca);

            Assert.Equal(current_state, A);
        }