def test_offer_with_unknown_parameter(self):
        parameter = common.ExtensionParameter('perframe-deflate')
        parameter.add_parameter('foo', 'bar')
        processor = extensions.DeflateFrameExtensionProcessor(parameter)

        response = processor.get_extension_response()
        self.assertEqual('perframe-deflate', response.name())
        self.assertEqual(0, len(response.get_parameters()))
    def test_offer_with_no_context_takeover(self):
        parameter = common.ExtensionParameter('perframe-deflate')
        parameter.add_parameter('no_context_takeover', None)
        processor = extensions.DeflateFrameExtensionProcessor(parameter)

        response = processor.get_extension_response()
        self.assertEqual('perframe-deflate', response.name())
        self.assertEqual(0, len(response.get_parameters()))

        self.assertTrue(processor._rfc1979_deflater._no_context_takeover)
    def test_offer_with_max_window_bits(self):
        parameter = common.ExtensionParameter('perframe-deflate')
        parameter.add_parameter('max_window_bits', '10')
        processor = extensions.DeflateFrameExtensionProcessor(parameter)

        response = processor.get_extension_response()
        self.assertEqual('perframe-deflate', response.name())
        self.assertEqual(0, len(response.get_parameters()))

        self.assertEqual(10, processor._rfc1979_deflater._window_bits)
    def test_minimal_offer(self):
        processor = extensions.DeflateFrameExtensionProcessor(
            common.ExtensionParameter('perframe-deflate'))

        response = processor.get_extension_response()
        self.assertEqual('perframe-deflate', response.name())
        self.assertEqual(0, len(response.get_parameters()))

        self.assertEqual(zlib.MAX_WBITS,
                         processor._rfc1979_deflater._window_bits)
        self.assertFalse(processor._rfc1979_deflater._no_context_takeover)
    def test_offer_with_no_context_takeover_with_value(self):
        parameter = common.ExtensionParameter('perframe-deflate')
        parameter.add_parameter('no_context_takeover', 'foobar')
        processor = extensions.DeflateFrameExtensionProcessor(parameter)

        self.assertIsNone(processor.get_extension_response())
    def test_offer_with_max_window_bits_without_value(self):
        parameter = common.ExtensionParameter('perframe-deflate')
        parameter.add_parameter('max_window_bits', None)
        processor = extensions.DeflateFrameExtensionProcessor(parameter)

        self.assertIsNone(processor.get_extension_response())