77 lines
1.8 KiB
Python
77 lines
1.8 KiB
Python
|
import pytest
|
||
|
import sys
|
||
|
sys.path.append('src')
|
||
|
|
||
|
class ConfigShim(object):
|
||
|
def get(self, *args, **kwargs):
|
||
|
return ''
|
||
|
|
||
|
import config
|
||
|
config.config = ConfigShim()
|
||
|
import core
|
||
|
|
||
|
from windows import Input, HistoryInput, MessageInput, CommandInput
|
||
|
|
||
|
@pytest.fixture
|
||
|
def input():
|
||
|
input = Input()
|
||
|
input.rewrite_text = lambda: None
|
||
|
return input
|
||
|
|
||
|
class TestInput(object):
|
||
|
|
||
|
def test_do_command(self, input):
|
||
|
|
||
|
input.do_command('a')
|
||
|
assert input.text == 'a'
|
||
|
|
||
|
for char in 'coucou':
|
||
|
input.do_command(char)
|
||
|
assert input.text == 'acoucou'
|
||
|
|
||
|
def test_empty(self, input):
|
||
|
assert input.is_empty() == True
|
||
|
input.do_command('a')
|
||
|
assert input.is_empty() == False
|
||
|
|
||
|
def test_key_left(self, input):
|
||
|
for char in 'this is a line':
|
||
|
input.do_command(char)
|
||
|
for i in range(4):
|
||
|
input.key_left()
|
||
|
for char in 'long ':
|
||
|
input.do_command(char)
|
||
|
|
||
|
assert input.text == 'this is a long line'
|
||
|
|
||
|
def test_key_right(self, input):
|
||
|
for char in 'this is a line':
|
||
|
input.do_command(char)
|
||
|
for i in range(4):
|
||
|
input.key_left()
|
||
|
input.key_right()
|
||
|
|
||
|
for char in 'iii':
|
||
|
input.do_command(char)
|
||
|
|
||
|
assert input.text == 'this is a liiiine'
|
||
|
|
||
|
def test_key_home(self, input):
|
||
|
for char in 'this is a line of text':
|
||
|
input.do_command(char)
|
||
|
input.do_command('z')
|
||
|
input.key_home()
|
||
|
input.do_command('a')
|
||
|
|
||
|
assert input.text == 'athis is a line of textz'
|
||
|
|
||
|
def test_key_end(self, input):
|
||
|
for char in 'this is a line of text':
|
||
|
input.do_command(char)
|
||
|
input.key_home()
|
||
|
input.key_end()
|
||
|
input.do_command('z')
|
||
|
|
||
|
assert input.text == 'this is a line of textz'
|
||
|
|