Beispiel #1
0
    def test_size_of_thing_with_relationships(self):
        class Thing:
            def relationships(self):
                return [1, 2, 3]

        obj = Thing()
        assert size(obj) == 3
Beispiel #2
0
 def test_graph_union(self):
     graph_1 = (alice_knows_bob | alice_likes_carol | carol_dislikes_bob)
     graph_2 = (carol_dislikes_bob | carol_married_to_dave
                | dave_works_for_dave)
     graph = graph_1 | graph_2
     assert order(graph) == 4
     assert size(graph) == 5
     assert graph.nodes() == (alice | bob | carol | dave).nodes()
Beispiel #3
0
 def test_graph_intersection(self):
     graph_1 = (alice_knows_bob | alice_likes_carol | carol_dislikes_bob)
     graph_2 = (carol_dislikes_bob | carol_married_to_dave
                | dave_works_for_dave)
     graph = graph_1 & graph_2
     assert order(graph) == 2
     assert size(graph) == 1
     assert graph.nodes() == (bob | carol).nodes()
Beispiel #4
0
 def test_graph_difference(self):
     graph_1 = (alice_knows_bob | alice_likes_carol | carol_dislikes_bob)
     graph_2 = (carol_dislikes_bob | carol_married_to_dave
                | dave_works_for_dave)
     graph = graph_1 - graph_2
     assert order(graph) == 3
     assert size(graph) == 2
     assert graph.nodes() == (alice | bob | carol).nodes()
Beispiel #5
0
 def test_record_can_be_converted_to_subgraph(self):
     keys = ["a", "b", "ab", "msg"]
     values = [alice, bob, alice_knows_bob, "hello, world"]
     record = Record(keys, values)
     subgraph = record.subgraph()
     assert order(subgraph) == 2
     assert size(subgraph) == 1
     assert subgraph.nodes() == {alice, bob}
     assert subgraph.relationships() == {alice_knows_bob}
Beispiel #6
0
 def test_loop(self):
     assert dave_works_for_dave.start_node() == dave
     assert dave_works_for_dave.end_node() == dave
     assert list(
         walk(dave_works_for_dave)) == [dave, dave_works_for_dave, dave]
     assert order(dave_works_for_dave) == 1
     assert size(dave_works_for_dave) == 1
     assert set(dave_works_for_dave.nodes()) == {dave}
     assert set(
         dave_works_for_dave.relationships()) == {dave_works_for_dave}
Beispiel #7
0
 def test_relationship(self):
     assert alice_knows_bob.start_node() == alice
     assert alice_knows_bob.end_node() == bob
     assert list(walk(alice_knows_bob)) == [alice, alice_knows_bob, bob]
     assert alice_knows_bob.type() == "KNOWS"
     assert dict(alice_knows_bob) == {"since": 1999}
     assert alice_knows_bob["since"] == 1999
     assert order(alice_knows_bob) == 2
     assert size(alice_knows_bob) == 1
     assert set(alice_knows_bob.nodes()) == {alice, bob}
     assert set(alice_knows_bob.relationships()) == {alice_knows_bob}
Beispiel #8
0
 def test_construction_of_path_length_0(self):
     sequence = [alice]
     path = Path(*sequence)
     assert order(path) == 1
     assert size(path) == 0
     assert len(path) == 0
     assert set(path.nodes()) == {alice}
     assert set(path.relationships()) == set()
     assert path.start_node() == alice
     assert path.end_node() == alice
     assert len(path) == 0
     assert list(walk(path)) == sequence
Beispiel #9
0
 def test_construction_of_path_length_1(self):
     sequence = [alice, alice_knows_bob, bob]
     path = Path(*sequence)
     assert order(path) == 2
     assert size(path) == 1
     assert len(path) == 1
     assert set(path.nodes()) == {alice, bob}
     assert set(path.relationships()) == {alice_knows_bob}
     assert path.start_node() == alice
     assert path.end_node() == bob
     assert len(path) == 1
     assert list(walk(path)) == sequence
