public void Case5_Push_4State_1Undo_1Redo_Index_ShouldBe_3() { var editor1 = new Editor("T1", "Text 1", 14, "TH SarabunPSK"); var editor2 = new Editor("T2", "Text 2", 15, "TH SarabunPSK"); var editor3 = new Editor("T3", "Text 3", 16, "TH SarabunPSK"); var editor4 = new Editor("T4", "Text 4", 17, "TH SarabunPSK"); var stateText = $"{editor4.Title} {editor4.Text} {editor4.FontFace} {editor4.FontSize}"; var source = new List <Editor>() { editor1, editor2, editor3, editor4 }; source.ForEach(d => { var editorState = new EditorState <Editor>(d); manager.PushState(editorState); }); manager.Undo(); var state = manager.Redo(); var equalStateText = stateText == state.Object.ToString(); var equalStateIndex = manager.Index == 3; Assert.IsTrue(state != null); Assert.IsTrue(equalStateText, "State text not equal"); Assert.IsTrue(equalStateText); Assert.IsTrue(equalStateIndex); }