예제 #1
0
    def __init__(self, *args, **kwargs):
        BaseDecoder.__init__(self, *args, **kwargs)

        self.handler_map = {
            PACKET_LOGIN: LoginPacket,
            PACKET_LOGOUT: LogoutPacket,
            PACKET_REQUEST: RequestPacket,
            PACKET_POST: PostPacket,
            PACKET_SUBSCRIBE: SubscribePacket,
            PACKET_UNSUBSCRIBE: UnsubscribePacket,
            PACKET_PONG: PongPacket,
            PACKET_QUIT: QuitPacket,
        }
예제 #2
0
    def __init__(self, *args, **kwargs):
        BaseDecoder.__init__(self, *args, **kwargs)

        self.handler_map = {
            b'PING': PingPacket,
            b'LOGIN': LoginPacket,
            b'LOGOUT': LogoutPacket,
            b'POST': PostPacket,
            b'REQUEST': RequestPacket,
            b'SUBSCRIBE': SubscribePacket,
            b'UNSUBSCRIBE': UnsubscribePacket,
            b'QUIT': QuitPacket,
            b'HELP': HelpPacket,
        }
예제 #3
0
    def test_get_until(self):

        e = BaseDecoder()

        e.add_chunk(b'abcdefg')
        e.add_chunk(b'hijklmn')

        self.assertEqual(e.get_until(b'de', 1024), b'abcde')

        self.assertEqual(e.get_until(b'gh', 1024), b'abcdefgh')

        self.assertEqual(e.get_until(b'gh', 1024, 3), b'defgh')

        with self.assertRaises(IndexError):
            e.get_until(b'de', 5)

        self.assertEqual(e.get_until(b'mno', 1024), None)
예제 #4
0
    def test_add_chunk_single(self):

        e = BaseDecoder()

        e.add_chunk(b'123456789')

        self.assertEqual(e.get(4), b'1234')

        self.assertEqual(e.get(4, 4), b'5678')

        self.assertEqual(e.get(9), b'123456789')
예제 #5
0
    def test_add_multiple(self):

        e = BaseDecoder()

        e.add_chunk(b'abcdefg')
        e.add_chunk(b'hijklmn')

        self.assertEqual(e.get(5), b'abcde')

        self.assertEqual(e.get(5, 5), b'fghij')

        self.assertEqual(e.get(4, 10), b'klmn')
예제 #6
0
    def test_get_to_much(self):

        e = BaseDecoder()

        e.add_chunk(b'123456789')

        self.assertEqual(e.get(10), None)

        self.assertEqual(e.get(5, 5), None)
예제 #7
0
    def test_read_from_socket(self):

        e = BaseDecoder()
        s = DummySocket()

        s.prepare(b'abcdefghijklmn')

        n = e.read_from_socket(s, 5)

        self.assertEqual(n, 5)

        self.assertEqual(e.get(5), b'abcde')

        e.commit()

        n = e.read_from_socket(s)

        self.assertEqual(n, 9)

        self.assertEqual(e.get(9), b'fghijklmn')
예제 #8
0
    def test_autocommit_get(self):

        e = BaseDecoder()

        e.add_chunk(b'abcdefg')
        e.add_chunk(b'hijklmn')

        self.assertEqual(e.get(4), b'abcd')

        e.commit()

        self.assertEqual(e.get(4), b'efgh')

        e.commit(2)

        self.assertEqual(e.get(2), b'gh')

        e.commit()

        self.assertEqual(e.get(4), b'ijkl')
예제 #9
0
    def test_commit(self):

        e = BaseDecoder()

        e.add_chunk(b'abcdefg')
        e.add_chunk(b'hijklmn')

        self.assertEqual(e.get(5), b'abcde')

        e.commit(5)

        self.assertEqual(e.get(5), b'fghij')

        e.commit(5)

        self.assertEqual(e.get(4), b'klmn')

        e.commit(4)

        self.assertEqual(e.get(1), None)