mirror of
https://github.com/gryf/weechat-replacer.git
synced 2025-12-18 20:10:19 +01:00
Initial commit
This commit is contained in:
232
test_replacer.py
Normal file
232
test_replacer.py
Normal file
@@ -0,0 +1,232 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import sys
|
||||
import os
|
||||
import unittest
|
||||
import tempfile
|
||||
|
||||
|
||||
class Weechat(object):
|
||||
"""Mock weechat interface"""
|
||||
ACTION = '*'
|
||||
ERROR = '=!='
|
||||
NETWORK = '--'
|
||||
JOIN = '-->'
|
||||
QUIT = '<--'
|
||||
WEECHAT_RC_OK = 0
|
||||
WEECHAT_LIST_POS_SORT = 1
|
||||
|
||||
def __init__(self):
|
||||
self.wbuffer = ''
|
||||
self.completions = []
|
||||
self.position = 0
|
||||
self.line = ''
|
||||
|
||||
def register(self, *args, **kwargs):
|
||||
pass
|
||||
|
||||
def color(self, color):
|
||||
return color
|
||||
|
||||
def prnt(self, we_buff, msg):
|
||||
self.wbuffer = msg
|
||||
|
||||
def prefix(self, arg):
|
||||
_map = {'action': Weechat.ACTION,
|
||||
'error': Weechat.ERROR,
|
||||
'network': Weechat.NETWORK,
|
||||
'join': Weechat.JOIN,
|
||||
'quit': Weechat.QUIT}
|
||||
return _map[arg]
|
||||
|
||||
def hook_completion(self, *args, **kwargs):
|
||||
pass
|
||||
|
||||
def hook_command(self, *args, **kwargs):
|
||||
pass
|
||||
|
||||
def hook_completion_list_add(self, completion, item, index, sort):
|
||||
self.completions.append(item)
|
||||
|
||||
def buffer_get_integer(self, *args, **kwargs):
|
||||
return self.position
|
||||
|
||||
def buffer_get_string(self, *args, **kwargs):
|
||||
return self.line
|
||||
|
||||
def buffer_set(self, wbuffer, what, value):
|
||||
_map = {'input': self._set_line,
|
||||
'input_pos': self._set_position}
|
||||
_map[what](value)
|
||||
|
||||
def _set_line(self, val):
|
||||
self.line = val
|
||||
|
||||
def _set_position(self, val):
|
||||
self.position = val
|
||||
|
||||
|
||||
weechat = Weechat()
|
||||
sys.modules['weechat'] = weechat
|
||||
|
||||
|
||||
import replacer
|
||||
|
||||
|
||||
class TestReplacer(unittest.TestCase):
|
||||
def setUp(self):
|
||||
fd, fname = tempfile.mkstemp()
|
||||
os.close(fd)
|
||||
self._path = fname
|
||||
self.repl = replacer.Replacer(self._path)
|
||||
|
||||
def tearDown(self):
|
||||
self.repl = None
|
||||
try:
|
||||
os.unlink(self._path)
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
def test_init(self):
|
||||
self.assertDictEqual(self.repl.replacement_map, {})
|
||||
|
||||
def test_add(self):
|
||||
self.repl.add('foo', 'bar')
|
||||
self.assertDictEqual(self.repl.replacement_map, {'foo': 'bar'})
|
||||
|
||||
def test_delete(self):
|
||||
self.repl.add('foo', 'bar')
|
||||
self.assertFalse(self.repl.delete('baz'))
|
||||
self.assertTrue(self.repl.delete('foo'))
|
||||
self.assertDictEqual(self.repl.replacement_map, {})
|
||||
|
||||
class TestDummyTests(unittest.TestCase):
|
||||
"""
|
||||
This, somehow stupid test ensures, that process of reading default
|
||||
replacer config file works
|
||||
"""
|
||||
def tearDown(self):
|
||||
replacer.Replacer.self_object = None
|
||||
|
||||
def test_init(self):
|
||||
repl = replacer.Replacer()
|
||||
self.assertIsInstance(repl.replacement_map, dict)
|
||||
|
||||
def test_main(self):
|
||||
replacer.Replacer.self_object = replacer.Replacer()
|
||||
replacer.main()
|
||||
|
||||
def test_injector(self):
|
||||
|
||||
def fun(first, *args, **kwargs):
|
||||
return first
|
||||
|
||||
self.assertIsNone(replacer.Replacer.self_object)
|
||||
robj = replacer.inject_replacer_object(fun)()
|
||||
self.assertIsNotNone(replacer.Replacer.self_object)
|
||||
self.assertIsInstance(robj, replacer.Replacer)
|
||||
|
||||
|
||||
class TestFunctions(unittest.TestCase):
|
||||
def setUp(self):
|
||||
fd, fname = tempfile.mkstemp()
|
||||
os.close(fd)
|
||||
self._path = fname
|
||||
replacer.Replacer.self_object = replacer.Replacer(self._path)
|
||||
self.rc = replacer.Replacer
|
||||
|
||||
def tearDown(self):
|
||||
self.rc.self_object = None
|
||||
try:
|
||||
os.unlink(self._path)
|
||||
except OSError:
|
||||
pass
|
||||
weechat.completions = []
|
||||
|
||||
def test_echo(self):
|
||||
replacer.echo('a', None)
|
||||
self.assertEqual(weechat.wbuffer, 'a')
|
||||
|
||||
replacer.echo('a', None, 'action')
|
||||
self.assertEqual(weechat.wbuffer, '%sa' % Weechat.ACTION)
|
||||
replacer.echo('something', None, 'network')
|
||||
self.assertEqual(weechat.wbuffer, '%ssomething' % Weechat.NETWORK)
|
||||
|
||||
def test_replace_cmd(self):
|
||||
replacer.replace_cmd(None, None, None)
|
||||
self.assertIn(Weechat.ERROR, weechat.wbuffer)
|
||||
self.assertIn('No replacements defined', weechat.wbuffer)
|
||||
|
||||
self.rc.self_object.replacement_map = {'foo': 'bar'}
|
||||
|
||||
replacer.replace_cmd(None, None, None)
|
||||
self.assertEqual(weechat.wbuffer, 'foo chat_delimiters->reset bar')
|
||||
|
||||
args = 'foo bar bazz'
|
||||
replacer.replace_cmd(None, None, args)
|
||||
self.assertIn(Weechat.ERROR, weechat.wbuffer)
|
||||
self.assertIn('Error in command', weechat.wbuffer)
|
||||
|
||||
args = 'add baz bazz'
|
||||
replacer.replace_cmd(None, None, args)
|
||||
self.assertEqual(weechat.wbuffer,
|
||||
'--added: baz chat_delimiters->reset bazz')
|
||||
self.assertDictEqual(self.rc.self_object.replacement_map,
|
||||
{'foo': 'bar', 'baz': 'bazz'})
|
||||
|
||||
args = 'del baz'
|
||||
replacer.replace_cmd(None, None, args)
|
||||
self.assertEqual(weechat.wbuffer, '--Successfully removed key: baz')
|
||||
|
||||
args = 'del baz'
|
||||
replacer.replace_cmd(None, None, args)
|
||||
self.assertIn(Weechat.ERROR, weechat.wbuffer)
|
||||
self.assertIn('No such keyword', weechat.wbuffer)
|
||||
|
||||
def test_completion_cb(self):
|
||||
replacer.completion_cb(None, None, None, None)
|
||||
|
||||
self.rc.self_object.replacement_map = {'foo': 'bar'}
|
||||
|
||||
replacer.completion_cb(None, None, None, None)
|
||||
self.assertEqual(weechat.completions, ['foo'])
|
||||
|
||||
def test_replace_cb(self):
|
||||
replacer.replace_cb(None, None, None, None)
|
||||
self.assertEqual(weechat.position, 0)
|
||||
self.assertEqual(weechat.line, '')
|
||||
|
||||
self.rc.self_object.replacement_map = {'foo': 'Vestibulum ante'}
|
||||
|
||||
# quis foo cursus
|
||||
# ^
|
||||
weechat.line = 'quis foo cursus'
|
||||
weechat.position = 8
|
||||
replacer.replace_cb(None, None, None, None)
|
||||
self.assertEqual(weechat.line, 'quis Vestibulum ante cursus')
|
||||
|
||||
# quis cursus foo
|
||||
# ^
|
||||
weechat.line = 'quis cursus foo'
|
||||
weechat.position = 15
|
||||
replacer.replace_cb(None, None, None, None)
|
||||
self.assertEqual(weechat.line, 'quis cursus Vestibulum ante ')
|
||||
|
||||
# foo quis cursus
|
||||
# ^
|
||||
weechat.line = 'foo quis cursus'
|
||||
weechat.position = 3
|
||||
replacer.replace_cb(None, None, None, None)
|
||||
self.assertEqual(weechat.line, 'Vestibulum ante quis cursus')
|
||||
|
||||
# quis cursus
|
||||
# ^
|
||||
weechat.line = 'quis cursus'
|
||||
weechat.position = 5
|
||||
replacer.replace_cb(None, None, None, None)
|
||||
self.assertEqual(weechat.line, 'quis cursus')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user