whitespace_test.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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 EditSession = require("../edit_session").EditSession;
  9. var whitespace = require("./whitespace");
  10. // Execution ORDER: test.setUpSuite, setUp, testFn, tearDown, test.tearDownSuite
  11. module.exports = {
  12. timeout: 10000,
  13. "test tab detection": function(next) {
  14. var s = new EditSession([
  15. "define({",
  16. "\tfoo:1,",
  17. "\tbar:2,",
  18. "\tbaz:{,",
  19. "\t\tx:3",
  20. "\t}",
  21. "})"
  22. ]);
  23. var indent = whitespace.$detectIndentation(s.doc.$lines);
  24. assert.equal(indent.ch, "\t");
  25. assert.equal(indent.length, undefined);
  26. s.insert({row: 0, column: 0}, " ");
  27. indent = whitespace.$detectIndentation(s.doc.$lines);
  28. assert.equal(indent.ch, "\t");
  29. assert.equal(indent.length, undefined);
  30. s.doc.removeInLine(0, 0, 2);
  31. s.insert({row: 0, column: 0}, "x\n y\n z\n");
  32. indent = whitespace.$detectIndentation(s.doc.$lines);
  33. assert.equal(indent.ch, "\t");
  34. assert.equal(indent.length, 4);
  35. s.setValue("");
  36. indent = whitespace.$detectIndentation(s.doc.$lines);
  37. assert.ok(!indent);
  38. next();
  39. },
  40. "test empty session": function(next) {
  41. var s = new EditSession([
  42. "define({",
  43. "foo:1,",
  44. "})"
  45. ]);
  46. var indent = whitespace.$detectIndentation(s.doc.$lines);
  47. assert.ok(!indent);
  48. s.insert({row: 1, column: 0}, " x\n ");
  49. indent = whitespace.$detectIndentation(s.doc.$lines);
  50. assert.equal(indent.ch, " ");
  51. assert.equal(indent.length, 4);
  52. next();
  53. },
  54. "!test one line": function(next) {
  55. var s = new EditSession([
  56. "define({",
  57. " foo:1,",
  58. "})"
  59. ]);
  60. var indent = whitespace.$detectIndentation(s.doc.$lines);
  61. assert.equal(indent.ch, " ");
  62. assert.equal(indent.length, 4);
  63. next();
  64. },
  65. "test 1 width indents": function(next) {
  66. var s = new EditSession([
  67. "define({",
  68. " foo:1,",
  69. "})",
  70. "define({",
  71. " bar:1,",
  72. "})",
  73. " t",
  74. " t",
  75. " t",
  76. " t",
  77. " t",
  78. " t",
  79. " t",
  80. " t"
  81. ]);
  82. var indent = whitespace.$detectIndentation(s.doc.$lines);
  83. // assert.equal(indent.ch, " ");
  84. // assert.equal(indent.length, 4);
  85. s = new EditSession([
  86. "{",
  87. " foo:1,",
  88. " bar: {",
  89. " baz:2",
  90. " }",
  91. "}"
  92. ]);
  93. indent = whitespace.$detectIndentation(s.doc.$lines);
  94. assert.equal(indent.ch, " ");
  95. assert.equal(indent.length, 1);
  96. next();
  97. },
  98. };
  99. });
  100. if (typeof module !== "undefined" && module === require.main) {
  101. require("asyncjs").test.testcase(module.exports).exec();
  102. }