Esempio n. 1
0
            public void TestConstructor()
            {
                // Prepare datas
                Trigger[] all_triggers = new Trigger[5]
                {
                    new Trigger(),
                    new Trigger(),
                    new Trigger(),
                    new Trigger(),
                    new Trigger()
                };
                TriggerSet1 = new Trigger[3]
                {
                    all_triggers[0],
                    all_triggers[1],
                    all_triggers[2]
                };
                TriggerSet2 = new Trigger[3]
                {
                    all_triggers[0],
                    all_triggers[2],
                    all_triggers[4]
                };
                TriggerSet3 = new Trigger[3]
                {
                    all_triggers[2],
                    all_triggers[3],
                    all_triggers[4]
                };
                State[] states = new State[3]
                {
                    new NormalState(TriggerSet1),
                    new NormalState(TriggerSet2),
                    new NormalState(TriggerSet3)
                };
                var input_transitionMatrix = new Dictionary <State, Dictionary <Trigger, ITransition> >()
                {
                    {
                        states[0],
                        new Dictionary <Trigger, ITransition>()
                        {
                            { TriggerSet1[0], new Transition(states[2], null) },
                            { TriggerSet1[1], new Transition(states[2], null) },
                            { TriggerSet1[2], new Transition(states[1], null) }
                        }
                    },
                    {
                        states[1],
                        new Dictionary <Trigger, ITransition>()
                        {
                            { TriggerSet2[0], new Transition(states[0], null) },
                            { TriggerSet2[1], new Transition(states[1], null) },
                            { TriggerSet2[2], new Transition(states[2], null) }
                        }
                    },
                    {
                        states[2],
                        new Dictionary <Trigger, ITransition>()
                        {
                            { TriggerSet3[0], new Transition(states[2], null) },
                            { TriggerSet3[1], new Transition(states[2], null) },
                            { TriggerSet3[2], new Transition(states[0], null) }
                        }
                    }
                };
                var expected_MatrixData = new Dictionary <State, Dictionary <Trigger, ITransition> >(input_transitionMatrix);

                // Execute
                TransitionMatrix transition_matrix = new TransitionMatrix(input_transitionMatrix);

                // Get result
                FieldInfo field_info = transition_matrix.GetType().GetField("MatrixData",
                                                                            BindingFlags.GetField | BindingFlags.NonPublic | BindingFlags.Instance);
                var actual_MatrixData = (Dictionary <State, Dictionary <Trigger, ITransition> >)field_info.GetValue(transition_matrix);

                // Validate
                Assert.Same(input_transitionMatrix, actual_MatrixData);
                Assert.Equal(expected_MatrixData, actual_MatrixData);
            }