AnyElementTrueExpression.js 4.2 KB

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