annotate .cms/lib/codemirror/test/search_test.js @ 1:1d486627aa1e draft default tip

24.10
author Coffee CMS <info@coffee-cms.ru>
date Sat, 12 Oct 2024 02:51:39 +0000
parents 78edf6b517a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1 (function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
2 "use strict";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
3
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
4 function run(doc, query, options) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
5 var cursor = doc.getSearchCursor(query, null, options);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
6 for (var i = 3; i < arguments.length; i += 4) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
7 var found = cursor.findNext();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
8 is(found, "not enough results (forward)");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
9 eqCharPos(Pos(arguments[i], arguments[i + 1]), cursor.from(), "from, forward, " + (i - 3) / 4);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
10 eqCharPos(Pos(arguments[i + 2], arguments[i + 3]), cursor.to(), "to, forward, " + (i - 3) / 4);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
11 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
12 is(!cursor.findNext(), "too many matches (forward)");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
13 for (var i = arguments.length - 4; i >= 3; i -= 4) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
14 var found = cursor.findPrevious();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
15 is(found, "not enough results (backwards)");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
16 eqCharPos(Pos(arguments[i], arguments[i + 1]), cursor.from(), "from, backwards, " + (i - 3) / 4);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
17 eqCharPos(Pos(arguments[i + 2], arguments[i + 3]), cursor.to(), "to, backwards, " + (i - 3) / 4);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
18 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
19 is(!cursor.findPrevious(), "too many matches (backwards)");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
20 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
21
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
22 function test(name, f) { window.test("search_" + name, f) }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
23
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
24 test("simple", function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
25 var doc = new CodeMirror.Doc("abcdefg\nabcdefg")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
26 run(doc, "cde", false, 0, 2, 0, 5, 1, 2, 1, 5);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
27 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
28
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
29 test("multiline", function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
30 var doc = new CodeMirror.Doc("hallo\na\nb\ngoodbye")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
31 run(doc, "llo\na\nb\ngoo", false, 0, 2, 3, 3);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
32 run(doc, "blah\na\nb\nhall", false);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
33 run(doc, "bye\nx\neye", false);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
34 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
35
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
36 test("regexp", function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
37 var doc = new CodeMirror.Doc("abcde\nabcde")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
38 run(doc, /bcd/, false, 0, 1, 0, 4, 1, 1, 1, 4);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
39 run(doc, /BCD/, false);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
40 run(doc, /BCD/i, false, 0, 1, 0, 4, 1, 1, 1, 4);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
41 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
42
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
43 test("regexpMultiline", function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
44 var doc = new CodeMirror.Doc("fom fom\nbar\nbaz")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
45 run(doc, /fo[^]*az/, {multiline: true}, 0, 0, 2, 3)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
46 run(doc, /[oa][^u]/, {multiline: true}, 0, 1, 0, 3, 0, 5, 0, 7, 1, 1, 1, 3, 2, 1, 2, 3)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
47 run(doc, /[a][^u]{2}/, {multiline: true}, 1, 1, 2, 0)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
48 })
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
49
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
50 test("insensitive", function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
51 var doc = new CodeMirror.Doc("hallo\nHALLO\noink\nhAllO")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
52 run(doc, "All", false, 3, 1, 3, 4);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
53 run(doc, "All", true, 0, 1, 0, 4, 1, 1, 1, 4, 3, 1, 3, 4);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
54 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
55
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
56 test("multilineInsensitive", function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
57 var doc = new CodeMirror.Doc("zie ginds komT\nDe Stoomboot\nuit Spanje weer aan")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
58 run(doc, "komt\nde stoomboot\nuit", false);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
59 run(doc, "komt\nde stoomboot\nuit", {caseFold: true}, 0, 10, 2, 3);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
60 run(doc, "kOMt\ndE stOOmboot\nuiT", {caseFold: true}, 0, 10, 2, 3);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
61 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
62
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
63 test("multilineInsensitiveSlow", function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
64 var text = ""
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
65 for (var i = 0; i < 1000; i++) text += "foo\nbar\n"
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
66 var doc = new CodeMirror.Doc("find\nme\n" + text + "find\nme\n")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
67 var t0 = +new Date
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
68 run(doc, /find\nme/, {multiline: true}, 0, 0, 1, 2, 2002, 0, 2003, 2)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
69 is(+new Date - t0 < 100)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
70 })
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
71
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
72 test("expandingCaseFold", function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
73 var doc = new CodeMirror.Doc("<b>İİ İİ</b>\n<b>uu uu</b>")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
74 run(doc, "</b>", true, 0, 8, 0, 12, 1, 8, 1, 12);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
75 run(doc, "İİ", true, 0, 3, 0, 5, 0, 6, 0, 8);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
76 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
77
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
78 test("normalize", function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
79 if (!String.prototype.normalize) return
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
80 var doc = new CodeMirror.Doc("yılbaşı\n수 있을까\nLe taux d'humidité à London")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
81 run(doc, "s", false, 0, 5, 0, 6)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
82 run(doc, "이", false, 1, 2, 1, 3)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
83 run(doc, "a", false, 0, 4, 0, 5, 2, 4, 2, 5, 2, 19, 2, 20)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
84 })
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
85
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
86 test("endOfLine", function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
87 var doc = new CodeMirror.Doc("bbcdb\nabcd\nbbcdb\nabcd")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
88 run(doc, /[^b]$/, {multiline: true}, 1, 3, 1, 4, 3, 3, 3, 4)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
89 run(doc, /b$/, false, 0, 4, 0, 5, 2, 4, 2, 5)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
90 })
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
91 })();