static_highlight_test.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. if (typeof process !== "undefined") {
  2. require("amd-loader");
  3. require("../test/mockdom");
  4. }
  5. define(function(require, exports, module) {
  6. "use strict";
  7. var assert = require("assert");
  8. var highlighter = require("./static_highlight");
  9. var JavaScriptMode = require("../mode/javascript").Mode;
  10. var TextMode = require("../mode/text").Mode;
  11. // Execution ORDER: test.setUpSuite, setUp, testFn, tearDown, test.tearDownSuite
  12. module.exports = {
  13. timeout: 10000,
  14. "test simple snippet": function(next) {
  15. var theme = require("../theme/tomorrow");
  16. var snippet = [
  17. "/** this is a function",
  18. "*",
  19. "*/",
  20. "function hello (a, b, c) {",
  21. " console.log(a * b + c + 'sup$');",
  22. "}"
  23. ].join("\n");
  24. var mode = new JavaScriptMode();
  25. var result = highlighter.render(snippet, mode, theme);
  26. assert.equal(result.html, "<div class='ace-tomorrow'><div class='ace_static_highlight ace_show_gutter' style='counter-reset:ace_line 0'>"
  27. + "<div class='ace_line'><span class='ace_gutter ace_gutter-cell' unselectable='on'></span><span class='ace_comment ace_doc'>/** this is a function</span>\n</div>"
  28. + "<div class='ace_line'><span class='ace_gutter ace_gutter-cell' unselectable='on'></span><span class='ace_comment ace_doc'>*</span>\n</div>"
  29. + "<div class='ace_line'><span class='ace_gutter ace_gutter-cell' unselectable='on'></span><span class='ace_comment ace_doc'>*/</span>\n</div>"
  30. + "<div class='ace_line'><span class='ace_gutter ace_gutter-cell' unselectable='on'></span><span class='ace_storage ace_type'>function</span> <span class='ace_entity ace_name ace_function'>hello</span> <span class='ace_paren ace_lparen'>(</span><span class='ace_variable ace_parameter'>a</span><span class='ace_punctuation ace_operator'>, </span><span class='ace_variable ace_parameter'>b</span><span class='ace_punctuation ace_operator'>, </span><span class='ace_variable ace_parameter'>c</span><span class='ace_paren ace_rparen'>)</span> <span class='ace_paren ace_lparen'>{</span>\n</div>"
  31. + "<div class='ace_line'><span class='ace_gutter ace_gutter-cell' unselectable='on'></span> <span class='ace_storage ace_type'>console</span><span class='ace_punctuation ace_operator'>.</span><span class='ace_support ace_function ace_firebug'>log</span><span class='ace_paren ace_lparen'>(</span><span class='ace_identifier'>a</span> <span class='ace_keyword ace_operator'>*</span> <span class='ace_identifier'>b</span> <span class='ace_keyword ace_operator'>+</span> <span class='ace_identifier'>c</span> <span class='ace_keyword ace_operator'>+</span> <span class='ace_string'>'sup$'</span><span class='ace_paren ace_rparen'>)</span><span class='ace_punctuation ace_operator'>;</span>\n</div>"
  32. + "<div class='ace_line'><span class='ace_gutter ace_gutter-cell' unselectable='on'></span><span class='ace_paren ace_rparen'>}</span>\n</div>"
  33. + "</div></div>");
  34. assert.ok(!!result.css);
  35. next();
  36. },
  37. "test css from theme is used": function(next) {
  38. var theme = require("../theme/tomorrow");
  39. var snippet = [
  40. "/** this is a function",
  41. "*",
  42. "*/",
  43. "function hello (a, b, c) {",
  44. " console.log(a * b + c + 'sup?');",
  45. "}"
  46. ].join("\n");
  47. var mode = new JavaScriptMode();
  48. var result = highlighter.render(snippet, mode, theme);
  49. assert.ok(result.css.indexOf(theme.cssText) !== -1);
  50. next();
  51. },
  52. "test theme classname should be in output html": function(next) {
  53. var theme = require("../theme/tomorrow");
  54. var snippet = [
  55. "/** this is a function",
  56. "*",
  57. "*/",
  58. "function hello (a, b, c) {",
  59. " console.log(a * b + c + 'sup?');",
  60. "}"
  61. ].join("\n");
  62. var mode = new JavaScriptMode();
  63. var result = highlighter.render(snippet, mode, theme);
  64. assert.equal(!!result.html.match(/<div class='ace-tomorrow'>/), true);
  65. next();
  66. },
  67. "test js string replace specials": function(next) {
  68. var theme = require("../theme/tomorrow");
  69. var snippet = "$'$1$2$$$&";
  70. var mode = new TextMode();
  71. var result = highlighter.render(snippet, mode, theme);
  72. assert.ok(result.html.indexOf(snippet) != -1);
  73. next();
  74. }
  75. };
  76. });
  77. if (typeof module !== "undefined" && module === require.main) {
  78. require("asyncjs").test.testcase(module.exports).exec();
  79. }