TEST(ExpressionAlgoIsSubsetOf, DifferentNumberTypes) { ParsedMatchExpression numberDouble("{x: 5.0}"); ParsedMatchExpression numberInt("{x: NumberInt(5)}"); ParsedMatchExpression numberLong("{x: NumberLong(5)}"); ASSERT_TRUE(expression::isSubsetOf(numberDouble.get(), numberInt.get())); ASSERT_TRUE(expression::isSubsetOf(numberDouble.get(), numberLong.get())); ASSERT_TRUE(expression::isSubsetOf(numberInt.get(), numberDouble.get())); ASSERT_TRUE(expression::isSubsetOf(numberInt.get(), numberLong.get())); ASSERT_TRUE(expression::isSubsetOf(numberLong.get(), numberDouble.get())); ASSERT_TRUE(expression::isSubsetOf(numberLong.get(), numberInt.get())); }
bool BSONElement::coerce<double>(double* out) const { if (!isNumber()) return false; *out = numberDouble(); return true; }