Пример #1
0
def test_repeat_action_rule(engine, typed_keys):
    class Rule1(MappingRule):
        mapping = {'foo': Key('a')}

    element = RuleRef(RepeatActionRule(RuleRef(Rule1())))
    tester = ElementTester(element, engine)
    assert_same_typed_keys(typed_keys, tester.recognize('foo'), Key('a'))
    assert_same_typed_keys(typed_keys, tester.recognize('foo two times'),
                           Key('a,a'))
    assert tester.recognize('blah') is RecognitionFailure
Пример #2
0
def test_repeat_then_transition_rule(rule_test_grammar, typed_keys):
    class RepeatRule(MappingRule):
        mapping = {'foo': Key('f')}

    class TransitionRule(MappingRule):
        mapping = {'bar': Key('b')}

    vim_mode_switcher = VimGrammarSwitcher()
    non_transitions = [RepeatRule(exported=False)]
    transitions = [TransitionRule(exported=False)]
    rule = RepeatThenTransitionRule(vim_mode_switcher, non_transitions,
                                    transitions)

    rule_test_grammar.add_rule(rule)

    extras = rule_test_grammar.recognize_extras('foo foo')
    assert_same_typed_keys(typed_keys, extras['repeat_command'], Key('f,f'))
    assert 'transition_command' not in extras

    extras = rule_test_grammar.recognize_extras('bar')
    assert 'repeat_command' not in extras
    assert_same_typed_keys(typed_keys, extras['transition_command'], Key('b'))

    extras = rule_test_grammar.recognize_extras('foo foo bar')
    assert_same_typed_keys(typed_keys, extras['repeat_command'], Key('f,f'))
    assert_same_typed_keys(typed_keys, extras['transition_command'], Key('b'))

    with pytest.raises(Exception):
        rule_test_grammar.recognize_extras('')
Пример #3
0
def test_ex_mode_rule(ex_mode_rule_tester, typed_keys):
    extras = ex_mode_rule_tester.recognize_extras(
        'substitute alpha slash bravo slash slap down up')
    actual = extras['repeat_command'] + extras['transition_command']
    expected = Text('s/a/b/\n1j1k')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #4
0
def test_global_open_menu(pycharm_global_rule_tester, typed_keys):
    actual = pycharm_global_rule_tester.recognize('menu alpha')
    expected = Key('a-a')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #5
0
def test_global_reformat(pycharm_global_rule_tester, typed_keys):
    actual = pycharm_global_rule_tester.recognize('reformat')
    expected = Key('ca-l')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #6
0
def test_ex_mode_commands_substitute(ex_mode_commands_tester, typed_keys):
    actual = ex_mode_commands_tester.recognize('substitute')
    expected = Key('s,slash')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #7
0
def test_insert_mode_commands_skip(insert_mode_commands_tester, typed_keys):
    actual = insert_mode_commands_tester.recognize('skip')
    expected = Key('end')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #8
0
def test_visual_mode_keystroke_other(visual_mode_keystroke_tester, typed_keys):
    actual = visual_mode_keystroke_tester.recognize('other')
    expected = Key('o')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #9
0
def test_normal_mode_to_visual_mode_visual_line(
        normal_mode_to_visual_mode_tester, typed_keys):
    actual = normal_mode_to_visual_mode_tester.recognize('visual line')
    expected = Key('V')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #10
0
def test_normal_mode_no_count_motion(normal_mode_keystroke_tester, typed_keys):
    actual = normal_mode_keystroke_tester.recognize('hat')
    expected = Key('caret')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #11
0
def test_normal_mode_optional_count_motion_with_count(
        normal_mode_keystroke_tester, typed_keys):
    actual = normal_mode_keystroke_tester.recognize('ten down')
    expected = Key('1,0,j')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #12
0
def test_go_to_line(typed_keys):
    actual = go_line('n').bind({'n': 100})
    expected = Text(':100\n')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #13
0
def test_jump_to_mark(typed_keys):
    actual = jump_mark('a')
    expected = Key('backtick,a')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #14
0
def test_mark(typed_keys):
    actual = mark('a')
    expected = Key('m,a')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #15
