def test_set_position_insert_before_first(self, m_pi): """Insert at first position if given number below 1.""" p1 = Index() p2 = Index() p3 = Index() p1.position = 1 p2.position = 2 p3.position = 3 m_pi.return_value = [p1, p2, p3] ptest = Index() ptest.position = None ptest.set_position(0) assert ptest.position == 1 assert p1.position == 2 assert p2.position == 3 assert p3.position == 4 m_pi.return_value = [p1, p2, p3, ptest] ptest2 = Index() ptest2.position = None ptest2.set_position(-1) assert ptest2.position == 1 assert ptest.position == 2 assert p1.position == 3 assert p2.position == 4 assert p3.position == 5
def test_set_position_insert_after_last(self, m_pi): """Insert after last position if given arbitrarily larger position.""" p1 = Index() p2 = Index() p3 = Index() p1.position = 1 p2.position = 2 p3.position = 3 m_pi.return_value = [p1, p2, p3] ptest = Index() ptest.position = None ptest.set_position(42) assert p1.position == 1 assert p2.position == 2 assert p3.position == 3 assert ptest.position == 4
def test_set_position_insert_first(self, m_pi): """Bump others up when inserting to start position.""" p1 = Index() p2 = Index() p3 = Index() p1.position = 1 p2.position = 2 p3.position = 3 m_pi.return_value = [p1, p2, p3] ptest = Index() ptest.position = None ptest.set_position(1) assert ptest.position == 1 assert p1.position == 2 assert p2.position == 3 assert p3.position == 4
def test_set_position_inserts(self, m_pi): """Setting a position btwn first and last should insert there.""" p1 = Index() p2 = Index() p3 = Index() p1.position = 1 p2.position = 2 p3.position = 3 m_pi.return_value = [p1, p2, p3] ptest = Index() ptest.position = None ptest.set_position(2) assert p1.position == 1 assert ptest.position == 2 assert p2.position == 3 assert p3.position == 4
def test_set_position_empty_rows(self, m_ap, m_pi): """Auto-position if no other positioned objects exist.""" m_pi.return_value = [] ptest = Index() ptest.set_position(42) assert m_ap.called