Variables_test.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. "use strict";
  2. if (!module.parent) return require.cache[__filename] = 0, (new(require("mocha"))()).addFile(__filename).ui("exports").run(process.exit);
  3. var assert = require("assert"),
  4. Variables = require("../../../../lib/pipeline/expressions/Variables");
  5. exports.Variables = {
  6. "constructor": {
  7. "should be able to construct empty variables": function() {
  8. new Variables();
  9. },
  10. "should be able to give number of variables": function() {
  11. new Variables(5);
  12. },
  13. "should throw if not given a number": function() {
  14. assert.throws(function() {
  15. new Variables("hi");
  16. });
  17. assert.throws(function() {
  18. new Variables({});
  19. });
  20. assert.throws(function() {
  21. new Variables([]);
  22. });
  23. assert.throws(function() {
  24. new Variables(new Date());
  25. });
  26. },
  27. "setValue throws if no args given": function() {
  28. assert.throws(function() {
  29. var variables = new Variables();
  30. variables.setValue(1, "hi");
  31. });
  32. },
  33. },
  34. "#setRoot": {
  35. "should set the _root variable to the passed value": function() {
  36. var variables = new Variables(),
  37. root = {"hi":"hi"};
  38. variables.setRoot(root);
  39. assert.equal(root, variables._root);
  40. },
  41. "must be an object": function mustBeObject() {
  42. var variables = new Variables(),
  43. root = "hi";
  44. assert.throws(function() {
  45. variables.setRoot(root);
  46. });
  47. },
  48. },
  49. "#clearRoot": {
  50. "should set the _root variable to empty obj": function() {
  51. var variables = new Variables(),
  52. root = {"hi":"hi"};
  53. variables.setRoot(root);
  54. variables.clearRoot();
  55. assert.deepEqual({}, variables._root);
  56. },
  57. },
  58. "#getRoot": {
  59. "should return the _root variable": function() {
  60. var variables = new Variables(),
  61. root = {"hi":"hi"};
  62. variables.setRoot(root);
  63. assert.equal(root, variables.getRoot());
  64. },
  65. },
  66. "#setValue": {
  67. "id must be number": function() {
  68. assert.throws(function() {
  69. var variables = new Variables();
  70. variables.setValue("hi", 5);
  71. });
  72. assert.throws(function() {
  73. var variables = new Variables();
  74. variables.setValue(null, 5);
  75. });
  76. assert.throws(function() {
  77. var variables = new Variables();
  78. variables.setValue(new Date(), 5);
  79. });
  80. assert.throws(function() {
  81. var variables = new Variables();
  82. variables.setValue([], 5);
  83. });
  84. assert.throws(function() {
  85. var variables = new Variables();
  86. variables.setValue({}, 5);
  87. });
  88. assert.doesNotThrow(function() {
  89. var variables = new Variables(5);
  90. variables.setValue(1, 5);
  91. });
  92. },
  93. "cannot use root id": function() {
  94. assert.throws(function() {
  95. var variables = new Variables(5);
  96. variables.setValue(Variables.ROOT_ID, "hi");
  97. });
  98. },
  99. "cannot use id larger than initial size": function() {
  100. assert.throws(function() {
  101. var variables = new Variables(5);
  102. variables.setValue(5, "hi"); //off by one check
  103. });
  104. assert.throws(function() {
  105. var variables = new Variables(5);
  106. variables.setValue(6, "hi");
  107. });
  108. },
  109. "sets the value": function() {
  110. var variables = new Variables(5);
  111. variables.setValue(1, "hi"); //off by one check
  112. assert.equal(variables._rest[1], "hi");
  113. },
  114. },
  115. "#getValue": {
  116. "id must be number": function() {
  117. assert.throws(function() {
  118. var variables = new Variables();
  119. variables.getValue("hi", 5);
  120. });
  121. assert.throws(function() {
  122. var variables = new Variables();
  123. variables.getValue(null, 5);
  124. });
  125. assert.throws(function() {
  126. var variables = new Variables();
  127. variables.getValue(new Date(), 5);
  128. });
  129. assert.throws(function() {
  130. var variables = new Variables();
  131. variables.getValue([], 5);
  132. });
  133. assert.throws(function() {
  134. var variables = new Variables();
  135. variables.getValue({}, 5);
  136. });
  137. assert.doesNotThrow(function() {
  138. var variables = new Variables(5);
  139. variables.getValue(1, 5);
  140. });
  141. },
  142. "returns root when given root id": function() {
  143. var variables = new Variables(5),
  144. root = {hi:"hi"};
  145. variables.setRoot(root);
  146. variables.getValue(Variables.ROOT_ID, root);
  147. },
  148. "cannot use id larger than initial size": function() {
  149. assert.throws(function() {
  150. var variables = new Variables(5);
  151. variables.getValue(5, "hi"); //off by one check
  152. });
  153. assert.throws(function() {
  154. var variables = new Variables(5);
  155. variables.getValue(6, "hi");
  156. });
  157. },
  158. "gets the value": function() {
  159. var variables = new Variables(5);
  160. variables.setValue(1, "hi");
  161. assert.equal(variables.getValue(1), "hi");
  162. },
  163. },
  164. "#getDocument": {
  165. "id must be number": function() {
  166. assert.throws(function() {
  167. var variables = new Variables();
  168. variables.getDocument("hi", 5);
  169. });
  170. assert.throws(function() {
  171. var variables = new Variables();
  172. variables.getDocument(null, 5);
  173. });
  174. assert.throws(function() {
  175. var variables = new Variables();
  176. variables.getDocument(new Date(), 5);
  177. });
  178. assert.throws(function() {
  179. var variables = new Variables();
  180. variables.getDocument([], 5);
  181. });
  182. assert.throws(function() {
  183. var variables = new Variables();
  184. variables.getDocument({}, 5);
  185. });
  186. assert.doesNotThrow(function() {
  187. var variables = new Variables(5);
  188. variables.getDocument(1, 5);
  189. });
  190. },
  191. "returns root when given root id": function() {
  192. var variables = new Variables(5),
  193. root = {hi:"hi"};
  194. variables.setRoot(root);
  195. variables.getDocument(Variables.ROOT_ID, root);
  196. },
  197. "cannot use id larger than initial size": function() {
  198. assert.throws(function() {
  199. var variables = new Variables(5);
  200. variables.getDocument(5, "hi"); //off by one check
  201. });
  202. assert.throws(function() {
  203. var variables = new Variables(5);
  204. variables.getDocument(6, "hi");
  205. });
  206. },
  207. "gets the value": function() {
  208. var variables = new Variables(5),
  209. value = {hi:"hi"};
  210. variables.setValue(1, value);
  211. assert.equal(variables.getDocument(1), value);
  212. },
  213. "only returns documents": function() {
  214. var variables = new Variables(5),
  215. value = "hi";
  216. variables.setValue(1, value);
  217. assert.deepEqual(variables.getDocument(1), {});
  218. },
  219. },
  220. };