tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

comment_test.js (4626B)


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