mirror of https://github.com/mongodb/mongo
60 lines
1.7 KiB
JavaScript
60 lines
1.7 KiB
JavaScript
/**
|
|
* Tests that the approximate median expression semantics match the percentile expression semantics
|
|
* with the field 'p':[0.5].
|
|
* @tags: [
|
|
* requires_fcv_70,
|
|
* ]
|
|
*/
|
|
import {testWithProjectMedian} from "jstests/aggregation/libs/percentiles_util.js";
|
|
|
|
const coll = db[jsTestName()];
|
|
|
|
/**
|
|
* Tests with input as single expression which evaluates to an array.
|
|
*/
|
|
testWithProjectMedian({
|
|
coll: coll,
|
|
doc: {x: [0, "non-numeric", 1, 2], no_x: 0},
|
|
medianSpec: {$median: {input: "$x", method: "approximate"}},
|
|
expectedResult: 1,
|
|
msg: "Non-numeric data should be ignored in input which evaluates to an array",
|
|
});
|
|
|
|
testWithProjectMedian({
|
|
coll: coll,
|
|
doc: {x: ["non-numeric", [1, 2, 3]]},
|
|
medianSpec: {$median: {input: "$x", method: "approximate"}},
|
|
expectedResult: null,
|
|
msg: "Median of completely non-numeric data in input which evaluates to an array",
|
|
});
|
|
|
|
/**
|
|
* Tests with input as an array of expressions.
|
|
*/
|
|
testWithProjectMedian({
|
|
coll: coll,
|
|
doc: {x: 0, x1: "non-numeric", x2: 1, x3: 2},
|
|
medianSpec: {$median: {input: ["$x", "$x1", "$x2", "$x3"], method: "approximate"}},
|
|
expectedResult: 1,
|
|
msg: "Non-numeric data should be ignored in input passed in as an array",
|
|
});
|
|
|
|
testWithProjectMedian({
|
|
coll: coll,
|
|
doc: {x: "non-numeric", x1: "hello"},
|
|
medianSpec: {$median: {input: ["$x", "$x1"], method: "approximate"}},
|
|
expectedResult: null,
|
|
msg: "Median of completely non-numeric data in input passed in as an array",
|
|
});
|
|
|
|
/**
|
|
* Tests with input as a scalar.
|
|
*/
|
|
testWithProjectMedian({
|
|
coll: coll,
|
|
doc: {x: 1, x1: "hello"},
|
|
medianSpec: {$median: {input: "$x1", method: "approximate"}},
|
|
expectedResult: null,
|
|
msg: "Median of completely non-numeric data with input as a scalar",
|
|
});
|