Beispiel #10
0
 def test_graph_symmetric_difference(self):
     graph_1 = (alice_knows_bob | alice_likes_carol | carol_dislikes_bob)
     graph_2 = (carol_dislikes_bob | carol_married_to_dave
                | dave_works_for_dave)
     graph = graph_1 ^ graph_2
     assert order(graph) == 4
     assert size(graph) == 4
     assert graph.nodes() == (alice | bob | carol | dave).nodes()
     assert graph.relationships() == frozenset(alice_knows_bob
                                               | alice_likes_carol
                                               | carol_married_to_dave
                                               | dave_works_for_dave)
Beispiel #11
0
 def test_node(self):
     assert alice.start_node() == alice
     assert alice.end_node() == alice
     assert alice.__bool__()
     assert alice.__nonzero__()
     assert len(alice) == 2
     assert list(walk(alice)) == [alice]
     assert set(alice.labels()) == {"Person", "Employee"}
     assert dict(alice) == {"name": "Alice", "age": 33}
     assert dict(alice)["name"] == "Alice"
     assert alice["name"] == "Alice"
     assert order(alice) == 1
     assert size(alice) == 0
     assert set(alice.nodes()) == {alice}
     assert set(alice.relationships()) == set()
Beispiel #12
0
 def test_construction_of_path_with_loop(self):
     sequence = [
         carol, carol_married_to_dave, dave, dave_works_for_dave, dave
     ]
     path = Path(*sequence)
     assert order(path) == 2
     assert size(path) == 2
     assert len(path) == 2
     assert set(path.nodes()) == {carol, dave}
     assert set(path.relationships()) == {
         carol_married_to_dave, dave_works_for_dave
     }
     assert path.start_node() == carol
     assert path.end_node() == dave
     assert len(path) == 2
     assert list(walk(path)) == sequence
Beispiel #13
0
 def test_construction_of_path_with_revisits(self):
     sequence = [
         alice, alice_knows_bob, bob, carol_dislikes_bob, carol,
         alice_likes_carol, alice, alice_knows_bob, bob
     ]
     path = Path(*sequence)
     assert order(path) == 3
     assert size(path) == 3
     assert len(path) == 4
     assert set(path.nodes()) == {alice, bob, carol}
     assert set(path.relationships()) == {
         alice_knows_bob, alice_likes_carol, carol_dislikes_bob
     }
     assert path.start_node() == alice
     assert path.end_node() == bob
     assert len(path) == 4
     assert list(walk(path)) == sequence
Beispiel #14
0
 def test_can_create_nodes_and_relationship(self):
     self.graph.delete_all()
     a = Node()
     b = Node()
     c = Node()
     ab = Relationship(a, "TO", b)
     bc = Relationship(b, "TO", c)
     ca = Relationship(c, "TO", a)
     self.graph.create(ab | bc | ca)
     assert remote(a)
     assert remote(b)
     assert remote(c)
     assert remote(ab)
     assert ab.start_node() == a
     assert ab.end_node() == b
     assert remote(bc)
     assert bc.start_node() == b
     assert bc.end_node() == c
     assert remote(ca)
     assert ca.start_node() == c
     assert ca.end_node() == a
     assert order(self.graph) == 3
     assert size(self.graph) == 3
Beispiel #15
0
 def test_size_of_non_graphy_thing(self):
     with self.assertRaises(TypeError):
         _ = size("this string is not graphy")
Beispiel #16
0
 def test_can_infer_nodes_through_relationships(self):
     subgraph = Subgraph([], [alice_knows_bob])
     assert order(subgraph) == 2
     assert size(subgraph) == 1
     assert subgraph.nodes() == {alice, bob}
     assert subgraph.relationships() == {alice_knows_bob}
Beispiel #17
0
 def test_size(self):
     assert size(self.walkable) == 2
Beispiel #18
0
 def test_size(self):
     assert size(alice) == 0
Beispiel #19
0
 def test_size(self):
     assert size(self.subgraph) == 5
Beispiel #20
0
 def test_size(self):
     assert size(self.path) == 2
Beispiel #21
0
 def test_size(self):
     assert size(self.loop) == 1
Beispiel #22
0
 def test_size(self):
     assert size(alice_knows_bob) == 1