Просмотр исходного кода

REFS DEVOPS-237 added for v2.5 compatibility

David Aebersold 12 лет назад
Родитель
Сommit
bef2cb4e92

+ 10 - 9
lib/pipeline/expressions/AnyElementExpression.js → lib/pipeline/expressions/AnyElementTrueExpression.js

@@ -2,15 +2,15 @@
 
 /** 
  * Create an expression that returns true exists in any element. 
- * @class AnyElementExpression
+ * @class AnyElementTrueExpression
  * @namespace mungedb-aggregate.pipeline.expressions
  * @module mungedb-aggregate
  * @constructor
  **/
-var AnyElementExpression = module.exports = function AnyElementExpression(){
+var AnyElementTrueExpression = module.exports = function AnyElementTrueExpression(){
 	if (arguments.length !== 0) throw new Error("zero args expected");
 	base.call(this);
-}, klass = AnyElementExpression, NaryExpression = require("./NaryExpression"), base = NaryExpression, proto = klass.prototype = Object.create(base.prototype, {constructor:{value:klass}});
+}, klass = AnyElementTrueExpression, NaryExpression = require("./NaryExpression"), base = NaryExpression, proto = klass.prototype = Object.create(base.prototype, {constructor:{value:klass}});
 
 // DEPENDENCIES
 var Value = require("../Value"),
@@ -23,19 +23,20 @@ proto.getOpName = function getOpName(){
 
 /**
  * Takes an array of one or more numbers and returns true if any.
- * @method @evaluate
+ * @method @evaluateInternal
  **/
 proto.evaluateInternal = function evaluateInternal(doc) {
 
-	if (!doc instanceof Array) throw new Error("$anyElement requires an array");
+	if (!doc instanceof Array) throw new Error("$anyElementTrue requires an array");
+
 	var total = 0;
 	for (var i = 0, n = doc.length; i < n; ++i) {
-		var value = doc[i].evaluateInternal(doc);
-		if ( value.coerceToDouble() )
+		var value = doc[i].evaluateInternal([i]);
+		if ( value.coerceToBool() )
 			return true;
 	}
+	return false;
 };
 
-
 /** Register Expression */
-Expression.registerExpression("$anyElement",AnyElementExpression.parse);
+Expression.registerExpression("$anyElementTrue",AnyElementTrueExpression.parse);

+ 0 - 45
test/lib/pipeline/expressions/AnyElementExpression.js

@@ -1,45 +0,0 @@
-"use strict";
-var assert = require("assert"),
-	AnyElementExpression = require("../../../../lib/pipeline/expressions/AnyElementExpression"),
-	Expression = require("../../../../lib/pipeline/expressions/Expression");
-
-
-module.exports = {
-
-	"AnyElementExpression": {
-
-		"constructor()": {
-
-			"should not throw Error when constructing without args": function testConstructor(){
-				assert.doesNotThrow(function(){
-					new AnyElementExpression();
-				});
-			}
-
-		},
-
-		"#getOpName()": {
-
-			"should return the correct op name; $anyElement": function testOpName(){
-				assert.equal(new AnyElementExpression().getOpName(), "$anyElement");
-			}
-
-		},
-
-		"#evaluateInternal()": {
-
-			// "should return error if called without array; 1": function testNonArray(){
-			//   assert.throws((Expression.parseOperand().evaluateInternal(new ConstantExpression(1))), false);
-			// },
-
-			"should return true if only true was given; {true}": function testEmpty(){
-				assert.equal(Expression.parseOperand({$anyElement:[true]}).evaluateInterna(), true);
-			},
-
-		}
-
-	}
-
-};
-
-if (!module.parent)(new(require("mocha"))()).ui("exports").reporter("spec").addFile(__filename).run(process.exit);