|
|
@@ -1,10 +1,20 @@
|
|
|
"use strict";
|
|
|
var assert = require("assert"),
|
|
|
+ VariablesIdGenerator = require("../../../../lib/pipeline/expressions/VariablesIdGenerator"),
|
|
|
+ VariablesParseState = require("../../../../lib/pipeline/expressions/VariablesParseState"),
|
|
|
AnyElementTrueExpression = require("../../../../lib/pipeline/expressions/AnyElementTrueExpression"),
|
|
|
Expression = require("../../../../lib/pipeline/expressions/Expression");
|
|
|
|
|
|
var anyElementTrueExpression = new AnyElementTrueExpression();
|
|
|
|
|
|
+function errMsg(expr, args, tree, expected, result) {
|
|
|
+ return "for expression " + expr +
|
|
|
+ " with argument " + args +
|
|
|
+ " full tree: " + JSON.stringify(tree) +
|
|
|
+ " expected: " + expected +
|
|
|
+ " result: " + result;
|
|
|
+}
|
|
|
+
|
|
|
module.exports = {
|
|
|
|
|
|
"AnyElementTrueExpression": {
|
|
|
@@ -27,25 +37,84 @@ module.exports = {
|
|
|
|
|
|
},
|
|
|
|
|
|
- "#evaluateInternal()": {
|
|
|
+ "integration": {
|
|
|
+
|
|
|
+ "JustFalse": function JustFalse(){
|
|
|
+ var idGenerator = new VariablesIdGenerator(),
|
|
|
+ vps = new VariablesParseState(idGenerator),
|
|
|
+ input = [[false]],
|
|
|
+ expr = Expression.parseExpression("$anyElementTrue", input),
|
|
|
+ result = expr.evaluate({}),
|
|
|
+ expected = false,
|
|
|
+ msg = errMsg("$anyElementTrue", input, expr.serialize(false), expected, result);
|
|
|
+ assert.equal(result, expected, msg);
|
|
|
+ },
|
|
|
+
|
|
|
+ "JustTrue": function JustTrue(){
|
|
|
+ var idGenerator = new VariablesIdGenerator(),
|
|
|
+ vps = new VariablesParseState(idGenerator),
|
|
|
+ input = [[true]],
|
|
|
+ expr = Expression.parseExpression("$anyElementTrue", input),
|
|
|
+ result = expr.evaluate({}),
|
|
|
+ expected = true,
|
|
|
+ msg = errMsg("$anyElementTrue", input, expr.serialize(false), expected, result);
|
|
|
+ assert.equal(result, expected, msg);
|
|
|
+ },
|
|
|
|
|
|
- "should return error if parameter is not an array": function testEmpty(){
|
|
|
- assert.throws(function(){
|
|
|
- anyElementTrueExpression.evaluateInternal("TEST");});
|
|
|
+ "OneTrueOneFalse": function OneTrueOneFalse(){
|
|
|
+ var idGenerator = new VariablesIdGenerator(),
|
|
|
+ vps = new VariablesParseState(idGenerator),
|
|
|
+ input = [[true, false]],
|
|
|
+ expr = Expression.parseExpression("$anyElementTrue", input),
|
|
|
+ result = expr.evaluate({}),
|
|
|
+ expected = true,
|
|
|
+ msg = errMsg("$anyElementTrue", input, expr.serialize(false), expected, result);
|
|
|
+ assert.equal(result, expected, msg);
|
|
|
},
|
|
|
|
|
|
- "should return true if only true was given a; {true}": function testEmpty(){
|
|
|
- assert.equal(anyElementTrueExpression.evaluateInternal({$anyElementTrue:[1,2,3,4]}), false);
|
|
|
+ "Empty": function Empty(){
|
|
|
+ var idGenerator = new VariablesIdGenerator(),
|
|
|
+ vps = new VariablesParseState(idGenerator),
|
|
|
+ input = [[]],
|
|
|
+ expr = Expression.parseExpression("$anyElementTrue", input),
|
|
|
+ result = expr.evaluate({}),
|
|
|
+ expected = false,
|
|
|
+ msg = errMsg("$anyElementTrue", input, expr.serialize(false), expected, result);
|
|
|
+ assert.equal(result, expected, msg);
|
|
|
},
|
|
|
|
|
|
- "should return false if no element is true": function testEmpty(){
|
|
|
- assert.equal(anyElementTrueExpression.evaluateInternal({$anyElementTrue:[1,2,3,4]}), false);
|
|
|
+ "TrueViaInt": function TrueViaInt(){
|
|
|
+ var idGenerator = new VariablesIdGenerator(),
|
|
|
+ vps = new VariablesParseState(idGenerator),
|
|
|
+ input = [[1]],
|
|
|
+ expr = Expression.parseExpression("$anyElementTrue", input),
|
|
|
+ result = expr.evaluate({}),
|
|
|
+ expected = true,
|
|
|
+ msg = errMsg("$anyElementTrue", input, expr.serialize(false), expected, result);
|
|
|
+ assert.equal(result, expected, msg);
|
|
|
},
|
|
|
|
|
|
- "should return true if any element is true": function testEmpty(){
|
|
|
- assert.equal(anyElementTrueExpression.evaluateInternal({$anyElementTrue:[1,true,2,3,4]}), true);
|
|
|
+ "FalseViaInt": function FalseViaInt(){
|
|
|
+ var idGenerator = new VariablesIdGenerator(),
|
|
|
+ vps = new VariablesParseState(idGenerator),
|
|
|
+ input = [[0]],
|
|
|
+ expr = Expression.parseExpression("$anyElementTrue", input),
|
|
|
+ result = expr.evaluate({}),
|
|
|
+ expected = false,
|
|
|
+ msg = errMsg("$anyElementTrue", input, expr.serialize(false), expected, result);
|
|
|
+ assert.equal(result, expected, msg);
|
|
|
},
|
|
|
|
|
|
+ "Null": function FalseViaInt(){
|
|
|
+ var idGenerator = new VariablesIdGenerator(),
|
|
|
+ vps = new VariablesParseState(idGenerator),
|
|
|
+ input = [null],
|
|
|
+ expr = Expression.parseExpression("$anyElementTrue", input);
|
|
|
+ assert.throws(function() {
|
|
|
+ var result = expr.evaluate({});
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
}
|