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}
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}
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
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
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()
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
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
def test_cannot_walk_non_walkable_as_second_argument(self): with self.assertRaises(TypeError): list(walk(alice, object()))
def test_cannot_walk_non_walkable_as_first_argument(self): with self.assertRaises(TypeError): list(walk(object()))
def test_can_walk_node_relationship_and_node_in_reverse(self): result = list(walk(bob, alice_knows_bob, alice)) assert result == [bob, alice_knows_bob, alice]
def test_can_walk_node_relationship_and_node(self): result = list(walk(alice, alice_knows_bob, bob)) assert result == [alice, alice_knows_bob, bob]
def test_can_walk_node_twice(self): result = list(walk(alice, alice)) assert result == [alice]
def test_can_walk_nothing(self): result = list(walk()) assert result == []