class Test_get_selected_text(ViewTest): def setUp(self): super().setUp() sublime.set_clipboard('') registers._REGISTER_DATA = {} self.view.settings().erase('vintage') self.view.settings().erase('vintageous_use_sys_clipboard') self.regs = State(self.view).registers self.regs.view = mock.Mock() def testExtractsSubstrings(self): self.regs.view.sel.return_value = [10, 20, 30] class vi_cmd_data: _synthetize_new_line_at_eof = False _yanks_linewise = False self.regs.get_selected_text(vi_cmd_data) self.assertEqual(self.regs.view.substr.call_count, 3) def testReturnsFragments(self): self.regs.view.sel.return_value = [10, 20, 30] self.regs.view.substr.side_effect = lambda x: x class vi_cmd_data: _synthetize_new_line_at_eof = False _yanks_linewise = False rv = self.regs.get_selected_text(vi_cmd_data) self.assertEqual(rv, [10, 20, 30]) def testCanSynthetizeNewLineAtEof(self): self.regs.view.substr.return_value = "AAA" self.regs.view.sel.return_value = [ sublime.Region(10, 10), sublime.Region(10, 10) ] self.regs.view.size.return_value = 0 class vi_cmd_data: _synthetize_new_line_at_eof = True _yanks_linewise = False rv = self.regs.get_selected_text(vi_cmd_data) self.assertEqual(rv, ["AAA", "AAA\n"]) def testDoesntSynthetizeNewLineAtEofIfNotNeeded(self): self.regs.view.substr.return_value = "AAA\n" self.regs.view.sel.return_value = [ sublime.Region(10, 10), sublime.Region(10, 10) ] self.regs.view.size.return_value = 0 class vi_cmd_data: _synthetize_new_line_at_eof = True _yanks_linewise = False rv = self.regs.get_selected_text(vi_cmd_data) self.assertEqual(rv, ["AAA\n", "AAA\n"]) def testDoesntSynthetizeNewLineAtEofIfNotAtEof(self): self.regs.view.substr.return_value = "AAA" self.regs.view.sel.return_value = [ sublime.Region(10, 10), sublime.Region(10, 10) ] self.regs.view.size.return_value = 100 class vi_cmd_data: _synthetize_new_line_at_eof = True _yanks_linewise = False rv = self.regs.get_selected_text(vi_cmd_data) self.assertEqual(rv, ["AAA", "AAA"]) def testCanYankLinewise(self): self.regs.view.substr.return_value = "AAA" self.regs.view.sel.return_value = [ sublime.Region(10, 10), sublime.Region(10, 10) ] class vi_cmd_data: _synthetize_new_line_at_eof = False _yanks_linewise = True rv = self.regs.get_selected_text(vi_cmd_data) self.assertEqual(rv, ["AAA\n", "AAA\n"]) def testDoesNotYankLinewiseIfNonEmptyStringFollowedByNewLine(self): self.regs.view.substr.return_value = "AAA\n" self.regs.view.sel.return_value = [ sublime.Region(10, 10), sublime.Region(10, 10) ] class vi_cmd_data: _synthetize_new_line_at_eof = False _yanks_linewise = True rv = self.regs.get_selected_text(vi_cmd_data) self.assertEqual(rv, ["AAA\n", "AAA\n"]) def testYankLinewiseIfEmptyStringFollowedByNewLine(self): self.regs.view.substr.return_value = "\n" self.regs.view.sel.return_value = [ sublime.Region(10, 10), sublime.Region(10, 10) ] class vi_cmd_data: _synthetize_new_line_at_eof = False _yanks_linewise = True rv = self.regs.get_selected_text(vi_cmd_data) self.assertEqual(rv, ["\n\n", "\n\n"]) def testYankLinewiseIfTwoTrailingNewLines(self): self.regs.view.substr.return_value = "\n\n" self.regs.view.sel.return_value = [ sublime.Region(10, 10), sublime.Region(10, 10) ] class vi_cmd_data: _synthetize_new_line_at_eof = False _yanks_linewise = True rv = self.regs.get_selected_text(vi_cmd_data) self.assertEqual(rv, ["\n\n\n", "\n\n\n"])
class Test_get_selected_text(ViewTest): def setUp(self): super().setUp() sublime.set_clipboard('') registers._REGISTER_DATA = {} self.view.settings().erase('vintage') self.view.settings().erase('vintageous_use_sys_clipboard') self.regs = State(self.view).registers self.regs.view = mock.Mock() def testExtractsSubstrings(self): self.regs.view.sel.return_value = [10, 20, 30] class vi_cmd_data: _synthetize_new_line_at_eof = False _yanks_linewise = False self.regs.get_selected_text(vi_cmd_data) self.assertEqual(self.regs.view.substr.call_count, 3) def testReturnsFragments(self): self.regs.view.sel.return_value = [10, 20, 30] self.regs.view.substr.side_effect = lambda x: x class vi_cmd_data: _synthetize_new_line_at_eof = False _yanks_linewise = False rv = self.regs.get_selected_text(vi_cmd_data) self.assertEqual(rv, [10, 20, 30]) def testCanSynthetizeNewLineAtEof(self): self.regs.view.substr.return_value = "AAA" self.regs.view.sel.return_value = [sublime.Region(10, 10), sublime.Region(10, 10)] self.regs.view.size.return_value = 0 class vi_cmd_data: _synthetize_new_line_at_eof = True _yanks_linewise = False rv = self.regs.get_selected_text(vi_cmd_data) self.assertEqual(rv, ["AAA", "AAA\n"]) def testDoesntSynthetizeNewLineAtEofIfNotNeeded(self): self.regs.view.substr.return_value = "AAA\n" self.regs.view.sel.return_value = [sublime.Region(10, 10), sublime.Region(10, 10)] self.regs.view.size.return_value = 0 class vi_cmd_data: _synthetize_new_line_at_eof = True _yanks_linewise = False rv = self.regs.get_selected_text(vi_cmd_data) self.assertEqual(rv, ["AAA\n", "AAA\n"]) def testDoesntSynthetizeNewLineAtEofIfNotAtEof(self): self.regs.view.substr.return_value = "AAA" self.regs.view.sel.return_value = [sublime.Region(10, 10), sublime.Region(10, 10)] self.regs.view.size.return_value = 100 class vi_cmd_data: _synthetize_new_line_at_eof = True _yanks_linewise = False rv = self.regs.get_selected_text(vi_cmd_data) self.assertEqual(rv, ["AAA", "AAA"]) def testCanYankLinewise(self): self.regs.view.substr.return_value = "AAA" self.regs.view.sel.return_value = [sublime.Region(10, 10), sublime.Region(10, 10)] class vi_cmd_data: _synthetize_new_line_at_eof = False _yanks_linewise = True rv = self.regs.get_selected_text(vi_cmd_data) self.assertEqual(rv, ["AAA\n", "AAA\n"]) def testDoesNotYankLinewiseIfNonEmptyStringFollowedByNewLine(self): self.regs.view.substr.return_value = "AAA\n" self.regs.view.sel.return_value = [sublime.Region(10, 10), sublime.Region(10, 10)] class vi_cmd_data: _synthetize_new_line_at_eof = False _yanks_linewise = True rv = self.regs.get_selected_text(vi_cmd_data) self.assertEqual(rv, ["AAA\n", "AAA\n"]) def testYankLinewiseIfEmptyStringFollowedByNewLine(self): self.regs.view.substr.return_value = "\n" self.regs.view.sel.return_value = [sublime.Region(10, 10), sublime.Region(10, 10)] class vi_cmd_data: _synthetize_new_line_at_eof = False _yanks_linewise = True rv = self.regs.get_selected_text(vi_cmd_data) self.assertEqual(rv, ["\n\n", "\n\n"]) def testYankLinewiseIfTwoTrailingNewLines(self): self.regs.view.substr.return_value = "\n\n" self.regs.view.sel.return_value = [sublime.Region(10, 10), sublime.Region(10, 10)] class vi_cmd_data: _synthetize_new_line_at_eof = False _yanks_linewise = True rv = self.regs.get_selected_text(vi_cmd_data) self.assertEqual(rv, ["\n\n\n", "\n\n\n"])