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); }
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); }