AnyElementTrueExpression.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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: " + JSON.stringify(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. expr = Expression.parseExpression("$anyElementTrue", input),
  35. result = expr.evaluate({}),
  36. expected = false,
  37. msg = errMsg("$anyElementTrue", 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("$anyElementTrue", input),
  45. result = expr.evaluate({}),
  46. expected = true,
  47. msg = errMsg("$anyElementTrue", 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("$anyElementTrue", input),
  55. result = expr.evaluate({}),
  56. expected = true,
  57. msg = errMsg("$anyElementTrue", input, expr.serialize(false), expected, result);
  58. assert.equal(result, expected, msg);
  59. },
  60. "Empty": function Empty(){
  61. var idGenerator = new VariablesIdGenerator(),
  62. vps = new VariablesParseState(idGenerator),
  63. input = [[]],
  64. expr = Expression.parseExpression("$anyElementTrue", input),
  65. result = expr.evaluate({}),
  66. expected = false,
  67. msg = errMsg("$anyElementTrue", input, expr.serialize(false), expected, result);
  68. assert.equal(result, expected, msg);
  69. },
  70. "TrueViaInt": function TrueViaInt(){
  71. var idGenerator = new VariablesIdGenerator(),
  72. vps = new VariablesParseState(idGenerator),
  73. input = [[1]],
  74. expr = Expression.parseExpression("$anyElementTrue", input),
  75. result = expr.evaluate({}),
  76. expected = true,
  77. msg = errMsg("$anyElementTrue", input, expr.serialize(false), expected, result);
  78. assert.equal(result, expected, msg);
  79. },
  80. "FalseViaInt": function FalseViaInt(){
  81. var idGenerator = new VariablesIdGenerator(),
  82. vps = new VariablesParseState(idGenerator),
  83. input = [[0]],
  84. expr = Expression.parseExpression("$anyElementTrue", input),
  85. result = expr.evaluate({}),
  86. expected = false,
  87. msg = errMsg("$anyElementTrue", input, expr.serialize(false), expected, result);
  88. assert.equal(result, expected, msg);
  89. },
  90. "Null": function FalseViaInt(){
  91. var idGenerator = new VariablesIdGenerator(),
  92. vps = new VariablesParseState(idGenerator),
  93. input = [null],
  94. expr = Expression.parseExpression("$anyElementTrue", input);
  95. assert.throws(function() {
  96. var result = expr.evaluate({});
  97. });
  98. }
  99. }
  100. }
  101. };
  102. if (!module.parent)(new(require("mocha"))()).ui("exports").reporter("spec").addFile(__filename).run(process.exit);