0
def test_normal_mode_lower_case_find_motion_with_count(
        normal_mode_keystroke_tester, typed_keys):
    actual = normal_mode_keystroke_tester.recognize(
        'two lower case find alpha')
    expected = Key('2,g,u,f,a')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #16
0
def test_normal_mode_mandatory_count_motion(normal_mode_keystroke_tester,
                                            typed_keys):
    actual = normal_mode_keystroke_tester.recognize('fifty column')
    expected = Key('5,0,bar')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #17
0
def test_normal_mode_to_insert_mode_insert(normal_mode_to_insert_mode_tester,
                                           typed_keys):
    actual = normal_mode_to_insert_mode_tester.recognize('insert')
    expected = Key('i')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #18
0
def test_normal_mode_find_motion_with_count(normal_mode_keystroke_tester,
                                            typed_keys):
    actual = normal_mode_keystroke_tester.recognize('ten find alpha')
    expected = Key('1,0,f,a')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #19
0
def test_visual_mode_to_normal_mode_yank(visual_mode_to_normal_mode_tester,
                                         typed_keys):
    actual = visual_mode_to_normal_mode_tester.recognize('yank')
    expected = Key('dquote,dquote,y')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #20
0
def test_normal_mode_lower_case_optional_count_motion_with_count(
        normal_mode_keystroke_tester, typed_keys):
    actual = normal_mode_keystroke_tester.recognize('two lower case whiskey')
    expected = Key('2,g,u,w')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #21
0
def test_visual_mode_to_ex_mode_substitute(visual_mode_to_ex_mode_tester,
                                           typed_keys):
    actual = visual_mode_to_ex_mode_tester.recognize('substitute')
    expected = Key('colon,s,slash')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #22
0
def test_normal_mode_rule(normal_mode_rule_tester, typed_keys):
    extras = normal_mode_rule_tester.recognize_extras(
        'up up down change word down up')
    actual = extras['repeat_command'] + extras['transition_command']
    expected = Key('1,k,1,k,1,j,1,c,w,down,up')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #23
0
def test_ex_mode_to_normal_mode_kay(ex_mode_to_normal_mode_tester, typed_keys):
    actual = ex_mode_to_normal_mode_tester.recognize('kay')
    expected = Key('escape')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #24
0
def test_normal_mode_lower_case_no_count_motion(normal_mode_keystroke_tester,
                                                typed_keys):
    actual = normal_mode_keystroke_tester.recognize('lower case match')
    expected = Key('g,u,percent')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #25
0
def test_visual_mode_rule_motion_then_yank(visual_mode_rule_tester,
                                           typed_keys):
    extras = visual_mode_rule_tester.recognize_extras('inner lip yank down up')
    actual = extras['repeat_command'] + extras['transition_command']
    expected = Key('i,rparen,dquote,dquote,y,1,j,1,k')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #26
0
def test_normal_mode_lower_case_text_object_selection_with_count(
        normal_mode_keystroke_tester, typed_keys):
    actual = normal_mode_keystroke_tester.recognize(
        'two lower case inner quote')
    expected = Key('2,g,u,i,squote')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #27
0
def test_global_menu_select_two(pycharm_global_rule_tester, typed_keys):
    actual = pycharm_global_rule_tester.recognize('cell two')
    expected = Key('down,enter')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #28
0
def test_normal_mode_lower_case_mandatory_count_motion(
        normal_mode_keystroke_tester, typed_keys):
    actual = normal_mode_keystroke_tester.recognize('two lower case column')
    expected = Key('2,g,u,bar')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #29
0
def test_pycharm_action(typed_keys):
    actual = pycharm_action('reformat')
    expected = Key('cs-a,r,e,f,o,r,m,a,t,enter')
    assert_same_typed_keys(typed_keys, actual, expected)
Пример #30
0
def test_insert_mode_rule(insert_mode_rule_tester, typed_keys):
    extras = insert_mode_rule_tester.recognize_extras('skip kay down up')
    actual = extras['repeat_command'] + extras['transition_command']
    expected = Key('end,escape,1,j,1,k')
    assert_same_typed_keys(typed_keys, actual, expected)