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")}
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")}
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)
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)
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)
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)
def test_weighted_5(): data = bson.Decimal128("5.5") assert Weighted(data) == (2, _cmp_decimal(data))
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
def test_weighted__cmp_decimal_ne(): assert _cmp_decimal(bson.Decimal128("5.5")) != "NAN"
def test_weighted_26(): data = _cmp_decimal(bson.Decimal128("0.1")) assert Weighted(data) == (2, data)
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"]
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"]