File: codec_test.py

package info (click to toggle)
kiwi 10.2.36-1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 7,664 kB
  • sloc: python: 69,179; sh: 4,228; xml: 3,383; ansic: 391; makefile: 353
file content (62 lines) | stat: -rw-r--r-- 1,902 bytes parent folder | download | duplicates (2)
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import logging
from unittest.mock import patch
from pytest import (
    raises, fixture
)

from kiwi.utils.codec import Codec

from kiwi.exceptions import KiwiDecodingError


class TestCodec:
    @fixture(autouse=True)
    def inject_fixtures(self, caplog):
        self._caplog = caplog

    def setup(self):
        self.literal = bytes(b'\xc3\xbc')

    def setup_method(self, cls):
        self.setup()

    @patch('kiwi.utils.codec.Codec._wrapped_decode')
    def test_decode_ascii_failure(self, mock_decode):
        msg = 'utf-8 compatible string'

        def mocked_decode(literal, encoding, error_handling_schema):
            if encoding:
                return msg
            else:
                raise KiwiDecodingError('ascii decoding failure')

        mock_decode.side_effect = mocked_decode
        with self._caplog.at_level(logging.WARNING):
            assert msg == Codec.decode(self.literal)

    def test_decode_None_literal(self):
        assert '' == Codec.decode(None)

    @patch('kiwi.utils.codec.Codec._wrapped_decode')
    def test_decode(self, mock_decode):
        msg = 'utf-8 compatible string'
        mock_decode.return_value = msg
        assert msg == Codec.decode(self.literal)

    @patch('kiwi.utils.codec.Codec._wrapped_decode')
    def test_decode_utf8_failure(self, mock_decode):
        def mocked_decode(literal, encoding, error_handling_schema):
            if encoding:
                raise KiwiDecodingError('utf-8 decoding failure')
            else:
                raise KiwiDecodingError('ascii decoding failure')

        mock_decode.side_effect = mocked_decode
        with raises(KiwiDecodingError):
            with self._caplog.at_level(logging.WARNING):
                Codec.decode(self.literal)

    def test_wrapped_decode(self):
        assert self.literal.decode() == Codec._wrapped_decode(
            self.literal, 'utf-8'
        )