def test_eq(): s1 = Skeleton("s1") s1.add_nodes(["1", "2", "3", "4", "5", "6"]) s1.add_edge("1", "2") s1.add_edge("3", "4") s1.add_edge("5", "6") s1.add_symmetry("3", "6") # Make a copy check that they are equal s2 = copy.deepcopy(s1) assert s1.matches(s2) # Add an edge, check that they are not equal s2 = copy.deepcopy(s1) s2.add_edge("5", "1") assert not s1.matches(s2) # Add a symmetry edge, not equal s2 = copy.deepcopy(s1) s2.add_symmetry("5", "1") assert not s1.matches(s2) # Delete a node s2 = copy.deepcopy(s1) s2.delete_node("5") assert not s1.matches(s2) # Delete and edge, not equal s2 = copy.deepcopy(s1) s2.delete_edge("1", "2") assert not s1.matches(s2)
def skeleton(): # Create a simple skeleton object skeleton = Skeleton("Fly") skeleton.add_node("head") skeleton.add_node("thorax") skeleton.add_node("abdomen") skeleton.add_node("left-wing") skeleton.add_node("right-wing") skeleton.add_edge(source="head", destination="thorax") skeleton.add_edge(source="thorax", destination="abdomen") skeleton.add_edge(source="thorax", destination="left-wing") skeleton.add_edge(source="thorax", destination="right-wing") skeleton.add_symmetry(node1="left-wing", node2="right-wing") return skeleton
def stickman(): # Make a skeleton with a space in its name to test things. stickman = Skeleton("Stick man") stickman.add_nodes( ["head", "neck", "body", "right-arm", "left-arm", "right-leg", "left-leg"] ) stickman.add_edge("neck", "head") stickman.add_edge("body", "neck") stickman.add_edge("body", "right-arm") stickman.add_edge("body", "left-arm") stickman.add_edge("body", "right-leg") stickman.add_edge("body", "left-leg") stickman.add_symmetry(node1="left-arm", node2="right-arm") stickman.add_symmetry(node1="left-leg", node2="right-leg") return stickman
def test_symmetry(): s1 = Skeleton("s1") s1.add_nodes(["1", "2", "3", "4", "5", "6"]) s1.add_edge("1", "2") s1.add_edge("3", "4") s1.add_edge("5", "6") s1.add_symmetry("1", "5") s1.add_symmetry("3", "6") assert s1.get_symmetry("1").name == "5" assert s1.get_symmetry("5").name == "1" assert s1.get_symmetry("3").name == "6" # Cannot add more than one symmetry to a node with pytest.raises(ValueError): s1.add_symmetry("1", "6") with pytest.raises(ValueError): s1.add_symmetry("6", "1") s1.delete_symmetry("1", "5") assert s1.get_symmetry("1") is None with pytest.raises(ValueError): s1.delete_symmetry("1", "5")
def test_symmetry(): s1 = Skeleton("s1") s1.add_nodes(["1", "2", "3", "4", "5", "6"]) s1.add_edge("1", "2") s1.add_edge("3", "4") s1.add_edge("5", "6") s1.add_symmetry("1", "5") s1.add_symmetry("3", "6") assert (s1.nodes[0], s1.nodes[4]) in s1.symmetries assert (s1.nodes[2], s1.nodes[5]) in s1.symmetries assert len(s1.symmetries) == 2 assert (0, 4) in s1.symmetric_inds assert (2, 5) in s1.symmetric_inds assert len(s1.symmetric_inds) == 2 assert s1.get_symmetry("1").name == "5" assert s1.get_symmetry("5").name == "1" assert s1.get_symmetry("3").name == "6" # Cannot add more than one symmetry to a node with pytest.raises(ValueError): s1.add_symmetry("1", "6") with pytest.raises(ValueError): s1.add_symmetry("6", "1") s1.delete_symmetry("1", "5") assert s1.get_symmetry("1") is None with pytest.raises(ValueError): s1.delete_symmetry("1", "5")