From 072aad48b788f066ce3315ef6ab2256efa4b49d9 Mon Sep 17 00:00:00 2001 From: rstam Date: Tue, 26 Mar 2013 17:18:57 -0400 Subject: [PATCH] CSHARP-713: MongoDatabase.Eval doesn't send argument to server when there is exactly one argument. --- MongoDB.Driver/MongoDatabase.cs | 2 +- MongoDB.DriverUnitTests/MongoDatabaseTests.cs | 20 +++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/MongoDB.Driver/MongoDatabase.cs b/MongoDB.Driver/MongoDatabase.cs index 0ebc3a4d9a1..d2bd2b81dd5 100644 --- a/MongoDB.Driver/MongoDatabase.cs +++ b/MongoDB.Driver/MongoDatabase.cs @@ -378,7 +378,7 @@ public virtual CommandResult DropCollection(string collectionName) /// The result of evaluating the code. public virtual BsonValue Eval(EvalFlags flags, BsonJavaScript code, params object[] args) { - var argsArray = (args != null && args.Length > 1) ? new BsonArray(args) : null; + var argsArray = (args != null && args.Length > 0) ? new BsonArray(args) : null; var command = new CommandDocument { { "$eval", code }, diff --git a/MongoDB.DriverUnitTests/MongoDatabaseTests.cs b/MongoDB.DriverUnitTests/MongoDatabaseTests.cs index 267fc3c60d6..2bc5fcc1621 100644 --- a/MongoDB.DriverUnitTests/MongoDatabaseTests.cs +++ b/MongoDB.DriverUnitTests/MongoDatabaseTests.cs @@ -99,7 +99,23 @@ public void TestEvalNoArgsNoLock() } [Test] - public void TestEvalWithArgs() + public void TestEvalWithOneArg() + { + var code = "function(x) { return x + 1; }"; + var result = _database.Eval(code, 1); + Assert.AreEqual(2, result.ToInt32()); + } + + [Test] + public void TestEvalWithOneArgNoLock() + { + var code = "function(x) { return x + 1; }"; + var result = _database.Eval(EvalFlags.NoLock, code, 1); + Assert.AreEqual(2, result.ToInt32()); + } + + [Test] + public void TestEvalWithTwoArgs() { var code = "function(x, y) { return x / y; }"; var result = _database.Eval(code, 6, 2); @@ -107,7 +123,7 @@ public void TestEvalWithArgs() } [Test] - public void TestEvalWithArgsNoLock() + public void TestEvalWithTwoArgsNoLock() { var code = "function(x, y) { return x / y; }"; var result = _database.Eval(EvalFlags.NoLock, code, 6, 2);