Преглед изворни кода

REFS DEVOPS-259 updated to be v2.6 compatible.

David Aebersold пре 12 година
родитељ
комит
4b5537f707
2 измењених фајлова са 22 додато и 22 уклоњено
  1. 9 9
      lib/pipeline/expressions/OrExpression.js
  2. 13 13
      test/lib/pipeline/expressions/OrExpression.js

+ 9 - 9
lib/pipeline/expressions/OrExpression.js

@@ -2,7 +2,7 @@
 
 /** 
  * An $or pipeline expression. 
- * @see evaluate 
+ * @see evaluateInternal 
  * @class OrExpression
  * @namespace mungedb-aggregate.pipeline.expressions
  * @module mungedb-aggregate
@@ -16,7 +16,8 @@ var OrExpression = module.exports = function OrExpression(){
 // DEPENDENCIES
 var Value = require("../Value"),
 	ConstantExpression = require("./ConstantExpression"),
-	CoerceToBoolExpression = require("./CoerceToBoolExpression");
+	CoerceToBoolExpression = require("./CoerceToBoolExpression"),
+	Expression = require("./Expression");
 
 // PROTOTYPE MEMBERS
 proto.getOpName = function getOpName(){
@@ -25,11 +26,11 @@ proto.getOpName = function getOpName(){
 
 /** 
  * Takes an array of one or more values and returns true if any of the values in the array are true. Otherwise $or returns false. 
- * @method evaluate
+ * @method evaluateInternal
  **/
-proto.evaluate = function evaluate(doc){
+proto.evaluateInternal = function evaluateInternal(doc){
 	for(var i = 0, n = this.operands.length; i < n; ++i){
-		var value = this.operands[i].evaluate(doc);
+		var value = this.operands[i].evaluateInternal(doc);
 		if (Value.coerceToBool(value)) return true;
 	}
 	return false;
@@ -50,7 +51,7 @@ proto.optimize = function optimize() {
 	if (!(pLast instanceof ConstantExpression)) return pE;
 
 	// Evaluate and coerce the last argument to a boolean.  If it's true, then we can replace this entire expression.
-	var last = Value.coerceToBool(pLast.evaluate());
+	var last = Value.coerceToBool();
 	if (last) return new ConstantExpression(true);
 
 	// If we got here, the final operand was false, so we don't need it anymore.
@@ -62,6 +63,5 @@ proto.optimize = function optimize() {
 	return pE;
 };
 
-proto.getFactory = function getFactory(){
-	return klass;	// using the ctor rather than a separate .create() method
-};
+/** Register Expression */
+Expression.registerExpression("$or", OrExpression.parse);

+ 13 - 13
test/lib/pipeline/expressions/OrExpression.js

@@ -34,54 +34,54 @@ module.exports = {
 
 		},
 
-		"#evaluate()": {
+		"#evaluateInternalInternal()": {
 
 			"should return false if no operors were given; {$or:[]}": function testEmpty(){
-				assert.equal(Expression.parseOperand({$or:[]}).evaluate(), false);
+				assert.equal(Expression.parseOperand({$or:[]}).evaluateInternal(), false);
 			},
 
 			"should return true if operors is one true; {$or:[true]}": function testTrue(){
-				assert.equal(Expression.parseOperand({$or:[true]}).evaluate(), true);
+				assert.equal(Expression.parseOperand({$or:[true]}).evaluateInternal(), true);
 			},
 
 			"should return false if operors is one false; {$or:[false]}": function testFalse(){
-				assert.equal(Expression.parseOperand({$or:[false]}).evaluate(), false);
+				assert.equal(Expression.parseOperand({$or:[false]}).evaluateInternal(), false);
 			},
 
 			"should return true if operors are true or true; {$or:[true,true]}": function testTrueTrue(){
-				assert.equal(Expression.parseOperand({$or:[true,true]}).evaluate(), true);
+				assert.equal(Expression.parseOperand({$or:[true,true]}).evaluateInternal(), true);
 			},
 
 			"should return true if operors are true or false; {$or:[true,false]}": function testTrueFalse(){
-				assert.equal(Expression.parseOperand({$or:[true,false]}).evaluate(), true);
+				assert.equal(Expression.parseOperand({$or:[true,false]}).evaluateInternal(), true);
 			},
 
 			"should return true if operors are false or true; {$or:[false,true]}": function testFalseTrue(){
-				assert.equal(Expression.parseOperand({$or:[false,true]}).evaluate(), true);
+				assert.equal(Expression.parseOperand({$or:[false,true]}).evaluateInternal(), true);
 			},
 
 			"should return false if operors are false or false; {$or:[false,false]}": function testFalseFalse(){
-				assert.equal(Expression.parseOperand({$or:[false,false]}).evaluate(), false);
+				assert.equal(Expression.parseOperand({$or:[false,false]}).evaluateInternal(), false);
 			},
 
 			"should return false if operors are false, false, or false; {$or:[false,false,false]}": function testFalseFalseFalse(){
-				assert.equal(Expression.parseOperand({$or:[false,false,false]}).evaluate(), false);
+				assert.equal(Expression.parseOperand({$or:[false,false,false]}).evaluateInternal(), false);
 			},
 
 			"should return false if operors are false, false, or false; {$or:[false,false,true]}": function testFalseFalseTrue(){
-				assert.equal(Expression.parseOperand({$or:[false,false,true]}).evaluate(), true);
+				assert.equal(Expression.parseOperand({$or:[false,false,true]}).evaluateInternal(), true);
 			},
 
 			"should return true if operors are 0 or 1; {$or:[0,1]}": function testZeroOne(){
-				assert.equal(Expression.parseOperand({$or:[0,1]}).evaluate(), true);
+				assert.equal(Expression.parseOperand({$or:[0,1]}).evaluateInternal(), true);
 			},
 
 			"should return false if operors are 0 or false; {$or:[0,false]}": function testZeroFalse(){
-				assert.equal(Expression.parseOperand({$or:[0,false]}).evaluate(), false);
+				assert.equal(Expression.parseOperand({$or:[0,false]}).evaluateInternal(), false);
 			},
 
 			"should return true if operor is a path String to a truthy value; {$or:['$a']}": function testFieldPath(){
-				assert.equal(Expression.parseOperand({$or:['$a']}).evaluate({a:1}), true);
+				assert.equal(Expression.parseOperand({$or:['$a']}).evaluateInternal({a:1}), true);
 			}
 
 		},