class CursorMovementTests(unittest.TestCase): def setUp(self): self.gapbuffer = GapBuffer() def test_cursor_position_with_new_buffer_is_zero(self): self.assertEqual(0, self.gapbuffer.get_cursor_position()) def test_cursor_cant_be_moved_forward_with_empty_buffer(self): self.assertFalse(self.gapbuffer.cursor_can_move_forward()) def test_cursor_cant_be_moved_backward_with_empty_buffer(self): self.assertFalse(self.gapbuffer.cursor_can_move_backward()) def test_cursor_cant_be_moved_forward_once_with_emtpy_buffer(self): self.assertRaises(CursorOutOfBoundsException, self.gapbuffer.move_cursor_forward) self.assertRaises(CursorOutOfBoundsException, self.gapbuffer.move_cursor_forward, 1) def test_cursor_cant_be_moved_forward_an_arbitrary_amount_with_empty_buffer( self): #3 and 5 are arbitrary constants here self.assertRaises(CursorOutOfBoundsException, self.gapbuffer.move_cursor_forward, 3) self.assertRaises(CursorOutOfBoundsException, self.gapbuffer.move_cursor_forward, 5) def test_cursor_cant_be_moved_backward_once_with_empty_buffer(self): self.assertRaises(CursorOutOfBoundsException, self.gapbuffer.move_cursor_backward) self.assertRaises(CursorOutOfBoundsException, self.gapbuffer.move_cursor_backward, 1) def test_cursor_cant_be_moved_backward_an_arbitrary_amount_with_empty_buffer( self): self.assertRaises(CursorOutOfBoundsException, self.gapbuffer.move_cursor_backward, 3) self.assertRaises(CursorOutOfBoundsException, self.gapbuffer.move_cursor_backward, 5) def test_cursor_can_be_moved_backwards_after_insert(self): self.gapbuffer.insert('a') self.assertTrue(self.gapbuffer.cursor_can_move_backward()) def test_moving_cursor_backwards_after_insert(self): self.gapbuffer.insert('a') self.assertEqual(1, self.gapbuffer.get_cursor_position()) self.gapbuffer.move_cursor_backward() self.assertEqual(0, self.gapbuffer.get_cursor_position()) def test_moving_cursor_backwards_more_than_one_position_after_insert(self): self.gapbuffer.insert("abc") self.assertEqual(3, self.gapbuffer.get_cursor_position()) self.gapbuffer.move_cursor_backward(2) self.assertEqual(1, self.gapbuffer.get_cursor_position()) self.gapbuffer.move_cursor_backward(1) self.assertEqual(0, self.gapbuffer.get_cursor_position()) def test_cursor_cant_be_moved_forward_after_only_inserts(self): self.gapbuffer = GapBuffer(4) self.gapbuffer.insert('a') self.assertFalse(self.gapbuffer.cursor_can_move_forward()) def test_cursor_cant_be_moved_forward_after_only_inserts_in_incorrectly_sized_buffer( self): self.gapbuffer = GapBuffer(2) self.gapbuffer.insert("abc") self.assertFalse(self.gapbuffer.cursor_can_move_forward()) def test_moving_cursor_forward_once_after_insert_and_moving_backward(self): self.gapbuffer.insert('a') self.gapbuffer.move_cursor_backward() self.gapbuffer.move_cursor_forward() self.assertEqual(1, self.gapbuffer.get_cursor_position()) def test_moving_cursor_forwards_more_than_one_position_after_inserts_and_moving_backwards( self): self.gapbuffer.insert("abc") self.gapbuffer.move_cursor_backward(3) self.gapbuffer.move_cursor_forward(2) self.assertEqual(2, self.gapbuffer.get_cursor_position())