irctokens/test/stateful_encode.py

48 lines
1.6 KiB
Python

import unittest
import irctokens
class EncodeTestPush(unittest.TestCase):
def test(self):
e = irctokens.StatefulEncoder()
line = irctokens.tokenise("PRIVMSG #channel hello")
e.push(line)
self.assertEqual(e.pending(), b"PRIVMSG #channel hello\r\n")
class EncodeTestPop(unittest.TestCase):
def test_partial(self):
e = irctokens.StatefulEncoder()
line = irctokens.tokenise("PRIVMSG #channel hello")
e.push(line)
e.pop(len(b"PRIVMSG #channel hello"))
self.assertEqual(e.pending(), b"\r\n")
def test_returned(self):
e = irctokens.StatefulEncoder()
line = irctokens.tokenise("PRIVMSG #channel hello")
e.push(line)
e.push(line)
lines = e.pop(len(b"PRIVMSG #channel hello\r\nPRIVMSG"))
self.assertEqual(len(lines), 1)
self.assertEqual(lines[0], line)
def test_none_returned(self):
e = irctokens.StatefulEncoder()
line = irctokens.tokenise("PRIVMSG #channel hello")
e.push(line)
lines = e.pop(1)
self.assertEqual(len(lines), 0)
class EncodeTestClear(unittest.TestCase):
def test(self):
e = irctokens.StatefulEncoder()
e.push(irctokens.tokenise("PRIVMSG #channel hello"))
e.clear()
self.assertEqual(e.pending(), b"")
class EncodeTestEncoding(unittest.TestCase):
def test(self):
e = irctokens.StatefulEncoder(encoding="iso-8859-2")
e.push(irctokens.tokenise("PRIVMSG #channel :hello Č"))
self.assertEqual(e.pending(),
"PRIVMSG #channel :hello Č\r\n".encode("iso-8859-2"))