def test_clean_positions_removes_self(self, m_pi):
     """Remove self from positioning if specified."""
     p1 = Index()
     p2 = Index()
     p3 = Index()
     p1.position = 1
     p2.position = 5
     p3.position = 9
     m_pi.return_value = [p1, p2, p3]
     p1.clean_positions(remove_self=True)
     assert p2.position == 1
     assert p3.position == 2
 def test_clean_positions_removes_gaps(self, m_pi):
     """Remove gaps in position when cleaning."""
     p1 = Index()
     p2 = Index()
     p3 = Index()
     p1.position = 1
     p2.position = 5
     p3.position = 9
     m_pi.return_value = [p1, p2, p3]
     p1.clean_positions()
     assert p1.position == 1
     assert p2.position == 2
     assert p3.position == 3
 def test_clean_positions_sets_nulls(self, m_pi):
     """Set positions for objects with no position set."""
     p1 = Index()
     p2 = Index()
     p3 = Index()
     p4 = Index()
     p1.position = 1
     p2.position = None
     p3.position = 2
     p4.position = None
     m_pi.return_value = [p1, p2, p3, p4]
     p1.clean_positions()
     assert p1.position == 1
     assert p3.position == 2
     assert p2.position == 3
     assert p4.position == 4