annotate .cms/lib/codemirror/test/comment_test.js @ 0:78edf6b517a0 draft

24.10
author Coffee CMS <info@coffee-cms.ru>
date Fri, 11 Oct 2024 22:40:23 +0000
parents
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 namespace = "comment_";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
2
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
3 (function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
4 function test(name, mode, run, before, after) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
5 return testCM(name, function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
6 run(cm);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
7 eq(cm.getValue(), after);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
8 }, {value: before, mode: mode});
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
9 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
10
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
11 var simpleProg = "function foo() {\n return bar;\n}";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
12 var inlineBlock = "foo(/* bar */ true);";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
13 var inlineBlocks = "foo(/* bar */ true, /* baz */ false);";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
14 var multiLineInlineBlock = ["above();", "foo(/* bar */ true);", "below();"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
15
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
16 test("block", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
17 cm.blockComment(Pos(0, 3), Pos(3, 0), {blockCommentLead: " *"});
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
18 }, simpleProg + "\n", "/* function foo() {\n * return bar;\n * }\n */");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
19
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
20 test("blockToggle", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
21 cm.blockComment(Pos(0, 3), Pos(2, 0), {blockCommentLead: " *"});
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
22 cm.uncomment(Pos(0, 3), Pos(2, 0), {blockCommentLead: " *"});
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
23 }, simpleProg, simpleProg);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
24
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
25 test("blockToggle2", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
26 cm.setCursor({line: 0, ch: 7 /* inside the block comment */});
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
27 cm.execCommand("toggleComment");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
28 }, inlineBlock, "foo(bar true);");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
29
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
30 // This test should work but currently fails.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
31 // test("blockToggle3", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
32 // cm.setCursor({line: 0, ch: 7 /* inside the first block comment */});
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
33 // cm.execCommand("toggleComment");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
34 // }, inlineBlocks, "foo(bar true, /* baz */ false);");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
35
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
36 test("line", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
37 cm.lineComment(Pos(1, 1), Pos(1, 1));
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
38 }, simpleProg, "function foo() {\n// return bar;\n}");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
39
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
40 test("lineToggle", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
41 cm.lineComment(Pos(0, 0), Pos(2, 1));
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
42 cm.uncomment(Pos(0, 0), Pos(2, 1));
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
43 }, simpleProg, simpleProg);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
44
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
45 test("fallbackToBlock", "css", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
46 cm.lineComment(Pos(0, 0), Pos(2, 1));
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
47 }, "html {\n border: none;\n}", "/* html {\n border: none;\n} */");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
48
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
49 test("fallbackToLine", "ruby", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
50 cm.blockComment(Pos(0, 0), Pos(1));
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
51 }, "def blah()\n return hah\n", "# def blah()\n# return hah\n");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
52
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
53 test("ignoreExternalBlockComments", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
54 cm.execCommand("toggleComment");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
55 }, inlineBlocks, "// " + inlineBlocks);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
56
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
57 test("ignoreExternalBlockComments2", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
58 cm.setCursor({line: 0, ch: null /* eol */});
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
59 cm.execCommand("toggleComment");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
60 }, inlineBlocks, "// " + inlineBlocks);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
61
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
62 test("ignoreExternalBlockCommentsMultiLineAbove", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
63 cm.setSelection({line: 0, ch: 0}, {line: 1, ch: 1});
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
64 cm.execCommand("toggleComment");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
65 }, multiLineInlineBlock.join("\n"), ["// " + multiLineInlineBlock[0],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
66 "// " + multiLineInlineBlock[1],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
67 multiLineInlineBlock[2]].join("\n"));
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
68
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
69 test("ignoreExternalBlockCommentsMultiLineBelow", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
70 cm.setSelection({line: 1, ch: 13 /* after end of block comment */}, {line: 2, ch: 1});
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
71 cm.execCommand("toggleComment");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
72 }, multiLineInlineBlock.join("\n"), [multiLineInlineBlock[0],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
73 "// " + multiLineInlineBlock[1],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
74 "// " + multiLineInlineBlock[2]].join("\n"));
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
75
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
76 test("commentRange", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
77 cm.blockComment(Pos(1, 2), Pos(1, 13), {fullLines: false});
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
78 }, simpleProg, "function foo() {\n /*return bar;*/\n}");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
79
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
80 test("indented", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
81 cm.lineComment(Pos(1, 0), Pos(2), {indent: true});
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
82 }, simpleProg, "function foo() {\n// return bar;\n// }");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
83
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
84 test("emptyIndentedLine", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
85 cm.lineComment(Pos(1, 2), Pos(1, 2), {indent: true});
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
86 }, "function foo() {\n \n}", "function foo() {\n // \n}");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
87
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
88 test("singleEmptyLine", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
89 cm.setCursor(1);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
90 cm.execCommand("toggleComment");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
91 }, "a;\n\nb;", "a;\n// \nb;");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
92
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
93 test("dontMessWithStrings", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
94 cm.execCommand("toggleComment");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
95 }, "console.log(\"/*string*/\");", "// console.log(\"/*string*/\");");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
96
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
97 test("dontMessWithStrings2", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
98 cm.execCommand("toggleComment");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
99 }, "console.log(\"// string\");", "// console.log(\"// string\");");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
100
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
101 test("dontMessWithStrings3", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
102 cm.execCommand("toggleComment");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
103 }, "// console.log(\"// string\");", "console.log(\"// string\");");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
104
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
105 test("includeLastLine", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
106 cm.execCommand("selectAll")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
107 cm.execCommand("toggleComment")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
108 }, "// foo\n// bar\nbaz", "// // foo\n// // bar\n// baz")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
109
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
110 test("uncommentWithTrailingBlockEnd", "xml", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
111 cm.execCommand("toggleComment")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
112 }, "<!-- foo --> -->", "foo -->")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
113
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
114 test("dontCommentInComment", "xml", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
115 cm.setCursor(1, 0)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
116 cm.execCommand("toggleComment")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
117 }, "<!-- foo\nbar -->", "<!-- foo\nbar -->")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
118
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
119 test("toggleWithMultipleInnerComments", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
120 cm.execCommand("selectAll")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
121 cm.execCommand("toggleComment")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
122 }, "/* foo */\na\n/* bar */\nb", "// /* foo */\n// a\n// /* bar */\n// b")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
123
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
124 var before = 'console.log("//string gets corrupted.");';
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
125 var after = '// console.log("//string gets corrupted.");';
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
126 test("toggleWithStringContainingComment1", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
127 cm.setCursor({line: 0, ch: 16 /* after // inside string */});
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
128 cm.execCommand("toggleComment");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
129 }, before, after)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
130 test("toggleWithStringContainingComment2", "javascript", function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
131 cm.setCursor({line: 0, ch: 16 /* after // inside string */});
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
132 cm.execCommand("toggleComment");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
133 cm.execCommand("toggleComment");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
134 }, before, before)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
135 })();