diff --git a/tests/test_issues_server.py b/tests/test_issues_server.py index 76f8d705a6c147749db7203926b7ea34d7e9eaf5..47b57daf50223f1f045a84e7351218b52b58df51 100644 --- a/tests/test_issues_server.py +++ b/tests/test_issues_server.py @@ -848,3 +848,34 @@ def test_141(): # switch back to admin user db.configure_connection() assert db.execute_query("FIND TestRT", unique=True).description == "Desc2" + + +def test_145(): + """Searching for large numbers results in wrong results if integer values + are used. + + https://gitlab.com/caosdb/caosdb-server/-/issues/145 + """ + db.Property("TestProp", datatype=db.TEXT).insert() + db.Property("TestPropInt", datatype=db.INTEGER).add_parent("TestProp").insert() + db.Property("TestPropDouble", datatype=db.DOUBLE).add_parent("TestProp").insert() + + db.RecordType("TestRT").insert() + rec1 = db.Record("TestRec1").add_parent("TestRT").add_property("TestPropInt", 1_000_000_000).insert() + assert rec1.get_property("TestPropInt").value == 1_000_000_000 + assert isinstance(rec1.get_property("TestPropInt").value, int) + rec2 = db.Record("TestRec2").add_parent("TestRT").add_property("TestPropDouble", 20_000_000_000).insert() + assert rec2.get_property("TestPropDouble").value == 20_000_000_000 + assert isinstance(rec2.get_property("TestPropDouble").value, float) + + assert db.execute_query("FIND TestRT WITH TestProp = 1000000000", unique=True).id == rec1.id + assert db.execute_query("FIND TestRT WITH TestProp = 1000000000.0", unique=True).id == rec1.id + + assert db.execute_query("FIND TestRT WITH TestProp > 1000000000", unique=True).id == rec2.id + assert db.execute_query("FIND TestRT WITH TestProp > 1000000000.0", unique=True).id == rec2.id + + assert db.execute_query("FIND TestRT WITH TestProp = 20000000000", unique=True).id == rec2.id + assert db.execute_query("FIND TestRT WITH TestProp = 20000000000.0", unique=True).id == rec2.id + + assert db.execute_query("FIND TestRT WITH TestProp < 20000000000", unique=True).id == rec1.id + assert db.execute_query("FIND TestRT WITH TestProp < 20000000000.0", unique=True).id == rec1.id