Beispiel #1
0
def test_update_mul_decimal128(monty_update, mongo_update):
    docs = [{"a": bson.Decimal128("1.5")}]
    spec = {"$mul": {"a": 2}}

    monty_c = monty_update(docs, spec)
    mongo_c = mongo_update(docs, spec)

    assert next(mongo_c) == next(monty_c)
    monty_c.rewind()
    assert next(monty_c) == {"a": bson.Decimal128("3.0")}
Beispiel #2
0
def test_update_inc_decimal128(monty_update, mongo_update):
    docs = [{"a": bson.Decimal128("1.5")}]
    spec = {"$inc": {"a": 1}}

    monty_c = monty_update(docs, spec)
    mongo_c = mongo_update(docs, spec)

    assert next(mongo_c) == next(monty_c)
    monty_c.rewind()
    assert next(monty_c) == {"a": bson.Decimal128("2.5")}
Beispiel #3
0
def test_qop_mod_7(monty_find, mongo_find):
    docs = [{"a": 8}]
    spec = {"a": {"$mod": [bson.Decimal128("4"), 0]}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert count_documents(mongo_c, spec) == 1
    assert count_documents(monty_c, spec) == count_documents(mongo_c, spec)
Beispiel #4
0
def test_qop_mod_10(monty_find, mongo_find):
    docs = [{"a": 9}]
    spec = {"a": {"$mod": [4, bson.Decimal128("1")]}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert count_documents(mongo_c, spec) == 1
    assert count_documents(monty_c, spec) == count_documents(mongo_c, spec)
Beispiel #5
0
def test_update_pullAll_6(monty_update, mongo_update):
    docs = [{"a": [1, 2, 2.0, 3]}]
    spec = {"$pullAll": {"a": [bson.Decimal128("2.0")]}}

    monty_c = monty_update(docs, spec)
    mongo_c = mongo_update(docs, spec)

    assert next(mongo_c) == next(monty_c)
    monty_c.rewind()
    assert next(monty_c) == {"a": [1, 3]}
def test_qop_ne_10(monty_find, mongo_find):
    docs = [
        {"a": 1},
        {"a": 1.0},
    ]
    spec = {"a": {"$ne": bson.Decimal128("1.0")}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert count_documents(mongo_c, spec) == 0
    assert count_documents(monty_c, spec) == count_documents(mongo_c, spec)
def test_qop_lte_20(monty_find, mongo_find):
    long_ = bson.Int64(10)
    int_ = 10
    float_ = 10.0
    decimal_ = bson.Decimal128("10.0")
    docs = [{"a": long_}, {"a": int_}, {"a": float_}, {"a": decimal_}]
    spec = {"a": {"$lte": 10.5}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert count_documents(mongo_c, spec) == 4
    assert count_documents(monty_c, spec) == count_documents(mongo_c, spec)
    for i in range(4):
        assert next(mongo_c) == next(monty_c)
Beispiel #8
0
def test_sort_5(monty_sort, mongo_sort):
    docs = [{
        "a": 0
    }, {
        "a": 1.1
    }, {
        "a": bson.Int64(2)
    }, {
        "a": bson.Decimal128("3.3")
    }]
    sort = [("a", -1)]

    monty_c = monty_sort(docs, sort)
    mongo_c = mongo_sort(docs, sort)

    for i in range(len(docs)):
        assert next(mongo_c)["_id"] == next(monty_c)["_id"]
def test_qop_lte_31(monty_find, mongo_find):
    docs = [
        {
            "a": bson.Decimal128("1.1")
        },
        {
            "a": bson.Decimal128("NaN")
        },
        {
            "a": bson.Decimal128("-NaN")
        },
        {
            "a": bson.Decimal128("sNaN")
        },
        {
            "a": bson.Decimal128("-sNaN")
        },
        {
            "a": bson.Decimal128("Infinity")
        },
        {
            "a": 0
        },
        {
            "a": -10.0
        },
        {
            "a": 10.0
        },
    ]
    spec = {"a": {"$lte": bson.Decimal128("Infinity")}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert count_documents(mongo_c, spec) == 5
    assert count_documents(monty_c, spec) == count_documents(mongo_c, spec)
    for i in range(5):
        assert next(mongo_c) == next(monty_c)
def test_qop_lt_21(monty_find, mongo_find):
    docs = [{
        "a": bson.Decimal128("1.1")
    }, {
        "a": bson.Decimal128("NaN")
    }, {
        "a": bson.Decimal128("-NaN")
    }, {
        "a": bson.Decimal128("sNaN")
    }, {
        "a": bson.Decimal128("-sNaN")
    }, {
        "a": bson.Decimal128("Infinity")
    }]
    spec = {"a": {"$lt": bson.Decimal128("Infinity")}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert count_documents(mongo_c, spec) == 1
    assert count_documents(monty_c, spec) == count_documents(mongo_c, spec)
    assert next(mongo_c) == next(monty_c)
def test_qop_gte_21(monty_find, mongo_find):
    docs = [{
        "a": bson.Decimal128("1.1")
    }, {
        "a": bson.Decimal128("NaN")
    }, {
        "a": bson.Decimal128("-NaN")
    }, {
        "a": bson.Decimal128("sNaN")
    }, {
        "a": bson.Decimal128("-sNaN")
    }, {
        "a": bson.Decimal128("Infinity")
    }]
    spec = {"a": {"$gte": bson.Decimal128("0")}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert count_documents(mongo_c, spec) == 2
    assert count_documents(monty_c, spec) == count_documents(mongo_c, spec)
    for i in range(2):
        assert next(mongo_c) == next(monty_c)
def test_qop_lt_30(monty_find, mongo_find):
    docs = [
        {
            "a": bson.Decimal128("1.1")
        },
        {
            "a": bson.Decimal128("NaN")
        },
        {
            "a": bson.Decimal128("-NaN")
        },
        {
            "a": bson.Decimal128("sNaN")
        },
        {
            "a": bson.Decimal128("-sNaN")
        },
        {
            "a": bson.Decimal128("Infinity")
        },
        {
            "a": 0
        },
        {
            "a": -10.0
        },
        {
            "a": 10.0
        },
    ]
    spec = {"a": {"$lt": bson.Decimal128("-NaN")}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert count_documents(mongo_c, spec) == 0
    assert count_documents(monty_c, spec) == count_documents(mongo_c, spec)
Beispiel #13
0
def test_weighted_5():
    data = bson.Decimal128("5.5")
    assert Weighted(data) == (2, _cmp_decimal(data))
Beispiel #14
0
def test_weighted__cmp_decimal_le_or_ge():
    if PY3:
        with pytest.raises(TypeError):
            _cmp_decimal(bson.Decimal128("5.5")) >= "NAN"
    else:
        assert (_cmp_decimal(bson.Decimal128("5.5")) >= "NAN") is False
Beispiel #15
0
def test_weighted__cmp_decimal_ne():
    assert _cmp_decimal(bson.Decimal128("5.5")) != "NAN"
Beispiel #16
0
def test_weighted_26():
    data = _cmp_decimal(bson.Decimal128("0.1"))
    assert Weighted(data) == (2, data)
Beispiel #17
0
def test_sort_19(monty_sort, mongo_sort):
    docs = [
        {
            "a": ["x", True]
        },
        {
            "a": None
        },
        {
            "a": []
        },
        {
            "a": [5, []]
        },
        {
            "a": {
                "s": 7
            }
        },
        {
            "a": {
                "s": [9]
            }
        },
        {
            "a": {
                "s": 10
            }
        },
        {
            "a": 6
        },
        {
            "a": 4
        },
        {
            "a": [5, None]
        },
        {
            "a": [5, [1]]
        },
        {
            "a": [bson.Decimal128("4.5"),
                  bson.Binary(b"0")]
        },
        {
            "a": [{
                "s": 5
            }, False]
        },
        {
            "a": [{
                "s": 9
            }]
        },
        {
            "a": [True, "y"]
        },
        {
            "a": bson.Binary(b"a")
        },
        {
            "a": b"bytes"
        },
        {
            "a": ["abc"]
        },
        {
            "a": "banana"
        },
        {
            "a": "appple"
        },
        {
            "a": [bson.Regex("^a", "ix")]
        },
        {
            "a": bson.Regex("^b")
        },
        {
            "a": bson.Code("x", {"m": 0})
        },
        {
            "a": bson.Code("y")
        },
        {
            "a": bson.Code("y", {})
        },
        {
            "a": bson.Code("y", {"m": 0})
        },
        {
            "a": bson.MinKey()
        },
        {
            "a": bson.MaxKey()
        },
        {
            "a": bson.Timestamp(0, 1)
        },
        {
            "a": bson.Timestamp(1, 1)
        },
        {
            "a": bson.ObjectId(b"000000000000")
        },
        {
            "a": bson.ObjectId(b"000000000001")
        },
        {
            "a": datetime(1900, 1, 1)
        },
        {
            "a": datetime(1900, 1, 2)
        },
    ]
    sort = [("_id", 1), ("a", 1)]

    monty_c = monty_sort(docs, sort)
    mongo_c = mongo_sort(docs, sort)

    for i in range(len(docs)):
        assert next(mongo_c)["_id"] == next(monty_c)["_id"]
Beispiel #18
0
def test_sort_18(monty_sort, mongo_sort):
    docs = [
        {
            "a": ["x", True]
        },
        {
            "a": None
        },
        {
            "a": []
        },
        {
            "a": [5, []]
        },
        {
            "a": {
                "s": 7
            }
        },
        {
            "a": {
                "s": [9]
            }
        },
        {
            "a": {
                "s": 10
            }
        },
        {
            "a": 6
        },
        {
            "a": 4
        },
        {
            "a": [5, None]
        },
        {
            "a": [5, [1]]
        },
        {
            "a": [bson.Decimal128("4.5"),
                  bson.Binary(b"0")]
        },
        {
            "a": [{
                "s": 5
            }, False]
        },
        {
            "a": [{
                "s": 9
            }]
        },
        {
            "a": [True, "y"]
        },
        {
            "a": []
        },
    ]
    sort = [("_id", 1), ("a", -1)]

    monty_c = monty_sort(docs, sort)
    mongo_c = mongo_sort(docs, sort)

    for i in range(len(docs)):
        assert next(mongo_c)["_id"] == next(monty_c)["_id"]