summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/expression_test.cpp
diff options
context:
space:
mode:
authorCharlie Swanson <charlie.swanson@mongodb.com>2019-05-01 16:36:19 -0400
committerCharlie Swanson <charlie.swanson@mongodb.com>2019-05-07 09:40:17 -0400
commit96e96c3af633f856dc0bb695c3fe0691a16459e0 (patch)
tree032f30fcb89821ad8b47d58885f71c75f5ef29bc /src/mongo/db/pipeline/expression_test.cpp
parenta14a727bf1ee93c1ac93769df1a234fd2e55624c (diff)
downloadmongo-96e96c3af633f856dc0bb695c3fe0691a16459e0.tar.gz
SERVER-40055 Consolidate $round behavior with and without a default
Diffstat (limited to 'src/mongo/db/pipeline/expression_test.cpp')
-rw-r--r--src/mongo/db/pipeline/expression_test.cpp30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/mongo/db/pipeline/expression_test.cpp b/src/mongo/db/pipeline/expression_test.cpp
index ceff19672a2..58e1000ed08 100644
--- a/src/mongo/db/pipeline/expression_test.cpp
+++ b/src/mongo/db/pipeline/expression_test.cpp
@@ -997,8 +997,13 @@ TEST_F(ExpressionRoundOneArgTest, DoubleArg1) {
assertEval(-2.0, -2.0);
assertEval(0.9, 1.0);
assertEval(0.1, 0.0);
+ assertEval(1.5, 2.0);
+ assertEval(2.5, 2.0);
+ assertEval(3.5, 4.0);
assertEval(-1.2, -1.0);
assertEval(-1.7, -2.0);
+ assertEval(-1.5, -2.0);
+ assertEval(-2.5, -2.0);
// Outside the range of long longs (there isn't enough precision for decimals in this range, so
// should just preserve the number).
@@ -1013,8 +1018,13 @@ TEST_F(ExpressionRoundTwoArgTest, DoubleArg2) {
assertEval(-2.0, 2.0, -2.0);
assertEval(0.9, 0, 1.0);
assertEval(0.1, 0, 0.0);
+ assertEval(1.5, 0, 2.0);
+ assertEval(2.5, 0, 2.0);
+ assertEval(3.5, 0, 4.0);
assertEval(-1.2, 0, -1.0);
assertEval(-1.7, 0, -2.0);
+ assertEval(-1.5, 0, -2.0);
+ assertEval(-2.5, 0, -2.0);
assertEval(-3.14159265, 0, -3.0);
assertEval(-3.14159265, 1, -3.1);
@@ -1044,6 +1054,9 @@ TEST_F(ExpressionRoundOneArgTest, DecimalArg1) {
assertEval(Decimal128("-2"), Decimal128("-2.0"));
assertEval(Decimal128("0.9"), Decimal128("1.0"));
assertEval(Decimal128("0.1"), Decimal128("0.0"));
+ assertEval(Decimal128("0.5"), Decimal128("0.0"));
+ assertEval(Decimal128("1.5"), Decimal128("2.0"));
+ assertEval(Decimal128("2.5"), Decimal128("2.0"));
assertEval(Decimal128("-1.2"), Decimal128("-1.0"));
assertEval(Decimal128("-1.7"), Decimal128("-2.0"));
assertEval(Decimal128("123456789.9999999999999999999999999"), Decimal128("123456790"));
@@ -1057,6 +1070,9 @@ TEST_F(ExpressionRoundTwoArgTest, DecimalArg2) {
assertEval(Decimal128("-2"), 0, Decimal128("-2.0"));
assertEval(Decimal128("0.9"), 0, Decimal128("1.0"));
assertEval(Decimal128("0.1"), 0, Decimal128("0.0"));
+ assertEval(Decimal128("0.5"), 0, Decimal128("0.0"));
+ assertEval(Decimal128("1.5"), 0, Decimal128("2.0"));
+ assertEval(Decimal128("2.5"), 0, Decimal128("2.0"));
assertEval(Decimal128("-1.2"), 0, Decimal128("-1.0"));
assertEval(Decimal128("-1.7"), 0, Decimal128("-2.0"));
assertEval(Decimal128("123456789.9999999999999999999999999"), 0, Decimal128("123456790"));
@@ -1120,6 +1136,7 @@ public:
TEST_F(ExpressionTruncOneArgTest, IntArg1) {
assertEval(0, 0);
+ assertEval(0, 0);
assertEval(numeric_limits<int>::min(), numeric_limits<int>::min());
assertEval(numeric_limits<int>::max(), numeric_limits<int>::max());
}
@@ -1151,8 +1168,14 @@ TEST_F(ExpressionTruncOneArgTest, DoubleArg1) {
assertEval(-2.0, -2.0);
assertEval(0.9, 0.0);
assertEval(0.1, 0.0);
+ assertEval(0.5, 0.0);
+ assertEval(1.5, 1.0);
+ assertEval(2.5, 2.0);
assertEval(-1.2, -1.0);
assertEval(-1.7, -1.0);
+ assertEval(-0.5, -0.0);
+ assertEval(-1.5, -1.0);
+ assertEval(-2.5, -2.0);
// Outside the range of long longs (there isn't enough precision for decimals in this range, so
// should just preserve the number).
@@ -1167,9 +1190,14 @@ TEST_F(ExpressionTruncTwoArgTest, DoubleArg2) {
assertEval(-2.0, 2.0, -2.0);
assertEval(0.9, 0, 0.0);
assertEval(0.1, 0, 0.0);
+ assertEval(0.5, 0, 0.0);
+ assertEval(1.5, 0, 1.0);
+ assertEval(2.5, 0, 2.0);
assertEval(-1.2, 0, -1.0);
assertEval(-1.7, 0, -1.0);
-
+ assertEval(-0.5, 0, -0.0);
+ assertEval(-1.5, 0, -1.0);
+ assertEval(-2.5, 0, -2.0);
assertEval(-3.14159265, 0, -3.0);
assertEval(-3.14159265, 1, -3.1);