예제 #1
0
    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;
}