暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

TextEditorBackspaceDelete.cs 10KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using NUnit.Framework;
  4. using UnityEngine;
  5. using UnityEngine.TestTools;
  6. public class TextEditorBackspaceDelete
  7. {
  8. private const string kFailedToRemoveCharacterMessage = "Backspace or Delete Failed To Remove The Expected Character";
  9. private const string kFailedToChangeCursor = "Backspace or Delete Failed To Move The Cursor To The Expected Index";
  10. private const string kFailedToChangeSelect = "Backspace or Delete Failed To Move The Selection Index To The Expected Index";
  11. [Test]
  12. public void TextEditorWithUTF16_MiddleCursorOnBackspace_RemovesCharacter()
  13. {
  14. var textBox = new TextEditor()
  15. {
  16. text = "MikeDeRoy",
  17. cursorIndex = 4,
  18. selectIndex = 4,
  19. };
  20. textBox.Backspace();
  21. Assert.AreEqual("MikDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  22. Assert.AreEqual(3, textBox.cursorIndex, kFailedToChangeCursor);
  23. Assert.AreEqual(3, textBox.selectIndex, kFailedToChangeSelect);
  24. }
  25. [Test]
  26. public void TextEditorWithUTF16_MiddleCursorOnDelete_RemovesCharacter()
  27. {
  28. var textBox = new TextEditor()
  29. {
  30. text = "MikeDeRoy",
  31. cursorIndex = 3,
  32. selectIndex = 3,
  33. };
  34. textBox.Delete();
  35. Assert.AreEqual("MikDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  36. Assert.AreEqual(3, textBox.cursorIndex, kFailedToChangeCursor);
  37. Assert.AreEqual(3, textBox.selectIndex, kFailedToChangeSelect);
  38. }
  39. [Test]
  40. public void TextEditorWithUTF16_MiddleCursorOnBackspaceAndLeftSurrogate_RemovesBothSurrogates()
  41. {
  42. var textBox = new TextEditor()
  43. {
  44. text = "Mike🗘DeRoy",
  45. cursorIndex = 5,
  46. selectIndex = 5,
  47. };
  48. textBox.Backspace();
  49. Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  50. Assert.AreEqual(4, textBox.cursorIndex, kFailedToChangeCursor);
  51. Assert.AreEqual(4, textBox.selectIndex, kFailedToChangeSelect);
  52. }
  53. [Test]
  54. public void TextEditorWithUTF16_MiddleCursorOnDeleteAndLeftSurrogate_RemovesBothSurrogates()
  55. {
  56. var textBox = new TextEditor()
  57. {
  58. text = "Mike🗘DeRoy",
  59. cursorIndex = 4,
  60. selectIndex = 4,
  61. };
  62. textBox.Delete();
  63. Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  64. Assert.AreEqual(4, textBox.cursorIndex, kFailedToChangeCursor);
  65. Assert.AreEqual(4, textBox.selectIndex, kFailedToChangeSelect);
  66. }
  67. [Test]
  68. public void TextEditorWithUTF16_MiddleCursorOnBackspaceAndRightSurrogate_RemovesBothSurrogates()
  69. {
  70. var textBox = new TextEditor()
  71. {
  72. text = "Mike🗘DeRoy",
  73. cursorIndex = 6,
  74. selectIndex = 6,
  75. };
  76. textBox.Backspace();
  77. Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  78. Assert.AreEqual(4, textBox.cursorIndex, kFailedToChangeCursor);
  79. Assert.AreEqual(4, textBox.selectIndex, kFailedToChangeSelect);
  80. }
  81. [Test]
  82. public void TextEditorWithUTF16_LeftCursorOnBackspace_DoesNotRemoveCharacter()
  83. {
  84. var textBox = new TextEditor()
  85. {
  86. text = "MikeDeRoy",
  87. cursorIndex = 0,
  88. selectIndex = 0,
  89. };
  90. textBox.Backspace();
  91. Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  92. Assert.AreEqual(0, textBox.cursorIndex, kFailedToChangeCursor);
  93. Assert.AreEqual(0, textBox.selectIndex, kFailedToChangeSelect);
  94. }
  95. [Test]
  96. public void TextEditorWithUTF16_LeftCursorOnDelete_RemovesCharacter()
  97. {
  98. var textBox = new TextEditor()
  99. {
  100. text = "MikeDeRoy",
  101. cursorIndex = 0,
  102. selectIndex = 0,
  103. };
  104. textBox.Delete();
  105. Assert.AreEqual("ikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  106. Assert.AreEqual(0, textBox.cursorIndex, kFailedToChangeCursor);
  107. Assert.AreEqual(0, textBox.selectIndex, kFailedToChangeSelect);
  108. }
  109. [Test]
  110. public void TextEditorWithUTF16_LeftCursorOnBackspaceAndLeftSurrogate_RemovesBothSurrogates()
  111. {
  112. var textBox = new TextEditor()
  113. {
  114. text = "🗘MikeDeRoy",
  115. cursorIndex = 1,
  116. selectIndex = 1,
  117. };
  118. textBox.Backspace();
  119. Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  120. Assert.AreEqual(0, textBox.cursorIndex, kFailedToChangeCursor);
  121. Assert.AreEqual(0, textBox.selectIndex, kFailedToChangeSelect);
  122. }
  123. [Test]
  124. public void TextEditorWithUTF16_LeftCursorOnDeleteAndLeftSurrogate_RemovesBothSurrogates()
  125. {
  126. var textBox = new TextEditor()
  127. {
  128. text = "🗘MikeDeRoy",
  129. cursorIndex = 0,
  130. selectIndex = 0,
  131. };
  132. textBox.Delete();
  133. Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  134. Assert.AreEqual(0, textBox.cursorIndex, kFailedToChangeCursor);
  135. Assert.AreEqual(0, textBox.selectIndex, kFailedToChangeSelect);
  136. }
  137. [Test]
  138. public void TextEditorWithUTF16_LeftCursorOnBackspaceAndRightSurrogate_RemovesBothSurrogates()
  139. {
  140. var textBox = new TextEditor()
  141. {
  142. text = "🗘MikeDeRoy",
  143. cursorIndex = 2,
  144. selectIndex = 2,
  145. };
  146. textBox.Backspace();
  147. Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  148. Assert.AreEqual(0, textBox.cursorIndex, kFailedToChangeCursor);
  149. Assert.AreEqual(0, textBox.selectIndex, kFailedToChangeSelect);
  150. }
  151. [Test]
  152. public void TextEditorWithUTF16_RightCursorOnBackspace_RemovesCharacters()
  153. {
  154. var textBox = new TextEditor()
  155. {
  156. text = "MikeDeRoy",
  157. cursorIndex = 9,
  158. selectIndex = 9,
  159. };
  160. textBox.Backspace();
  161. Assert.AreEqual("MikeDeRo", textBox.text, kFailedToRemoveCharacterMessage);
  162. Assert.AreEqual(8, textBox.cursorIndex, kFailedToChangeCursor);
  163. Assert.AreEqual(8, textBox.selectIndex, kFailedToChangeSelect);
  164. }
  165. [Test]
  166. public void TextEditorWithUTF16_RightCursorOnDelete_DoesNotRemoveCharacter()
  167. {
  168. var textBox = new TextEditor()
  169. {
  170. text = "MikeDeRoy",
  171. cursorIndex = 9,
  172. selectIndex = 9,
  173. };
  174. textBox.Delete();
  175. Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  176. Assert.AreEqual(9, textBox.cursorIndex, kFailedToChangeCursor);
  177. Assert.AreEqual(9, textBox.selectIndex, kFailedToChangeSelect);
  178. }
  179. [Test]
  180. public void TextEditorWithUTF16_RightCursorOnBackspaceAndLeftSurrogate_RemovesBothSurrogates()
  181. {
  182. var textBox = new TextEditor()
  183. {
  184. text = "MikeDeRoy🗘",
  185. cursorIndex = 10,
  186. selectIndex = 10,
  187. };
  188. textBox.Backspace();
  189. Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  190. Assert.AreEqual(9, textBox.cursorIndex, kFailedToChangeCursor);
  191. Assert.AreEqual(9, textBox.selectIndex, kFailedToChangeSelect);
  192. }
  193. [Test]
  194. public void TextEditorWithUTF16_RightCursorOnDeleteAndLeftSurrogate_RemovesBothSurrogates()
  195. {
  196. var textBox = new TextEditor()
  197. {
  198. text = "MikeDeRoy🗘",
  199. cursorIndex = 9,
  200. selectIndex = 9,
  201. };
  202. textBox.Delete();
  203. Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  204. Assert.AreEqual(9, textBox.cursorIndex, kFailedToChangeCursor);
  205. Assert.AreEqual(9, textBox.selectIndex, kFailedToChangeSelect);
  206. }
  207. [Test]
  208. public void TextEditorWithUTF16_RightCursorOnBackspaceAndRightSurrogate_RemovesBothSurrogates()
  209. {
  210. var textBox = new TextEditor()
  211. {
  212. text = "MikeDeRoy🗘",
  213. cursorIndex = 11,
  214. selectIndex = 11,
  215. };
  216. textBox.Backspace();
  217. Assert.AreEqual("MikeDeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  218. Assert.AreEqual(9, textBox.cursorIndex, kFailedToChangeCursor);
  219. Assert.AreEqual(9, textBox.selectIndex, kFailedToChangeSelect);
  220. }
  221. [Test]
  222. public void TextEditorWithUTF16_MiddleCursorOnBackspace_RemovesBothSurrogatesInSuccession()
  223. {
  224. var textBox = new TextEditor()
  225. {
  226. text = "Mike🗘🗘🗘DeRoy",
  227. cursorIndex = 8,
  228. selectIndex = 8,
  229. };
  230. textBox.Backspace();
  231. Assert.AreEqual("Mike🗘🗘DeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  232. Assert.AreEqual(6, textBox.cursorIndex, kFailedToChangeCursor);
  233. Assert.AreEqual(6, textBox.selectIndex, kFailedToChangeSelect);
  234. textBox.Backspace();
  235. Assert.AreEqual("Mike🗘DeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  236. Assert.AreEqual(4, textBox.cursorIndex, kFailedToChangeCursor);
  237. Assert.AreEqual(4, textBox.selectIndex, kFailedToChangeSelect);
  238. textBox.Backspace();
  239. Assert.AreEqual("Mik🗘DeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  240. Assert.AreEqual(3, textBox.cursorIndex, kFailedToChangeCursor);
  241. Assert.AreEqual(3, textBox.selectIndex, kFailedToChangeSelect);
  242. }
  243. [Test]
  244. public void TextEditorWithUTF16_MiddleCursorOnDelete_RemovesBothSurrogatesInSuccession()
  245. {
  246. var textBox = new TextEditor()
  247. {
  248. text = "Mike🗘🗘🗘DeRoy",
  249. cursorIndex = 6,
  250. selectIndex = 6,
  251. };
  252. textBox.Delete();
  253. Assert.AreEqual("Mike🗘🗘DeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  254. Assert.AreEqual(6, textBox.cursorIndex, kFailedToChangeCursor);
  255. Assert.AreEqual(6, textBox.selectIndex, kFailedToChangeSelect);
  256. textBox.Delete();
  257. Assert.AreEqual("Mike🗘DeRoy", textBox.text, kFailedToRemoveCharacterMessage);
  258. Assert.AreEqual(6, textBox.cursorIndex, kFailedToChangeCursor);
  259. Assert.AreEqual(6, textBox.selectIndex, kFailedToChangeSelect);
  260. textBox.Delete();
  261. Assert.AreEqual("Mike🗘eRoy", textBox.text, kFailedToRemoveCharacterMessage);
  262. Assert.AreEqual(6, textBox.cursorIndex, kFailedToChangeCursor);
  263. Assert.AreEqual(6, textBox.selectIndex, kFailedToChangeSelect);
  264. }
  265. }