mirror of
https://github.com/jlu5/PyLink.git
synced 2024-12-31 23:22:36 +01:00
74 lines
2.8 KiB
Python
74 lines
2.8 KiB
Python
import sys
|
|
import os
|
|
sys.path.append(os.getcwd())
|
|
import unittest
|
|
import itertools
|
|
|
|
import utils
|
|
|
|
def dummyf():
|
|
pass
|
|
|
|
class TestUtils(unittest.TestCase):
|
|
def testTS6UIDGenerator(self):
|
|
uidgen = utils.TS6UIDGenerator('9PY')
|
|
self.assertEqual(uidgen.next_uid(), '9PYAAAAAA')
|
|
self.assertEqual(uidgen.next_uid(), '9PYAAAAAB')
|
|
|
|
def test_add_cmd(self):
|
|
# Without name specified, add_cmd adds a command with the same name
|
|
# as the function
|
|
utils.add_cmd(dummyf)
|
|
utils.add_cmd(dummyf, 'TEST')
|
|
# All command names should be automatically lowercased.
|
|
self.assertIn('dummyf', utils.bot_commands)
|
|
self.assertIn('test', utils.bot_commands)
|
|
self.assertNotIn('TEST', utils.bot_commands)
|
|
|
|
def test_add_hook(self):
|
|
utils.add_hook(dummyf, 'join')
|
|
self.assertIn('JOIN', utils.command_hooks)
|
|
# Command names stored in uppercase.
|
|
self.assertNotIn('join', utils.command_hooks)
|
|
self.assertIn(dummyf, utils.command_hooks['JOIN'])
|
|
|
|
def testIsNick(self):
|
|
self.assertFalse(utils.isNick('abcdefgh', nicklen=3))
|
|
self.assertTrue(utils.isNick('aBcdefgh', nicklen=30))
|
|
self.assertTrue(utils.isNick('abcdefgh1'))
|
|
self.assertTrue(utils.isNick('ABC-def'))
|
|
self.assertFalse(utils.isNick('-_-'))
|
|
self.assertFalse(utils.isNick(''))
|
|
self.assertFalse(utils.isNick(' i lost the game'))
|
|
self.assertFalse(utils.isNick(':aw4t*9e4t84a3t90$&*6'))
|
|
self.assertFalse(utils.isNick('9PYAAAAAB'))
|
|
self.assertTrue(utils.isNick('_9PYAAAAAB\\'))
|
|
|
|
def testIsChannel(self):
|
|
self.assertFalse(utils.isChannel(''))
|
|
self.assertFalse(utils.isChannel('lol'))
|
|
self.assertTrue(utils.isChannel('#channel'))
|
|
self.assertTrue(utils.isChannel('##ABCD'))
|
|
|
|
def testIsServerName(self):
|
|
self.assertFalse(utils.isServerName('s'))
|
|
self.assertFalse(utils.isServerName('s.'))
|
|
self.assertFalse(utils.isServerName('.s.s.s'))
|
|
self.assertTrue(utils.isServerName('Hello.world'))
|
|
self.assertFalse(utils.isServerName(''))
|
|
self.assertTrue(utils.isServerName('pylink.overdrive.pw'))
|
|
self.assertFalse(utils.isServerName(' i lost the game'))
|
|
|
|
def testJoinModes(self):
|
|
res = utils.joinModes({('l', '50'), ('n', None), ('t', None)})
|
|
# Sets are orderless, so the end mode could be scrambled in a number of ways.
|
|
# Basically, we're looking for a string that looks like '+ntl 50' or '+lnt 50'.
|
|
possible = ['+%s 50' % ''.join(x) for x in itertools.permutations('lnt', 3)]
|
|
self.assertIn(res, possible)
|
|
# Without any arguments, make sure there is no trailing space.
|
|
self.assertEqual(utils.joinModes({('t', None)}), '+t')
|
|
self.assertEqual(utils.joinModes(set()), '+')
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|