Description
Should match the special handling for NaN values that ComparisonMatchExpression::matchesSingleElement() does:
// Special case handling for NaN. NaN is equal to NaN but
|
// otherwise always compares to false.
|
if (std::isnan(e.numberDouble()) || std::isnan(_rhs.numberDouble())) {
|
bool bothNaN = std::isnan(e.numberDouble()) && std::isnan(_rhs.numberDouble());
|
switch ( matchType() ) {
|
case LT:
|
return false;
|
case LTE:
|
return bothNaN;
|
case EQ:
|
return bothNaN;
|
case GT:
|
return false;
|
case GTE:
|
return bothNaN;
|
default:
|
// This is a comparison match expression, so it must be either
|
// a $lt, $lte, $gt, $gte, or equality expression.
|
fassertFailed( 17448 );
|
}
|
}
|