performance.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. /**
  2. * Created by Tivie on 21/12/2016.
  3. */
  4. 'use strict';
  5. var fs = require('fs'),
  6. showdown = require('../bootstrap').showdown,
  7. converter = new showdown.Converter(),
  8. pkg = require('../../package.json'),
  9. performance = require('../performance/performance.js');
  10. performance.setLibraryName(pkg.name);
  11. performance.setVersion(pkg.version);
  12. performance.setGithubLink('https://github.com/showdownjs/showdown/tree/');
  13. var globals = {
  14. gHtmlBlocks: [],
  15. gHtmlMdBlocks: [],
  16. gHtmlSpans: [],
  17. gUrls: {},
  18. gTitles: {},
  19. gDimensions: {},
  20. gListLevel: 0,
  21. hashLinkCounts: {},
  22. langExtensions: [],
  23. outputModifiers: [],
  24. converter: converter,
  25. ghCodeBlocks: []
  26. },
  27. options = showdown.getOptions();
  28. function runTests () {
  29. var testMDFile = fs.readFileSync('test/performance.testfile.md', 'utf8');
  30. new performance.Suite('Basic')
  31. .setOption('cycles', 50)
  32. .add('Simple "Hello World"', function () {
  33. converter.makeHtml('*Hello* **World**!');
  34. })
  35. .add('performance.testfile.md', {
  36. prepare: function () {
  37. return testMDFile;
  38. },
  39. test: function (mdText) {
  40. converter.makeHtml(mdText);
  41. }
  42. });
  43. new performance.Suite('subParsers')
  44. .setOption('cycles', 20)
  45. .add('hashHTMLBlocks', function () {
  46. showdown.subParser('hashHTMLBlocks')(testMDFile, options, globals);
  47. })
  48. .add('anchors', function () {
  49. showdown.subParser('anchors')(testMDFile, options, globals);
  50. })
  51. .add('autoLinks', function () {
  52. showdown.subParser('autoLinks')(testMDFile, options, globals);
  53. })
  54. /*
  55. .add('blockGamut', function () {
  56. showdown.subParser('blockGamut')(testMDFile, options, globals);
  57. })
  58. */
  59. .add('blockQuotes', function () {
  60. showdown.subParser('blockQuotes')(testMDFile, options, globals);
  61. })
  62. .add('codeBlocks', function () {
  63. showdown.subParser('codeBlocks')(testMDFile, options, globals);
  64. })
  65. .add('codeSpans', function () {
  66. showdown.subParser('codeSpans')(testMDFile, options, globals);
  67. })
  68. .add('detab', function () {
  69. showdown.subParser('detab')(testMDFile, options, globals);
  70. })
  71. .add('encodeAmpsAndAngles', function () {
  72. showdown.subParser('encodeAmpsAndAngles')(testMDFile, options, globals);
  73. })
  74. .add('encodeBackslashEscapes', function () {
  75. showdown.subParser('encodeBackslashEscapes')(testMDFile, options, globals);
  76. })
  77. .add('encodeCode', function () {
  78. showdown.subParser('encodeCode')(testMDFile, options, globals);
  79. })
  80. .add('escapeSpecialCharsWithinTagAttributes', function () {
  81. showdown.subParser('escapeSpecialCharsWithinTagAttributes')(testMDFile, options, globals);
  82. })
  83. .add('githubCodeBlocks', function () {
  84. showdown.subParser('githubCodeBlocks')(testMDFile, options, globals);
  85. })
  86. .add('hashBlock', function () {
  87. showdown.subParser('hashBlock')(testMDFile, options, globals);
  88. })
  89. .add('hashElement', function () {
  90. showdown.subParser('hashElement')(testMDFile, options, globals);
  91. })
  92. .add('hashHTMLSpans', function () {
  93. showdown.subParser('hashHTMLSpans')(testMDFile, options, globals);
  94. })
  95. .add('hashPreCodeTags', function () {
  96. showdown.subParser('hashPreCodeTags')(testMDFile, options, globals);
  97. })
  98. .add('headers', function () {
  99. showdown.subParser('headers')(testMDFile, options, globals);
  100. })
  101. .add('horizontalRule', function () {
  102. showdown.subParser('horizontalRule')(testMDFile, options, globals);
  103. })
  104. .add('images', function () {
  105. showdown.subParser('images')(testMDFile, options, globals);
  106. })
  107. .add('italicsAndBold', function () {
  108. showdown.subParser('italicsAndBold')(testMDFile, options, globals);
  109. })
  110. .add('lists', function () {
  111. showdown.subParser('lists')(testMDFile, options, globals);
  112. })
  113. .add('outdent', function () {
  114. showdown.subParser('outdent')(testMDFile, options, globals);
  115. })
  116. .add('paragraphs', function () {
  117. showdown.subParser('paragraphs')(testMDFile, options, globals);
  118. })
  119. .add('spanGamut', function () {
  120. showdown.subParser('spanGamut')(testMDFile, options, globals);
  121. })
  122. .add('strikethrough', function () {
  123. showdown.subParser('strikethrough')(testMDFile, options, globals);
  124. })
  125. .add('stripLinkDefinitions', function () {
  126. showdown.subParser('stripLinkDefinitions')(testMDFile, options, globals);
  127. })
  128. .add('tables', function () {
  129. showdown.subParser('tables')(testMDFile, options, globals);
  130. })
  131. .add('unescapeSpecialChars', function () {
  132. showdown.subParser('unescapeSpecialChars')(testMDFile, options, globals);
  133. });
  134. }
  135. function generateLogs () {
  136. performance.generateLog(null, null, true);
  137. }
  138. module.exports = {
  139. runTests: runTests,
  140. generateLogs: generateLogs
  141. };