File: test_codec.py

package info (click to toggle)
python-precis-i18n 1.1.1-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 1,836 kB
  • sloc: python: 1,825; sh: 28; makefile: 3
file content (43 lines) | stat: -rw-r--r-- 1,809 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import codecs
import unittest

import precis_i18n.codec


class TestCodec(unittest.TestCase):
    def test_encode(self):
        self.assertEqual("Juliet".encode("UsernameCasePreserved"), b"Juliet")
        self.assertEqual("Juliet".encode("UsernameCaseMapped"), b"juliet")
        self.assertEqual(
            " pass \u1FBF\u3000".encode("OpaqueString"), b" pass \xe1\xbe\xbf "
        )
        self.assertEqual(" Juliet ".encode("NicknameCaseMapped"), b"juliet")
        self.assertEqual("Juliet".encode("IdentifierClass"), b"Juliet")
        self.assertEqual("Juliet".encode("FreeFormClass"), b"Juliet")
        self.assertEqual("Juliet".encode("UsernameCaseMapped:ToLower"), b"juliet")
        self.assertEqual("Juliet".encode("UsernameCaseMapped_ToLower"), b"juliet")

    def test_decode(self):
        with self.assertRaises(NotImplementedError):
            b"Juliet".decode("UsernameCasePreserved")

    def test_encode_errors(self):
        # errors must be 'strict'; 'replace' and others are not supported.
        with self.assertRaises(ValueError):
            "Juliet".encode("opaquestring", errors="replace")
        # non-matching codec names shouldn't work.
        with self.assertRaises(LookupError) as cm:
            "Juliet".encode("opaquestring_nonexistant")
        # Exception must be LookupError (not KeyError or IndexError).
        self.assertIs(type(cm.exception), LookupError)

    def test_search_function(self):
        _search = precis_i18n.codec.search

        # Check search function result.
        codec_info = _search("usernamecasepreserved")
        self.assertIsInstance(codec_info, codecs.CodecInfo)

        # Search function must return None for non-existant codec.
        codec_info = _search("opaquestring_nonexistant")
        self.assertIs(codec_info, None)