def test_docnetdb_search_edge_parameters(tmp_path): """Test if the DocNetDB search_edge parameters are working.""" db = DocNetDB(tmp_path / "db.db") v1, v2, v3 = Vertex(), Vertex(), Vertex() for vertex in v1, v2, v3: db.insert(vertex) db.insert_edge(Edge(v1, v2, label="name", has_direction=False)) db.insert_edge(Edge(v2, v3, has_direction=True)) assert list(db.search_edge(v2, direction="all")) == [ Edge.from_anchor(anchor=v2, other=v1, label="name", direction="none"), Edge.from_anchor(anchor=v2, other=v3, label="", direction="out"), ] assert list(db.search_edge(v2, direction="none")) == [ Edge.from_anchor(anchor=v2, other=v1, label="name", direction="none") ] assert list(db.search_edge(v2, direction="in")) == [] assert list(db.search_edge(v2, direction="out")) == [ Edge.from_anchor(anchor=v2, other=v3, label="", direction="out") ] assert list(db.search_edge(v2, label="name")) == [ Edge.from_anchor(anchor=v2, other=v1, label="name", direction="none") ] assert list(db.search_edge(v2, label="")) == [ Edge.from_anchor(anchor=v2, other=v3, label="", direction="out") ] assert list(db.search_edge(v2, label="another_name")) == [] assert list(db.search_edge(v3, direction="in")) == [ Edge.from_anchor(anchor=v3, other=v2, label="", direction="in") ] assert list(db.search_edge(v3, direction="out")) == []
def test_docnetdb_search_edge(tmp_path): """Test if the DocNetDB search_edge returns the right edges.""" db = DocNetDB(tmp_path / "db.db") v1, v2, v3 = Vertex(), Vertex(), Vertex() for vertex in v1, v2, v3: db.insert(vertex) db.insert_edge(Edge(v1, v2, label="name", has_direction=False)) db.insert_edge(Edge(v2, v3, has_direction=True)) assert list(db.search_edge(v1)) == [ Edge.from_anchor(anchor=v1, other=v2, label="name", direction="none") ] assert list(db.search_edge(v2)) == [ Edge.from_anchor(anchor=v2, other=v1, label="name", direction="none"), Edge.from_anchor(anchor=v2, other=v3, label="", direction="out"), ] assert list(db.search_edge(v3)) == [ Edge.from_anchor(anchor=v3, other=v2, label="", direction="in") ]
def test_docnetdb_remove_edge(tmp_path): """Test if the DocNetDB remove_edge removes one corresponding edge. And only one. """ db = DocNetDB(tmp_path / "db.db") v1, v2, v3 = Vertex(), Vertex(), Vertex() for vertex in v1, v2, v3: db.insert(vertex) db.insert_edge(Edge(v1, v2, label="name", has_direction=False)) db.insert_edge(Edge(v1, v2, label="name", has_direction=False)) db.insert_edge(Edge(v2, v3, has_direction=True)) db.remove_edge(Edge(v1, v2, label="name", has_direction=False)) db.remove_edge(Edge(v2, v3, label="", has_direction=True)) assert list(db.search_edge(v2)) == [ Edge.from_anchor(anchor=v2, other=v1, label="name", direction="none") ] assert list(db.search_edge(v3)) == []
def test_docnetdb_load_edges(tmp_path): """Test if the DocNetDB load restores all the edges in the object.""" path = tmp_path / "db.db" db1 = DocNetDB(path) v1, v2, v3 = Vertex(), Vertex(), Vertex() db1.insert(v1) db1.insert(v2) db1.insert(v3) db1.insert_edge(Edge(v1, v2, "edge1", False)) db1.insert_edge(Edge(v3, v2, "edge2", True)) db1.save() db2 = DocNetDB(path) assert list(db2.search_edge(db2[2])) == [ Edge(db2[1], db2[2], "edge1", False), Edge(db2[3], db2[2], "edge2", True), ]
def test_docnetdb_load_no_duplication(tmp_path): """Test if calling DocNetDB load two times doesn't duplicate anything. Like the vertices or the edges. """ path = tmp_path / "db.db" db1 = DocNetDB(path) v1, v2 = Vertex(), Vertex() db1.insert(v1) db1.insert(v2) db1.insert_edge(Edge(v1, v2, "my_edge", True)) db1.save() # The file is loaded into the same database. db1.load() assert len(db1) == 2 assert len(list(db1.search_edge(db1[1]))) == 1