OSDN Git Service

WPF版でナレーターのキャレット位置が正しく表示されないバグを修正した
[fooeditengine/FooEditEngine.git] / WPF / UnitTest / ControllerTest.cs
1 /*
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.
5
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.
8
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/>.
10  */
11
12 using System;
13 using Microsoft.VisualStudio.TestTools.UnitTesting;
14 using FooEditEngine;
15
16 namespace UnitTest
17 {
18     [TestClass]
19     public class ControllerTest
20     {
21         [TestMethod]
22         public void SelectByWordTest()
23         {
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);
29             doc.Clear();
30             doc.Append("this is a pen");
31             doc.SelectWord(0);
32             Assert.IsTrue(ctrl.SelectedText == "this");
33         }
34
35         [TestMethod]
36         public void ConvertToChar()
37         {
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);
43             doc.Clear();
44             doc.Append("U0030");
45             doc.Select(0,5);
46             ctrl.ConvertToChar();
47             Assert.IsTrue(doc.ToString(0) == "0");
48         }
49
50         [TestMethod]
51         public void ConvertToCodePoint()
52         {
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);
58             doc.Clear();
59             doc.Append("0");
60             doc.Select(0, 1);
61             ctrl.ConvertToCodePoint();
62             Assert.IsTrue(doc.ToString(0) == "U30 ");
63         }
64
65         [TestMethod]
66         public void CaretTest()
67         {
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);
73             doc.Clear();
74             doc.Append("abc\nef");
75             ctrl.JumpCaret(1);
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);
85
86             doc.Clear();
87             doc.Append("a c\ndef");
88             ctrl.JumpCaret(0);
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);
97
98             ctrl.JumpCaret(0);
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);    //ドキュメントの先端を超えることはないはず
105         }
106
107         [TestMethod]
108         public void LineModeEditTest()
109         {
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);
115             doc.Clear();
116             doc.Append("abc");
117             ctrl.JumpCaret(0);
118             ctrl.DoDeleteAction();
119             Assert.IsTrue(doc.ToString(0) == "bc");
120             ctrl.JumpCaret(1);
121             ctrl.DoBackSpaceAction();
122             Assert.IsTrue(doc.ToString(0) == "c");
123             ctrl.DoInputChar('a');
124             Assert.IsTrue(doc.ToString(0) == "ac");
125             doc.Select(0, 2);
126             ctrl.DoInputString("xb");
127             Assert.IsTrue(doc.ToString(0) == "xb");
128             doc.InsertMode = false;
129             ctrl.JumpCaret(0);
130             ctrl.DoInputChar('a');
131             Assert.IsTrue(doc.ToString(0) == "ab");
132             doc.Append("\n");
133             ctrl.JumpCaret(2);
134             ctrl.DoInputChar('a');
135             Assert.IsTrue(doc.LayoutLines[0] == "aba\n");
136
137             doc.Clear();
138             doc.Append("a\na");
139             doc.Select(0, 3);
140             ctrl.UpIndent();
141             Assert.IsTrue(doc.ToString(0) == "\ta\n\ta\n");
142             ctrl.DownIndent();
143             Assert.IsTrue(doc.ToString(0) == "a\na\n");
144         }
145
146         [TestMethod]
147         public void SelectTest()
148         {
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);
154             doc.Clear();
155             doc.Append("a\nb\nc");
156             doc.Select(0, 5);
157             Assert.IsTrue(ctrl.SelectedText == "a\r\nb\r\nc");
158         }
159
160         [TestMethod]
161         public void ReplaceSelectionTest()
162         {
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);
168             doc.Clear();
169             doc.Append("a\nb\nc");
170             doc.Select(0, 5);
171             ctrl.SelectedText = "a";
172             doc.Select(0, 1);
173             Assert.IsTrue(ctrl.SelectedText == "a");
174         }
175
176         [TestMethod]
177         public void SelectByRectTest()
178         {
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);
184             doc.Clear();
185             string str = "aa\nbb\ncc";
186             doc.Append(str);
187             ctrl.RectSelection = true;
188             doc.Select(0,7);
189             Assert.IsTrue(ctrl.SelectedText == "a\r\nb\r\nc\r\n");
190         }
191
192         [TestMethod]
193         public void RectEditTest()
194         {
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);
200             doc.Clear();
201             doc.Append("a\nb\nc");
202             ctrl.RectSelection = true;
203             doc.Select(0, 5);
204             ctrl.DoInputString("x",true);
205             Assert.IsTrue(
206                 view.LayoutLines[0] == "x\n" &&
207                 view.LayoutLines[1] == "x\n" &&
208                 view.LayoutLines[2] == "x");
209             Assert.IsTrue(
210                 view.Selections[0].start == 0 &&
211                 view.Selections[1].start == 2 &&
212                 view.Selections[2].start == 4);
213
214             ctrl.DoInputString("x", true);
215             Assert.IsTrue(
216                 view.Selections[0].start == 1 &&
217                 view.Selections[1].start == 4 &&
218                 view.Selections[2].start == 7);
219
220             doc.Clear();
221             doc.Append("a\nb\nc");
222             doc.Select(0, 4);
223             ctrl.DoInputString("x");
224             Assert.IsTrue(
225                 view.LayoutLines[0] == "xa\n" &&
226                 view.LayoutLines[1] == "xb\n" &&
227                 view.LayoutLines[2] == "xc");
228
229             ctrl.DoBackSpaceAction();
230             Assert.IsTrue(
231                 view.LayoutLines[0] == "a\n" &&
232                 view.LayoutLines[1] == "b\n" &&
233                 view.LayoutLines[2] == "c");
234         }
235     }
236 }