A game about forced loneliness, made by TACStudios
1using System.Collections;
2using System.Collections.Generic;
3using NUnit.Framework;
4using UnityEngine;
5using UnityEngine.TestTools;
6
7public class TextEditorBackspaceDelete
8{
9 private const string kFailedToRemoveCharacterMessage = "Backspace or Delete Failed To Remove The Expected Character";
10 private const string kFailedToChangeCursor = "Backspace or Delete Failed To Move The Cursor To The Expected Index";
11 private const string kFailedToChangeSelect = "Backspace or Delete Failed To Move The Selection Index To The Expected Index";
12
13 [Test]
14 public void TextEditorWithUTF16_MiddleCursorOnBackspace_RemovesCharacter()
15 {
16 var textBox = new TextEditor()
17 {
18 text = "MikeDeRoy",
19 cursorIndex = 4,
20 selectIndex = 4,
21 };
22 textBox.UpdateTextHandle();
23
24 textBox.UpdateTextHandle();
25
26 textBox.Backspace();
27
28 Assert.AreEqual("MikDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
29 Assert.AreEqual(3, textBox.cursorIndex, kFailedToChangeCursor);
30 Assert.AreEqual(3, textBox.selectIndex, kFailedToChangeSelect);
31 }
32
33 [Test]
34 public void TextEditorWithUTF16_MiddleCursorOnDelete_RemovesCharacter()
35 {
36 var textBox = new TextEditor()
37 {
38 text = "MikeDeRoy",
39 cursorIndex = 3,
40 selectIndex = 3,
41 };
42 textBox.UpdateTextHandle();
43
44 textBox.UpdateTextHandle();
45
46 textBox.Delete();
47
48 Assert.AreEqual("MikDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
49 Assert.AreEqual(3, textBox.cursorIndex, kFailedToChangeCursor);
50 Assert.AreEqual(3, textBox.selectIndex, kFailedToChangeSelect);
51 }
52
53 [Test]
54 public void TextEditorWithUTF16_MiddleCursorOnBackspaceAndLeftSurrogate_RemovesBothSurrogates()
55 {
56 var textBox = new TextEditor()
57 {
58 text = "Mike🗘DeRoy",
59 cursorIndex = 5,
60 selectIndex = 5,
61 };
62 textBox.UpdateTextHandle();
63
64 textBox.Backspace();
65
66 Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
67 Assert.AreEqual(4, textBox.cursorIndex, kFailedToChangeCursor);
68 Assert.AreEqual(4, textBox.selectIndex, kFailedToChangeSelect);
69 }
70
71 [Test]
72 public void TextEditorWithUTF16_MiddleCursorOnDeleteAndLeftSurrogate_RemovesBothSurrogates()
73 {
74 var textBox = new TextEditor()
75 {
76 text = "Mike🗘DeRoy",
77 cursorIndex = 4,
78 selectIndex = 4,
79 };
80 textBox.UpdateTextHandle();
81
82 textBox.Delete();
83
84 Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
85 Assert.AreEqual(4, textBox.cursorIndex, kFailedToChangeCursor);
86 Assert.AreEqual(4, textBox.selectIndex, kFailedToChangeSelect);
87 }
88
89 [Test]
90 public void TextEditorWithUTF16_MiddleCursorOnBackspaceAndRightSurrogate_RemovesBothSurrogates()
91 {
92 var textBox = new TextEditor()
93 {
94 text = "Mike🗘DeRoy",
95 cursorIndex = 5,
96 selectIndex = 5,
97 };
98 textBox.UpdateTextHandle();;
99
100 textBox.Backspace();
101
102 Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
103 Assert.AreEqual(4, textBox.cursorIndex, kFailedToChangeCursor);
104 Assert.AreEqual(4, textBox.selectIndex, kFailedToChangeSelect);
105 }
106
107 [Test]
108 public void TextEditorWithUTF16_LeftCursorOnBackspace_DoesNotRemoveCharacter()
109 {
110 var textBox = new TextEditor()
111 {
112 text = "MikeDeRoy",
113 cursorIndex = 0,
114 selectIndex = 0,
115 };
116 textBox.UpdateTextHandle();
117
118 textBox.UpdateTextHandle();
119
120 textBox.Backspace();
121
122 Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
123 Assert.AreEqual(0, textBox.cursorIndex, kFailedToChangeCursor);
124 Assert.AreEqual(0, textBox.selectIndex, kFailedToChangeSelect);
125 }
126
127 [Test]
128 public void TextEditorWithUTF16_LeftCursorOnDelete_RemovesCharacter()
129 {
130 var textBox = new TextEditor()
131 {
132 text = "MikeDeRoy",
133 cursorIndex = 0,
134 selectIndex = 0,
135 };
136 textBox.UpdateTextHandle();
137
138 textBox.UpdateTextHandle();
139
140 textBox.Delete();
141
142 Assert.AreEqual("ikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
143 Assert.AreEqual(0, textBox.cursorIndex, kFailedToChangeCursor);
144 Assert.AreEqual(0, textBox.selectIndex, kFailedToChangeSelect);
145 }
146
147 [Test]
148 public void TextEditorWithUTF16_LeftCursorOnBackspaceAndLeftSurrogate_RemovesBothSurrogates()
149 {
150 var textBox = new TextEditor()
151 {
152 text = "🗘MikeDeRoy",
153 cursorIndex = 1,
154 selectIndex = 1,
155 };
156 textBox.UpdateTextHandle();
157
158 textBox.Backspace();
159
160 Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
161 Assert.AreEqual(0, textBox.cursorIndex, kFailedToChangeCursor);
162 Assert.AreEqual(0, textBox.selectIndex, kFailedToChangeSelect);
163 }
164
165 [Test]
166 public void TextEditorWithUTF16_LeftCursorOnDeleteAndLeftSurrogate_RemovesBothSurrogates()
167 {
168 var textBox = new TextEditor()
169 {
170 text = "🗘MikeDeRoy",
171 cursorIndex = 0,
172 selectIndex = 0,
173 };
174 textBox.UpdateTextHandle();
175
176 textBox.Delete();
177
178 Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
179 Assert.AreEqual(0, textBox.cursorIndex, kFailedToChangeCursor);
180 Assert.AreEqual(0, textBox.selectIndex, kFailedToChangeSelect);
181 }
182
183 [Test]
184 public void TextEditorWithUTF16_LeftCursorOnBackspaceAndRightSurrogate_RemovesBothSurrogates()
185 {
186 var textBox = new TextEditor()
187 {
188 text = "🗘MikeDeRoy",
189 cursorIndex = 1,
190 selectIndex = 1,
191 };
192 textBox.UpdateTextHandle();
193
194 textBox.Backspace();
195
196 Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
197 Assert.AreEqual(0, textBox.cursorIndex, kFailedToChangeCursor);
198 Assert.AreEqual(0, textBox.selectIndex, kFailedToChangeSelect);
199 }
200
201 [Test]
202 public void TextEditorWithUTF16_RightCursorOnBackspace_RemovesCharacters()
203 {
204 var textBox = new TextEditor()
205 {
206 text = "MikeDeRoy",
207 cursorIndex = 9,
208 selectIndex = 9,
209 };
210 textBox.UpdateTextHandle();
211
212 textBox.UpdateTextHandle();
213
214 textBox.Backspace();
215
216 Assert.AreEqual("MikeDeRo", textBox.text, kFailedToRemoveCharacterMessage);
217 Assert.AreEqual(8, textBox.cursorIndex, kFailedToChangeCursor);
218 Assert.AreEqual(8, textBox.selectIndex, kFailedToChangeSelect);
219 }
220
221 [Test]
222 public void TextEditorWithUTF16_RightCursorOnDelete_DoesNotRemoveCharacter()
223 {
224 var textBox = new TextEditor()
225 {
226 text = "MikeDeRoy",
227 cursorIndex = 9,
228 selectIndex = 9,
229 };
230 textBox.UpdateTextHandle();
231
232 textBox.UpdateTextHandle();
233
234 textBox.Delete();
235
236 Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
237 Assert.AreEqual(9, textBox.cursorIndex, kFailedToChangeCursor);
238 Assert.AreEqual(9, textBox.selectIndex, kFailedToChangeSelect);
239 }
240
241 [Test]
242 public void TextEditorWithUTF16_RightCursorOnBackspaceAndLeftSurrogate_RemovesBothSurrogates()
243 {
244 var textBox = new TextEditor()
245 {
246 text = "MikeDeRoy🗘",
247 cursorIndex = 10,
248 selectIndex = 10,
249 };
250 textBox.UpdateTextHandle();
251
252 textBox.Backspace();
253
254 Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
255 Assert.AreEqual(9, textBox.cursorIndex, kFailedToChangeCursor);
256 Assert.AreEqual(9, textBox.selectIndex, kFailedToChangeSelect);
257 }
258
259
260 [Test]
261 public void TextEditorWithUTF16_RightCursorOnDeleteAndLeftSurrogate_RemovesBothSurrogates()
262 {
263 var textBox = new TextEditor()
264 {
265 text = "MikeDeRoy🗘",
266 cursorIndex = 9,
267 selectIndex = 9,
268 };
269 textBox.UpdateTextHandle();
270
271 textBox.Delete();
272
273 Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
274 Assert.AreEqual(9, textBox.cursorIndex, kFailedToChangeCursor);
275 Assert.AreEqual(9, textBox.selectIndex, kFailedToChangeSelect);
276 }
277
278 [Test]
279 public void TextEditorWithUTF16_RightCursorOnBackspaceAndRightSurrogate_RemovesBothSurrogates()
280 {
281 var textBox = new TextEditor()
282 {
283 text = "MikeDeRoy🗘",
284 cursorIndex = 11,
285 selectIndex = 11,
286 };
287 textBox.UpdateTextHandle();
288
289 textBox.Backspace();
290
291 Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
292 Assert.AreEqual(9, textBox.cursorIndex, kFailedToChangeCursor);
293 Assert.AreEqual(9, textBox.selectIndex, kFailedToChangeSelect);
294 }
295
296 [Test]
297 public void TextEditorWithUTF16_MiddleCursorOnBackspace_RemovesBothSurrogatesInSuccession()
298 {
299 var textBox = new TextEditor()
300 {
301 text = "Mike🗘🗘🗘DeRoy",
302 cursorIndex = 6,
303 selectIndex = 6,
304 };
305 textBox.UpdateTextHandle();
306
307 textBox.Backspace();
308
309 Assert.AreEqual("Mike🗘🗘DeRoy", textBox.text, kFailedToRemoveCharacterMessage);
310 Assert.AreEqual(5, textBox.cursorIndex, kFailedToChangeCursor);
311 Assert.AreEqual(5, textBox.selectIndex, kFailedToChangeSelect);
312
313 textBox.Backspace();
314
315 Assert.AreEqual("Mike🗘DeRoy", textBox.text, kFailedToRemoveCharacterMessage);
316 Assert.AreEqual(4, textBox.cursorIndex, kFailedToChangeCursor);
317 Assert.AreEqual(4, textBox.selectIndex, kFailedToChangeSelect);
318
319 textBox.Backspace();
320 Assert.AreEqual("Mik🗘DeRoy", textBox.text, kFailedToRemoveCharacterMessage);
321 Assert.AreEqual(3, textBox.cursorIndex, kFailedToChangeCursor);
322 Assert.AreEqual(3, textBox.selectIndex, kFailedToChangeSelect);
323 }
324
325 [Test]
326 public void TextEditorWithUTF16_MiddleCursorOnDelete_RemovesBothSurrogatesInSuccession()
327 {
328 var textBox = new TextEditor()
329 {
330 text = "Mike🗘🗘🗘DeRoy",
331 cursorIndex = 5,
332 selectIndex = 5,
333 };
334 textBox.UpdateTextHandle();
335
336 textBox.Delete();
337 textBox.UpdateTextHandle();
338
339 Assert.AreEqual("Mike🗘🗘DeRoy", textBox.text, kFailedToRemoveCharacterMessage);
340 Assert.AreEqual(5, textBox.cursorIndex, kFailedToChangeCursor);
341 Assert.AreEqual(5, textBox.selectIndex, kFailedToChangeSelect);
342
343 textBox.Delete();
344 textBox.UpdateTextHandle();
345
346 Assert.AreEqual("Mike🗘DeRoy", textBox.text, kFailedToRemoveCharacterMessage);
347 Assert.AreEqual(5, textBox.cursorIndex, kFailedToChangeCursor);
348 Assert.AreEqual(5, textBox.selectIndex, kFailedToChangeSelect);
349
350 textBox.Delete();
351 textBox.UpdateTextHandle();
352 Assert.AreEqual("Mike🗘eRoy", textBox.text, kFailedToRemoveCharacterMessage);
353 Assert.AreEqual(5, textBox.cursorIndex, kFailedToChangeCursor);
354 Assert.AreEqual(5, textBox.selectIndex, kFailedToChangeSelect);
355 }
356}