Source code for vimtk._demo.vimmock.tests

try:
    import unittest2 as unittest
except ImportError:
    import unittest

from unittest.mock import Mock
from vimtk._demo.vimmock.mocked import BufferMock
from vimtk._demo.vimmock.mocked import CurrentMock
from vimtk._demo.vimmock.mocked import LineMock
from vimtk._demo.vimmock.mocked import RangeMock
from vimtk._demo.vimmock.mocked import VimMock
from vimtk._demo.vimmock.mocked import WindowMock
import sys
from vimtk._demo import vimmock


[docs] class TestVimMock(unittest.TestCase):
[docs] def setUp(self): self.vim = VimMock()
[docs] def test_init(self): self.assertTrue(isinstance(self.vim.current, CurrentMock))
[docs] def test_setup_text(self): self.vim.current.buffer = Mock() self.vim.setup_text('foobar') self.vim.current.buffer.setup_text.assert_called_once_with('foobar')
[docs] def test_open_file(self): filepath = vimmock.mocked.__file__.replace('*.pyc', '*.py') self.vim.open_file(filepath) assert self.vim.current.buffer.name == filepath
[docs] def test_eval(self): assert self.vim.eval('&encoding') == 'utf-8' with self.assertRaises(NotImplementedError): self.vim.eval(':e ~')
[docs] class TestBufferMock(unittest.TestCase):
[docs] def setUp(self): self.buffer = BufferMock('foo\nbar\nbaz')
[docs] def test_getitem(self): self.assertEqual(self.buffer[0], 'foo') self.assertEqual(self.buffer[1], 'bar') self.assertEqual(self.buffer[2], 'baz') self.assertEqual(self.buffer[-1], 'baz') with self.assertRaises(TypeError): self.buffer['1']
[docs] def test_getitem_range(self): self.assertEqual(self.buffer[:1], ['foo']) self.assertEqual(self.buffer[1:5], ['bar', 'baz'])
[docs] def test_setitem(self): self.buffer[0] = 'new foo' self.assertEqual(self.buffer[0], 'new foo') self.assertEqual(self.buffer[1], 'bar') with self.assertRaises(TypeError): self.buffer['1'] = 'foo'
[docs] def test_setitem_range(self): self.buffer[:2] = ['aaa', 'bbb'] self.assertEqual(self.buffer[:2], ['aaa', 'bbb'])
[docs] def test_setup_text(self): self.buffer.setup_text('\n'.join(('foo', 'bar')))
[docs] def test_append(self): self.buffer.append(['spam']) assert self.buffer._text == 'foo\nbar\nbaz\nspam'
[docs] class TestCurrentMock(unittest.TestCase):
[docs] def setUp(self): self.current = CurrentMock()
[docs] def test_init(self): self.assertTrue(isinstance(self.current.buffer, BufferMock)) self.assertTrue(isinstance(self.current.line, LineMock)) self.assertTrue(isinstance(self.current.window, WindowMock)) self.assertTrue(isinstance(self.current.range, RangeMock))
[docs] class TestPatch(unittest.TestCase):
[docs] def test_patch_vim(self): sys.modules['vim'] = object() vimmock.patch_vim() self.assertIsInstance(sys.modules['vim'], VimMock)
if __name__ == '__main__': unittest.main()