AllElementsTrueExpression.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. "use strict";
  2. var assert = require("assert"),
  3. VariablesIdGenerator = require("../../../../lib/pipeline/expressions/VariablesIdGenerator"),
  4. VariablesParseState = require("../../../../lib/pipeline/expressions/VariablesParseState"),
  5. AllElementsTrueExpression = require("../../../../lib/pipeline/expressions/AllElementsTrueExpression"),
  6. Expression = require("../../../../lib/pipeline/expressions/Expression");
  7. var allElementsTrueExpression = new AllElementsTrueExpression();
  8. function errMsg(expr, args, tree, expected, result) {
  9. return "for expression " + expr +
  10. " with argument " + args +
  11. " full tree: " + JSON.stringify(tree) +
  12. " expected: " + expected +
  13. " result: " + result;
  14. }
  15. module.exports = {
  16. "AllElementsTrueExpression": {
  17. "constructor()": {
  18. "should not throw Error when constructing without args": function testConstructor(){
  19. assert.doesNotThrow(function(){
  20. new AllElementsTrueExpression();
  21. });
  22. }
  23. },
  24. "#getOpName()": {
  25. "should return the correct op name; $allElements": function testOpName(){
  26. assert.equal(new AllElementsTrueExpression().getOpName(), "$allElementsTrue");
  27. }
  28. },
  29. "integration": {
  30. "JustFalse": function JustFalse(){
  31. var idGenerator = new VariablesIdGenerator(),
  32. vps = new VariablesParseState(idGenerator),
  33. input = [[false]],
  34. expr = Expression.parseExpression("$allElementsTrue", input),
  35. result = expr.evaluate({}),
  36. expected = false,
  37. msg = errMsg("$allElementsTrue", input, expr.serialize(false), expected, result);
  38. assert.equal(result, expected, msg);
  39. },
  40. "JustTrue": function JustTrue(){
  41. var idGenerator = new VariablesIdGenerator(),
  42. vps = new VariablesParseState(idGenerator),
  43. input = [[true]],
  44. expr = Expression.parseExpression("$allElementsTrue", input),
  45. result = expr.evaluate({}),
  46. expected = true,
  47. msg = errMsg("$allElementsTrue", input, expr.serialize(false), expected, result);
  48. assert.equal(result, expected, msg);
  49. },
  50. "OneTrueOneFalse": function OneTrueOneFalse(){
  51. var idGenerator = new VariablesIdGenerator(),
  52. vps = new VariablesParseState(idGenerator),
  53. input = [[true, false]],
  54. expr = Expression.parseExpression("$allElementsTrue", input),
  55. result = expr.evaluate({}),
  56. expected = false,
  57. msg = errMsg("$allElementsTrue", input, expr.serialize(false), expected, result);
  58. assert.equal(result, expected, msg);
  59. },
  60. "OneFalseOneTrue": function OneTrueOneFalse(){
  61. var idGenerator = new VariablesIdGenerator(),
  62. vps = new VariablesParseState(idGenerator),
  63. input = [[false, true]],
  64. expr = Expression.parseExpression("$allElementsTrue", input),
  65. result = expr.evaluate({}),
  66. expected = false,
  67. msg = errMsg("$allElementsTrue", input, expr.serialize(false), expected, result);
  68. assert.equal(result, expected, msg);
  69. },
  70. "Empty": function Empty(){
  71. var idGenerator = new VariablesIdGenerator(),
  72. vps = new VariablesParseState(idGenerator),
  73. input = [[]],
  74. expr = Expression.parseExpression("$allElementsTrue", input),
  75. result = expr.evaluate({}),
  76. expected = false,
  77. msg = errMsg("$allElementsTrue", input, expr.serialize(false), expected, result);
  78. assert.equal(result, expected, msg);
  79. },
  80. "TrueViaInt": function TrueViaInt(){
  81. var idGenerator = new VariablesIdGenerator(),
  82. vps = new VariablesParseState(idGenerator),
  83. input = [[1]],
  84. expr = Expression.parseExpression("$allElementsTrue", input),
  85. result = expr.evaluate({}),
  86. expected = true,
  87. msg = errMsg("$allElementsTrue", input, expr.serialize(false), expected, result);
  88. assert.equal(result, expected, msg);
  89. },
  90. "FalseViaInt": function FalseViaInt(){
  91. var idGenerator = new VariablesIdGenerator(),
  92. vps = new VariablesParseState(idGenerator),
  93. input = [[0]],
  94. expr = Expression.parseExpression("$allElementsTrue", input),
  95. result = expr.evaluate({}),
  96. expected = false,
  97. msg = errMsg("$allElementsTrue", input, expr.serialize(false), expected, result);
  98. assert.equal(result, expected, msg);
  99. },
  100. "Null": function FalseViaInt(){
  101. var idGenerator = new VariablesIdGenerator(),
  102. vps = new VariablesParseState(idGenerator),
  103. input = [null],
  104. expr = Expression.parseExpression("$allElementsTrue", input);
  105. assert.throws(function() {
  106. var result = expr.evaluate({});
  107. });
  108. }
  109. }
  110. }
  111. };
  112. if (!module.parent)(new(require("mocha"))()).ui("exports").reporter("spec").addFile(__filename).run(process.exit);