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