def test_multi_copy_paste(): context = bblime.DisplayContext(FakeWindow(100, 50), canonicalFakeFileSet()) # select 'file.py' context.receiveChars(bblime.KEY_CTRL_P, *"boo", "\n") # hit 'alt-shift-down' twice context.receiveChars(bblime.KEY_SHIFT_ALT_DOWN, bblime.KEY_SHIFT_ALT_DOWN) context.receiveChars(bblime.KEY_SHIFT_RIGHT, bblime.KEY_CTRL_C) context.receiveChars("KEY_END", bblime.KEY_CTRL_V) assert context.currentOpenFile().lines[0] == "A = 'B'A" assert context.currentOpenFile().lines[1] == "B = 'C'B" assert context.currentOpenFile().lines[2] == "C = 'D'C" # unselect context.receiveChars(bblime.KEY_ESC) # copy a whole line context.receiveChars(bblime.KEY_CTRL_C) # go to the middle of the line and paste context.receiveChars("KEY_PPAGE") context.receiveChars("KEY_RIGHT", bblime.KEY_CTRL_V) assert context.currentOpenFile().lines[0] == "C = 'D'C" assert context.currentOpenFile().lines[1] == "A = 'B'A"
def test_basic(): context = bblime.DisplayContext(FakeWindow(100, 50), canonicalFakeFileSet()) # select 'file.py' context.receiveChars(bblime.KEY_CTRL_P, *"file", "KEY_DOWN", "\n") assert context.currentOpenFile().fileName == "file.py" # KEY_SEND is shift-end context.receiveChars("KEY_DOWN", "KEY_SEND", "a") assert context.currentOpenFile().lines[1] == "a"
def test_newline_with_indent(): context = bblime.DisplayContext(FakeWindow(100, 50), canonicalFakeFileSet()) # select 'file.py' context.receiveChars(bblime.KEY_CTRL_P, *"file", "\n") # go to end of line 5 and hit enter context.receiveChars(bblime.KEY_CTRL_G, *"5\n", "KEY_END", "\n") # we should have inserted some spaces to meet the four tabs assert context.currentOpenFile().lines[5] == " " # now, if we hit backspace, go back to the start of the line context.receiveChars("KEY_BACKSPACE") assert context.currentOpenFile().lines[5] == "" # now, hit a space context.receiveChars(" ") assert context.currentOpenFile().lines[5] == " " context.receiveChars("KEY_BACKSPACE") assert context.currentOpenFile().lines[5] == "" # now, hit two spaces context.receiveChars(*" ") assert context.currentOpenFile().lines[5] == " " context.receiveChars("KEY_BACKSPACE") assert context.currentOpenFile().lines[5] == "" # now, hit five spaces context.receiveChars(*" ") assert context.currentOpenFile().lines[5] == " " context.receiveChars("KEY_BACKSPACE") assert context.currentOpenFile().lines[5] == " " context.receiveChars("KEY_BACKSPACE") assert context.currentOpenFile().lines[5] == "" context.receiveChars("\t") assert context.currentOpenFile().lines[5] == " " context.receiveChars("KEY_LEFT", "\t") assert context.currentOpenFile().lines[5] == " " # go to the beginning of 'def f(x)' context.receiveChars(bblime.KEY_CTRL_G, *"4\n") assert context.currentOpenFile().lines[3] == "def f(x):" # hit enter context.receiveChars("\n") assert context.currentOpenFile().lines[3] == "" assert context.currentOpenFile().lines[4] == "def f(x):"
def test_find(): context = bblime.DisplayContext(FakeWindow(100, 50), canonicalFakeFileSet()) # select 'file.py' context.receiveChars(bblime.KEY_CTRL_P, *"boo", "\n") context.receiveChars(bblime.KEY_CTRL_F, *" = ", bblime.KEY_CTRL_A) assert len(context.currentOpenFile().selections) == 3 context.receiveChars(bblime.KEY_ESC, 'KEY_PPAGE') assert len(context.currentOpenFile().selections) == 1 assert context.currentOpenFile().selections[0].line0 == 0 context.receiveChars(bblime.KEY_CTRL_F, bblime.KEY_CTRL_BACKSPACE, "'", "\n") assert len(context.currentOpenFile().selections) == 1 assert context.currentOpenFile().selections[0].line0 == 0 assert context.currentOpenFile().selections[0].col0 == 4 context.receiveChars(bblime.KEY_F3) assert context.currentOpenFile().selections[0].line0 == 0 assert context.currentOpenFile().selections[0].col0 == 6 context.receiveChars(bblime.KEY_F3) assert context.currentOpenFile().selections[0].line0 == 1 assert context.currentOpenFile().selections[0].col0 == 4 context.receiveChars(bblime.KEY_F3) assert context.currentOpenFile().selections[0].line0 == 1 assert context.currentOpenFile().selections[0].col0 == 6 context.receiveChars(bblime.KEY_F3, bblime.KEY_F3) assert context.currentOpenFile().selections[0].line0 == 2 context.receiveChars(bblime.KEY_F3, bblime.KEY_F3) assert context.currentOpenFile().selections[0].line0 == 0 assert context.currentOpenFile().selections[0].col0 == 6 context.receiveChars(bblime.KEY_SHIFT_F3) assert context.currentOpenFile().selections[0].line0 == 0 assert context.currentOpenFile().selections[0].col0 == 4 context.receiveChars(bblime.KEY_SHIFT_F3) assert context.currentOpenFile().selections[0].line0 == 2 assert context.currentOpenFile().selections[0].col0 == 6
def test_backspace(): context = bblime.DisplayContext(FakeWindow(100, 50), canonicalFakeFileSet()) # select 'file.py' context.receiveChars(bblime.KEY_CTRL_P, *"file", "\n") # go to line 4, "def f(x):" context.receiveChars(bblime.KEY_CTRL_G, *"4\n") assert context.currentOpenFile().lines[3] == "def f(x):" # control-right to end of 'def', then control shift right to select 'f' assert context.currentOpenFile().selections[0].col0 == 0 context.receiveChars(bblime.KEY_CTRL_RIGHT) assert context.currentOpenFile().selections[0].col0 == 3 assert context.currentOpenFile().selections[0].col1 == 3 context.receiveChars(bblime.KEY_CTRL_SHIFT_RIGHT) assert context.currentOpenFile().selections[0].col0 == 3 assert context.currentOpenFile().selections[0].col1 == 5 # delete the 'f' context.receiveChars('KEY_DC') assert context.currentOpenFile().lines[3] == "def(x):" assert context.currentOpenFile().selections[0].col0 == 3 assert context.currentOpenFile().selections[0].col1 == 3 # now hit backspace context.receiveChars('KEY_BACKSPACE') assert context.currentOpenFile().lines[3] == "de(x):" # now hit backspace context.receiveChars('KEY_BACKSPACE') context.receiveChars('KEY_BACKSPACE') assert context.currentOpenFile().lines[3] == "(x):" context.receiveChars('KEY_BACKSPACE') assert context.currentOpenFile().lines[2] == "(x):" context.receiveChars('KEY_BACKSPACE') assert context.currentOpenFile().lines[1] == "CONSTANT = 'hi'(x):"
def test_cut_multiline(): context = bblime.DisplayContext(FakeWindow(100, 50), canonicalFakeFileSet()) # select 'long.py' context.receiveChars(bblime.KEY_CTRL_P, *"long", "\n") # go to line 4 and select three lines context.receiveChars(bblime.KEY_CTRL_G, *"4\n", *[bblime.KEY_SHIFT_DOWN]*3) # now cut context.receiveChars(bblime.KEY_CTRL_X) assert context.currentOpenFile().lines[2] == "line 3" assert context.currentOpenFile().lines[3] == "line 7" assert context.clipboard == ["line 4\nline 5\nline 6\n"] # now paste context.receiveChars(bblime.KEY_CTRL_V) assert context.currentOpenFile().lines[2] == "line 3" assert context.currentOpenFile().lines[3] == "line 4" assert context.currentOpenFile().lines[4] == "line 5" assert context.currentOpenFile().lines[5] == "line 6" assert context.currentOpenFile().lines[6] == "line 7"
def test_backspace2(): context = bblime.DisplayContext(FakeWindow(100, 50), canonicalFakeFileSet()) # select 'file.py' context.receiveChars(bblime.KEY_CTRL_P, *"file", "\n") # go to line 4, "def f(x):" context.receiveChars(bblime.KEY_CTRL_G, *"4\n") assert context.currentOpenFile().lines[3] == "def f(x):" # control-shift-right and delete 'def' context.receiveChars(bblime.KEY_CTRL_SHIFT_RIGHT) assert context.currentOpenFile().selections[0].col0 == 0 assert context.currentOpenFile().selections[0].col1 == 3 # delete the 'def' context.receiveChars('KEY_DC') assert context.currentOpenFile().lines[3] == " f(x):" assert context.currentOpenFile().selections[0].col0 == 0 assert context.currentOpenFile().selections[0].col1 == 0 # now hit backspace context.receiveChars('KEY_BACKSPACE') assert context.currentOpenFile().lines[2] == " f(x):"