Beispiel #1
0
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"
Beispiel #2
0
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"
Beispiel #3
0
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):"
Beispiel #4
0
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
Beispiel #5
0
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):"
Beispiel #6
0
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"
Beispiel #7
0
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):"