Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 (function() {
2 "use strict";
4 var Pos = CodeMirror.Pos;
5 namespace = "sublime_";
7 function stTest(name) {
8 var actions = Array.prototype.slice.call(arguments, 1);
9 testCM(name, function(cm) {
10 for (var i = 0; i < actions.length; i++) {
11 var action = actions[i];
12 if (typeof action == "string" && i == 0)
13 cm.setValue(action);
14 else if (typeof action == "string")
15 cm.execCommand(action);
16 else if (action instanceof Pos)
17 cm.setCursor(action);
18 else
19 action(cm);
20 }
21 });
22 }
24 function at(line, ch, msg) {
25 return function(cm) {
26 eq(cm.listSelections().length, 1);
27 eqPos(cm.getCursor("head"), Pos(line, ch), msg);
28 eqPos(cm.getCursor("anchor"), Pos(line, ch), msg);
29 };
30 }
32 function val(content, msg) {
33 return function(cm) { eq(cm.getValue(), content, msg); };
34 }
36 function argsToRanges(args) {
37 if (args.length % 4) throw new Error("Wrong number of arguments for ranges.");
38 var ranges = [];
39 for (var i = 0; i < args.length; i += 4)
40 ranges.push({anchor: Pos(args[i], args[i + 1]),
41 head: Pos(args[i + 2], args[i + 3])});
42 return ranges;
43 }
45 function setSel() {
46 var ranges = argsToRanges(arguments);
47 return function(cm) { cm.setSelections(ranges, 0); };
48 }
50 function hasSel() {
51 var ranges = argsToRanges(arguments);
52 return function(cm) {
53 var sels = cm.listSelections();
54 if (sels.length != ranges.length)
55 throw new Failure("Expected " + ranges.length + " selections, but found " + sels.length);
56 for (var i = 0; i < sels.length; i++) {
57 eqPos(sels[i].anchor, ranges[i].anchor, "anchor " + i);
58 eqPos(sels[i].head, ranges[i].head, "head " + i);
59 }
60 };
61 }
63 stTest("bySubword", "the foo_bar DooDahBah \n a",
64 "goSubwordLeft", at(0, 0),
65 "goSubwordRight", at(0, 3),
66 "goSubwordRight", at(0, 7),
67 "goSubwordRight", at(0, 11),
68 "goSubwordRight", at(0, 15),
69 "goSubwordRight", at(0, 18),
70 "goSubwordRight", at(0, 21),
71 "goSubwordRight", at(0, 22),
72 "goSubwordRight", at(1, 0),
73 "goSubwordRight", at(1, 2),
74 "goSubwordRight", at(1, 2),
75 "goSubwordLeft", at(1, 1),
76 "goSubwordLeft", at(1, 0),
77 "goSubwordLeft", at(0, 22),
78 "goSubwordLeft", at(0, 18),
79 "goSubwordLeft", at(0, 15),
80 "goSubwordLeft", at(0, 12),
81 "goSubwordLeft", at(0, 8),
82 "goSubwordLeft", at(0, 4),
83 "goSubwordLeft", at(0, 0));
85 stTest("splitSelectionByLine", "abc\ndef\nghi",
86 setSel(0, 1, 2, 2),
87 "splitSelectionByLine",
88 hasSel(0, 1, 0, 3,
89 1, 0, 1, 3,
90 2, 0, 2, 2));
92 stTest("splitSelectionByLineMulti", "abc\ndef\nghi\njkl",
93 setSel(0, 1, 1, 1,
94 1, 2, 3, 2,
95 3, 3, 3, 3),
96 "splitSelectionByLine",
97 hasSel(0, 1, 0, 3,
98 1, 0, 1, 1,
99 1, 2, 1, 3,
100 2, 0, 2, 3,
101 3, 0, 3, 2,
102 3, 3, 3, 3));
104 stTest("selectLine", "abc\ndef\nghi",
105 setSel(0, 1, 0, 1,
106 2, 0, 2, 1),
107 "selectLine",
108 hasSel(0, 0, 1, 0,
109 2, 0, 2, 3),
110 setSel(0, 1, 1, 0),
111 "selectLine",
112 hasSel(0, 0, 2, 0));
114 stTest("insertLineAfter", "abcde\nfghijkl\nmn",
115 setSel(0, 1, 0, 1,
116 0, 3, 0, 3,
117 1, 2, 1, 2,
118 1, 3, 1, 5), "insertLineAfter",
119 hasSel(1, 0, 1, 0,
120 3, 0, 3, 0), val("abcde\n\nfghijkl\n\nmn"));
122 stTest("insertLineBefore", "abcde\nfghijkl\nmn",
123 setSel(0, 1, 0, 1,
124 0, 3, 0, 3,
125 1, 2, 1, 2,
126 1, 3, 1, 5), "insertLineBefore",
127 hasSel(0, 0, 0, 0,
128 2, 0, 2, 0), val("\nabcde\n\nfghijkl\nmn"));
130 stTest("selectNextOccurrence", "a foo bar\nfoobar foo",
131 setSel(0, 2, 0, 5),
132 "selectNextOccurrence", hasSel(0, 2, 0, 5,
133 1, 0, 1, 3),
134 "selectNextOccurrence", hasSel(0, 2, 0, 5,
135 1, 0, 1, 3,
136 1, 7, 1, 10),
137 "selectNextOccurrence", hasSel(0, 2, 0, 5,
138 1, 0, 1, 3,
139 1, 7, 1, 10),
140 Pos(0, 3), "selectNextOccurrence", hasSel(0, 2, 0, 5),
141 "selectNextOccurrence", hasSel(0, 2, 0, 5,
142 1, 7, 1, 10),
143 setSel(0, 6, 0, 9),
144 "selectNextOccurrence", hasSel(0, 6, 0, 9,
145 1, 3, 1, 6));
147 stTest("selectScope", "foo(a) {\n bar[1, 2];\n}",
148 "selectScope", hasSel(0, 0, 2, 1),
149 Pos(0, 4), "selectScope", hasSel(0, 4, 0, 5),
150 Pos(0, 5), "selectScope", hasSel(0, 4, 0, 5),
151 Pos(0, 6), "selectScope", hasSel(0, 0, 2, 1),
152 Pos(0, 8), "selectScope", hasSel(0, 8, 2, 0),
153 Pos(1, 2), "selectScope", hasSel(0, 8, 2, 0),
154 Pos(1, 6), "selectScope", hasSel(1, 6, 1, 10),
155 Pos(1, 9), "selectScope", hasSel(1, 6, 1, 10));
157 stTest("goToBracket", "foo(a) {\n bar[1, 2];\n}",
158 Pos(0, 0), "goToBracket", at(0, 0),
159 Pos(0, 4), "goToBracket", at(0, 5), "goToBracket", at(0, 4),
160 Pos(0, 8), "goToBracket", at(2, 0), "goToBracket", at(0, 8),
161 Pos(1, 2), "goToBracket", at(2, 0),
162 Pos(1, 7), "goToBracket", at(1, 10), "goToBracket", at(1, 6));
164 stTest("swapLine", "1\n2\n3---\n4\n5",
165 "swapLineDown", val("2\n1\n3---\n4\n5"),
166 "swapLineUp", val("1\n2\n3---\n4\n5"),
167 "swapLineUp", val("1\n2\n3---\n4\n5"),
168 Pos(4, 1), "swapLineDown", val("1\n2\n3---\n4\n5"),
169 setSel(0, 1, 0, 1,
170 1, 0, 2, 0,
171 2, 2, 2, 2),
172 "swapLineDown", val("4\n1\n2\n3---\n5"),
173 hasSel(1, 1, 1, 1,
174 2, 0, 3, 0,
175 3, 2, 3, 2),
176 "swapLineUp", val("1\n2\n3---\n4\n5"),
177 hasSel(0, 1, 0, 1,
178 1, 0, 2, 0,
179 2, 2, 2, 2));
181 stTest("swapLineUpFromEnd", "a\nb\nc",
182 Pos(2, 1), "swapLineUp",
183 hasSel(1, 1, 1, 1), val("a\nc\nb"));
185 stTest("joinLines", "abc\ndef\nghi\njkl",
186 "joinLines", val("abc def\nghi\njkl"), at(0, 4),
187 "undo",
188 setSel(0, 2, 1, 1), "joinLines",
189 val("abc def ghi\njkl"), hasSel(0, 2, 0, 8),
190 "undo",
191 setSel(0, 1, 0, 1,
192 1, 1, 1, 1,
193 3, 1, 3, 1), "joinLines",
194 val("abc def ghi\njkl"), hasSel(0, 4, 0, 4,
195 0, 8, 0, 8,
196 1, 3, 1, 3));
198 stTest("duplicateLine", "abc\ndef\nghi",
199 Pos(1, 0), "duplicateLine", val("abc\ndef\ndef\nghi"), at(2, 0),
200 "undo",
201 setSel(0, 1, 0, 1,
202 1, 1, 1, 1,
203 2, 1, 2, 1), "duplicateLine",
204 val("abc\nabc\ndef\ndef\nghi\nghi"), hasSel(1, 1, 1, 1,
205 3, 1, 3, 1,
206 5, 1, 5, 1));
207 stTest("duplicateLineSelection", "abcdef",
208 setSel(0, 1, 0, 1,
209 0, 2, 0, 4,
210 0, 5, 0, 5),
211 "duplicateLine",
212 val("abcdef\nabcdcdef\nabcdcdef"), hasSel(2, 1, 2, 1,
213 2, 4, 2, 6,
214 2, 7, 2, 7));
216 stTest("selectLinesUpward", "123\n345\n789\n012",
217 setSel(0, 1, 0, 1,
218 1, 1, 1, 3,
219 2, 0, 2, 0,
220 3, 0, 3, 0),
221 "selectLinesUpward",
222 hasSel(0, 1, 0, 1,
223 0, 3, 0, 3,
224 1, 0, 1, 0,
225 1, 1, 1, 3,
226 2, 0, 2, 0,
227 3, 0, 3, 0));
229 stTest("selectLinesDownward", "123\n345\n789\n012",
230 setSel(0, 1, 0, 1,
231 1, 1, 1, 3,
232 2, 0, 2, 0,
233 3, 0, 3, 0),
234 "selectLinesDownward",
235 hasSel(0, 1, 0, 1,
236 1, 1, 1, 3,
237 2, 0, 2, 0,
238 2, 3, 2, 3,
239 3, 0, 3, 0));
241 stTest("sortLines", "c\nb\na\nC\nB\nA",
242 "sortLines", val("A\nB\nC\na\nb\nc"),
243 "undo",
244 setSel(0, 0, 2, 0,
245 3, 0, 5, 0),
246 "sortLines", val("a\nb\nc\nA\nB\nC"),
247 hasSel(0, 0, 2, 1,
248 3, 0, 5, 1),
249 "undo",
250 setSel(1, 0, 4, 0), "sortLinesInsensitive", val("c\na\nB\nb\nC\nA"));
252 stTest("bookmarks", "abc\ndef\nghi\njkl",
253 Pos(0, 1), "toggleBookmark",
254 setSel(1, 1, 1, 2), "toggleBookmark",
255 setSel(2, 1, 2, 2), "toggleBookmark",
256 "nextBookmark", hasSel(0, 1, 0, 1),
257 "nextBookmark", hasSel(1, 1, 1, 2),
258 "nextBookmark", hasSel(2, 1, 2, 2),
259 "prevBookmark", hasSel(1, 1, 1, 2),
260 "prevBookmark", hasSel(0, 1, 0, 1),
261 "prevBookmark", hasSel(2, 1, 2, 2),
262 "prevBookmark", hasSel(1, 1, 1, 2),
263 "toggleBookmark",
264 "prevBookmark", hasSel(2, 1, 2, 2),
265 "prevBookmark", hasSel(0, 1, 0, 1),
266 "selectBookmarks", hasSel(0, 1, 0, 1,
267 2, 1, 2, 2),
268 "clearBookmarks",
269 Pos(0, 0), "selectBookmarks", at(0, 0));
271 stTest("upAndDowncaseAtCursor", "abc\ndef x\nghI",
272 setSel(0, 1, 0, 3,
273 1, 1, 1, 1,
274 1, 4, 1, 4), "upcaseAtCursor",
275 val("aBC\nDEF x\nghI"), hasSel(0, 1, 0, 3,
276 1, 3, 1, 3,
277 1, 4, 1, 4),
278 "downcaseAtCursor",
279 val("abc\ndef x\nghI"), hasSel(0, 1, 0, 3,
280 1, 3, 1, 3,
281 1, 4, 1, 4));
283 stTest("mark", "abc\ndef\nghi",
284 Pos(1, 1), "setSublimeMark",
285 Pos(2, 1), "selectToSublimeMark", hasSel(2, 1, 1, 1),
286 Pos(0, 1), "swapWithSublimeMark", at(1, 1), "swapWithSublimeMark", at(0, 1),
287 "deleteToSublimeMark", val("aef\nghi"),
288 "sublimeYank", val("abc\ndef\nghi"), at(1, 1));
290 stTest("findUnder", "foo foobar a",
291 "findUnder", hasSel(0, 4, 0, 7),
292 "findUnder", hasSel(0, 0, 0, 3),
293 "findUnderPrevious", hasSel(0, 4, 0, 7),
294 "findUnderPrevious", hasSel(0, 0, 0, 3),
295 Pos(0, 4), "findUnder", hasSel(0, 4, 0, 10),
296 Pos(0, 11), "findUnder", hasSel(0, 11, 0, 11));
297 })();