| 172 | |
| 173 | def test_extensions(self): |
| 174 | class Rot13: |
| 175 | @staticmethod |
| 176 | def encode(frame): |
| 177 | assert frame.opcode == OP_TEXT |
| 178 | text = frame.data.decode() |
| 179 | data = codecs.encode(text, "rot13").encode() |
| 180 | return dataclasses.replace(frame, data=data) |
| 181 | |
| 182 | # This extensions is symmetrical. |
| 183 | @staticmethod |
| 184 | def decode(frame, *, max_size=None): |
| 185 | return Rot13.encode(frame) |
| 186 | |
| 187 | self.assertFrameData( |
| 188 | Frame(OP_TEXT, b"hello"), |
no outgoing calls
searching dependent graphs…