diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/netlib/test_encoding.py | 30 | 
1 files changed, 30 insertions, 0 deletions
diff --git a/test/netlib/test_encoding.py b/test/netlib/test_encoding.py index de10fc48..a5e81379 100644 --- a/test/netlib/test_encoding.py +++ b/test/netlib/test_encoding.py @@ -1,3 +1,4 @@ +import mock  from netlib import encoding, tutils @@ -37,3 +38,32 @@ def test_deflate():      )      with tutils.raises(ValueError):          encoding.decode(b"bogus", "deflate") + + +def test_cache(): +    decode_gzip = mock.MagicMock() +    decode_gzip.return_value = b"decoded" +    encode_gzip = mock.MagicMock() +    encode_gzip.return_value = b"encoded" + +    with mock.patch.dict(encoding.custom_decode, gzip=decode_gzip): +        with mock.patch.dict(encoding.custom_encode, gzip=encode_gzip): +            assert encoding.decode(b"encoded", "gzip") == b"decoded" +            assert decode_gzip.call_count == 1 + +            # should be cached +            assert encoding.decode(b"encoded", "gzip") == b"decoded" +            assert decode_gzip.call_count == 1 + +            # the other way around as well +            assert encoding.encode(b"decoded", "gzip") == b"encoded" +            assert encode_gzip.call_count == 0 + +            # different encoding +            decode_gzip.return_value = b"bar" +            assert encoding.encode(b"decoded", "deflate") != b"decoded" +            assert encode_gzip.call_count == 0 + +            # This is not in the cache anymore +            assert encoding.encode(b"decoded", "gzip") == b"encoded" +            assert encode_gzip.call_count == 1  | 
