2 * Copyright (C) 2013 FooProject
3 * * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
6 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
7 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
9 You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
13 using Microsoft.VisualStudio.TestTools.UnitTesting;
19 public class ControllerTest
22 public void SelectByWordTest()
24 DummyRender render = new DummyRender();
25 Document doc = new Document();
26 doc.LayoutLines.Render = render;
27 EditView view = new EditView(doc, render);
28 Controller ctrl = new Controller(doc, view);
30 doc.Append("this is a pen");
32 Assert.IsTrue(ctrl.SelectedText == "this");
36 public void ConvertToChar()
38 DummyRender render = new DummyRender();
39 Document doc = new Document();
40 doc.LayoutLines.Render = render;
41 EditView view = new EditView(doc, render);
42 Controller ctrl = new Controller(doc, view);
47 Assert.IsTrue(doc.ToString(0) == "0");
51 public void ConvertToCodePoint()
53 DummyRender render = new DummyRender();
54 Document doc = new Document();
55 doc.LayoutLines.Render = render;
56 EditView view = new EditView(doc, render);
57 Controller ctrl = new Controller(doc, view);
61 ctrl.ConvertToCodePoint();
62 Assert.IsTrue(doc.ToString(0) == "U30 ");
66 public void CaretTest()
68 DummyRender render = new DummyRender();
69 Document doc = new Document();
70 doc.LayoutLines.Render = render;
71 EditView view = new EditView(doc, render);
72 Controller ctrl = new Controller(doc, view);
74 doc.Append("abc\nef");
76 Assert.IsTrue(ctrl.SelectionStart == 1);
77 ctrl.JumpToLineHead(0, false);
78 Assert.IsTrue(ctrl.SelectionStart == 0);
79 ctrl.JumpToLineEnd(0,false);
80 Assert.IsTrue(ctrl.SelectionStart == 3);
81 ctrl.JumpToHead(false);
82 Assert.IsTrue(ctrl.SelectionStart == 0);
83 ctrl.JumpToEnd(false);
84 Assert.IsTrue(ctrl.SelectionStart == 4);
87 doc.Append("a c\ndef");
89 ctrl.MoveCaretHorizontical(4, false, false);
90 Assert.IsTrue(ctrl.SelectionStart == 4);
91 ctrl.MoveCaretHorizontical(-4, false, false);
92 Assert.IsTrue(ctrl.SelectionStart == 0);
93 ctrl.MoveCaretHorizontical(-1, false, false);
94 Assert.IsTrue(ctrl.SelectionStart == 0); //ドキュメントの先端を超えることはないはず
95 ctrl.MoveCaretHorizontical(1, false, true);
96 Assert.IsTrue(ctrl.SelectionStart == 2);
99 ctrl.MoveCaretVertical(1, false);
100 Assert.IsTrue(ctrl.SelectionStart == 4);
101 ctrl.MoveCaretVertical(-1, false);
102 Assert.IsTrue(ctrl.SelectionStart == 0);
103 ctrl.MoveCaretVertical(-1, false);
104 Assert.IsTrue(ctrl.SelectionStart == 0); //ドキュメントの先端を超えることはないはず
108 public void LineModeEditTest()
110 DummyRender render = new DummyRender();
111 Document doc = new Document();
112 doc.LayoutLines.Render = render;
113 EditView view = new EditView(doc, render);
114 Controller ctrl = new Controller(doc, view);
118 ctrl.DoDeleteAction();
119 Assert.IsTrue(doc.ToString(0) == "bc");
121 ctrl.DoBackSpaceAction();
122 Assert.IsTrue(doc.ToString(0) == "c");
123 ctrl.DoInputChar('a');
124 Assert.IsTrue(doc.ToString(0) == "ac");
126 ctrl.DoInputString("xb");
127 Assert.IsTrue(doc.ToString(0) == "xb");
128 doc.InsertMode = false;
130 ctrl.DoInputChar('a');
131 Assert.IsTrue(doc.ToString(0) == "ab");
134 ctrl.DoInputChar('a');
135 Assert.IsTrue(doc.LayoutLines[0] == "aba\n");
141 Assert.IsTrue(doc.ToString(0) == "\ta\n\ta\n");
143 Assert.IsTrue(doc.ToString(0) == "a\na\n");
147 public void SelectTest()
149 DummyRender render = new DummyRender();
150 Document doc = new Document();
151 doc.LayoutLines.Render = render;
152 EditView view = new EditView(doc, render);
153 Controller ctrl = new Controller(doc, view);
155 doc.Append("a\nb\nc");
157 Assert.IsTrue(ctrl.SelectedText == "a\r\nb\r\nc");
161 public void ReplaceSelectionTest()
163 DummyRender render = new DummyRender();
164 Document doc = new Document();
165 doc.LayoutLines.Render = render;
166 EditView view = new EditView(doc, render);
167 Controller ctrl = new Controller(doc, view);
169 doc.Append("a\nb\nc");
171 ctrl.SelectedText = "a";
173 Assert.IsTrue(ctrl.SelectedText == "a");
177 public void SelectByRectTest()
179 DummyRender render = new DummyRender();
180 Document doc = new Document();
181 doc.LayoutLines.Render = render;
182 EditView view = new EditView(doc, render);
183 Controller ctrl = new Controller(doc, view);
185 string str = "aa\nbb\ncc";
187 ctrl.RectSelection = true;
189 Assert.IsTrue(ctrl.SelectedText == "a\r\nb\r\nc\r\n");
193 public void RectEditTest()
195 DummyRender render = new DummyRender();
196 Document doc = new Document();
197 doc.LayoutLines.Render = render;
198 EditView view = new EditView(doc, render);
199 Controller ctrl = new Controller(doc, view);
201 doc.Append("a\nb\nc");
202 ctrl.RectSelection = true;
204 ctrl.DoInputString("x",true);
206 view.LayoutLines[0] == "x\n" &&
207 view.LayoutLines[1] == "x\n" &&
208 view.LayoutLines[2] == "x");
210 view.Selections[0].start == 0 &&
211 view.Selections[1].start == 2 &&
212 view.Selections[2].start == 4);
214 ctrl.DoInputString("x", true);
216 view.Selections[0].start == 1 &&
217 view.Selections[1].start == 4 &&
218 view.Selections[2].start == 7);
221 doc.Append("a\nb\nc");
223 ctrl.DoInputString("x");
225 view.LayoutLines[0] == "xa\n" &&
226 view.LayoutLines[1] == "xb\n" &&
227 view.LayoutLines[2] == "xc");
229 ctrl.DoBackSpaceAction();
231 view.LayoutLines[0] == "a\n" &&
232 view.LayoutLines[1] == "b\n" &&
233 view.LayoutLines[2] == "c");