def expand(self, buffer: Buffer) -> bool: """expand the given abbr text. Return true if cursor position changed.""" if not abbrevs: return False document = buffer.document word = document.get_word_before_cursor(WORD=True) if word in abbrevs.keys(): partial = document.text[:document.cursor_position] startix, endix, quote = check_for_partial_string(partial) if startix is not None and endix is None: return False text = get_abbreviated(word, buffer) buffer.delete_before_cursor(count=len(word)) buffer.insert_text(text) self.last_expanded = _LastExpanded(word, text) if EDIT_SYMBOL in text: set_cursor_position(buffer, text) return True return False
class BufferTest(unittest.TestCase): def setUp(self): self.buffer = Buffer() def test_initial(self): self.assertEqual(self.buffer.text, '') self.assertEqual(self.buffer.cursor_position, 0) def test_insert_text(self): self.buffer.insert_text('some_text') self.assertEqual(self.buffer.text, 'some_text') self.assertEqual(self.buffer.cursor_position, len('some_text')) def test_cursor_movement(self): self.buffer.insert_text('some_text') self.buffer.cursor_left() self.buffer.cursor_left() self.buffer.cursor_left() self.buffer.cursor_right() self.buffer.insert_text('A') self.assertEqual(self.buffer.text, 'some_teAxt') self.assertEqual(self.buffer.cursor_position, len('some_teA')) def test_backspace(self): self.buffer.insert_text('some_text') self.buffer.cursor_left() self.buffer.cursor_left() self.buffer.delete_before_cursor() self.assertEqual(self.buffer.text, 'some_txt') self.assertEqual(self.buffer.cursor_position, len('some_t')) def test_cursor_up(self): # Cursor up to a line thats longer. self.buffer.insert_text('long line1\nline2') self.buffer.cursor_up() self.assertEqual(self.buffer.document.cursor_position, 5) # Going up when already at the top. self.buffer.cursor_up() self.assertEqual(self.buffer.document.cursor_position, 5) # Going up to a line that's shorter. self.buffer.reset() self.buffer.insert_text('line1\nlong line2') self.buffer.cursor_up() self.assertEqual(self.buffer.document.cursor_position, 5) def test_cursor_down(self): self.buffer.insert_text('line1\nline2') self.buffer.cursor_position = 3 # Normally going down self.buffer.cursor_down() self.assertEqual(self.buffer.document.cursor_position, len('line1\nlin')) # Going down to a line that's storter. self.buffer.reset() self.buffer.insert_text('long line1\na\nb') self.buffer.cursor_position = 3 self.buffer.cursor_down() self.assertEqual(self.buffer.document.cursor_position, len('long line1\na')) def test_join_next_line(self): self.buffer.insert_text('line1\nline2\nline3') self.buffer.cursor_up() self.buffer.join_next_line() self.assertEqual(self.buffer.text, 'line1\nline2 line3') # Test when there is no '\n' in the text self.buffer.reset() self.buffer.insert_text('line1') self.buffer.cursor_position = 0 self.buffer.join_next_line() self.assertEqual(self.buffer.text, 'line1') def test_newline(self): self.buffer.insert_text('hello world') self.buffer.newline() self.assertEqual(self.buffer.text, 'hello world\n') def test_swap_characters_before_cursor(self): self.buffer.insert_text('hello world') self.buffer.cursor_left() self.buffer.cursor_left() self.buffer.swap_characters_before_cursor() self.assertEqual(self.buffer.text, 'hello wrold')
class BufferTest(unittest.TestCase): def setUp(self): self.buffer = Buffer() def test_initial(self): self.assertEqual(self.buffer.text, '') self.assertEqual(self.buffer.cursor_position, 0) def test_insert_text(self): self.buffer.insert_text('some_text') self.assertEqual(self.buffer.text, 'some_text') self.assertEqual(self.buffer.cursor_position, len('some_text')) def test_cursor_movement(self): self.buffer.insert_text('some_text') self.buffer.cursor_left() self.buffer.cursor_left() self.buffer.cursor_left() self.buffer.cursor_right() self.buffer.insert_text('A') self.assertEqual(self.buffer.text, 'some_teAxt') self.assertEqual(self.buffer.cursor_position, len('some_teA')) def test_backspace(self): self.buffer.insert_text('some_text') self.buffer.cursor_left() self.buffer.cursor_left() self.buffer.delete_before_cursor() self.assertEqual(self.buffer.text, 'some_txt') self.assertEqual(self.buffer.cursor_position, len('some_t')) def test_cursor_up(self): # Cursor up to a line thats longer. self.buffer.insert_text('long line1\nline2') self.buffer.cursor_up() self.assertEqual(self.buffer.document.cursor_position, 5) # Going up when already at the top. self.buffer.cursor_up() self.assertEqual(self.buffer.document.cursor_position, 5) # Going up to a line that's shorter. self.buffer.reset() self.buffer.insert_text('line1\nlong line2') self.buffer.cursor_up() self.assertEqual(self.buffer.document.cursor_position, 5) def test_cursor_down(self): self.buffer.insert_text('line1\nline2') self.buffer.cursor_position = 3 # Normally going down self.buffer.cursor_down() self.assertEqual(self.buffer.document.cursor_position, len('line1\nlin')) # Going down to a line that's storter. self.buffer.reset() self.buffer.insert_text('long line1\na\nb') self.buffer.cursor_position = 3 self.buffer.cursor_down() self.assertEqual(self.buffer.document.cursor_position, len('long line1\na')) def test_join_next_line(self): self.buffer.insert_text('line1\nline2\nline3') self.buffer.cursor_up() self.buffer.join_next_line() self.assertEqual(self.buffer.text, 'line1\nline2line3') # Test when there is no '\n' in the text self.buffer.reset() self.buffer.insert_text('line1') self.buffer.cursor_position = 0 self.buffer.join_next_line() self.assertEqual(self.buffer.text, 'line1') def test_newline(self): self.buffer.insert_text('hello world') self.buffer.newline() self.assertEqual(self.buffer.text, 'hello world\n') def test_swap_characters_before_cursor(self): self.buffer.insert_text('hello world') self.buffer.cursor_left() self.buffer.cursor_left() self.buffer.swap_characters_before_cursor() self.assertEqual(self.buffer.text, 'hello wrold')