コード例 #1
0
    def test_exception(self):
        stream = parsers.StreamBuffer()
        self.assertIsNone(stream.exception())

        exc = ValueError()
        stream.set_exception(exc)
        self.assertIs(stream.exception(), exc)
コード例 #2
0
    def test_set_parser_exception(self):
        stream = parsers.StreamBuffer()

        exc = ValueError()
        stream.set_exception(exc)
        s = stream.set_parser(parsers.lines_parser())
        self.assertIs(s.exception(), exc)
コード例 #3
0
    def test_set_parser_unset_prev(self):
        stream = parsers.StreamBuffer()
        stream.set_parser(parsers.lines_parser())

        unset = stream.unset_parser = unittest.mock.Mock()
        stream.set_parser(parsers.lines_parser())

        self.assertTrue(unset.called)
コード例 #4
0
    def test_exception_waiter(self):
        stream = parsers.StreamBuffer()

        stream._parser = parsers.lines_parser()
        buf = stream._parser_buffer = parsers.DataBuffer(loop=self.loop)

        exc = ValueError()
        stream.set_exception(exc)
        self.assertIs(buf.exception(), exc)
コード例 #5
0
    def test_set_parser_feed_existing_exc(self):

        def p():
            yield  # stream
            raise ValueError()

        stream = parsers.StreamBuffer()
        stream.feed_data(b'line1')
        s = stream.set_parser(p())
        self.assertIsInstance(s.exception(), ValueError)
コード例 #6
0
    def test_set_parser_feed_existing_eof(self):
        stream = parsers.StreamBuffer()
        stream.feed_data(b'line1')
        stream.feed_data(b'\r\nline2\r\ndata')
        stream.feed_eof()
        s = stream.set_parser(parsers.lines_parser())

        self.assertEqual([bytearray(b'line1\r\n'), bytearray(b'line2\r\n')],
                         list(s._buffer))
        self.assertEqual(b'data', bytes(stream._buffer))
        self.assertIsNone(stream._parser)
コード例 #7
0
    def test_feed_parser2(self):
        stream = parsers.StreamBuffer()
        s = stream.set_parser(parsers.lines_parser())

        stream.feed_data(b'line1\r\nline2\r\n')
        stream.feed_eof()
        self.assertEqual(
            [bytearray(b'line1\r\n'), bytearray(b'line2\r\n')],
            list(s._buffer))
        self.assertEqual(b'', bytes(stream._buffer))
        self.assertTrue(s._eof)
コード例 #8
0
    def test_feed_parser_stop(self):
        def p():
            yield  # stream
            yield  # chunk

        stream = parsers.StreamBuffer()
        stream.set_parser(p())

        stream.feed_data(b'line1')
        self.assertIsNone(stream._parser)
        self.assertEqual(b'', bytes(stream._buffer))
コード例 #9
0
    def test_feed_parser_exc(self):
        def p():
            yield  # stream
            yield  # read chunk
            raise ValueError()

        stream = parsers.StreamBuffer()
        s = stream.set_parser(p())

        stream.feed_data(b'line1')
        self.assertIsInstance(s.exception(), ValueError)
        self.assertEqual(b'', bytes(stream._buffer))
コード例 #10
0
    def test_unset_parser_eof_unhandled_eof(self):
        def p():
            yield  # stream
            while True:
                yield  # read chunk

        stream = parsers.StreamBuffer()
        s = stream.set_parser(p())

        stream.feed_data(b'line1')
        stream.unset_parser()
        self.assertIsNone(s.exception(), ValueError)
        self.assertTrue(s._eof)
コード例 #11
0
    def test_unset_parser_stop(self):
        def p():
            out, buf = yield  # stream
            try:
                while True:
                    yield  # read chunk
            except parsers.EofStream:
                out.feed_eof()

        stream = parsers.StreamBuffer()
        s = stream.set_parser(p())

        stream.feed_data(b'line1')
        stream.unset_parser()
        self.assertTrue(s._eof)
コード例 #12
0
    def test_set_parser_feed_existing_eof_exc(self):

        def p():
            yield  # stream
            try:
                while True:
                    yield  # read chunk
            except parsers.EofStream:
                raise ValueError()

        stream = parsers.StreamBuffer()
        stream.feed_data(b'line1')
        stream.feed_eof()
        s = stream.set_parser(p())
        self.assertIsInstance(s.exception(), ValueError)
コード例 #13
0
    def test_set_parser_feed_existing_stop(self):
        def lines_parser():
            out, buf = yield
            try:
                out.feed_data((yield from buf.readuntil(b'\n')))
                out.feed_data((yield from buf.readuntil(b'\n')))
            finally:
                out.feed_eof()

        stream = parsers.StreamBuffer()
        stream.feed_data(b'line1')
        stream.feed_data(b'\r\nline2\r\ndata')
        s = stream.set_parser(lines_parser())

        self.assertEqual(b'line1\r\nline2\r\n', b''.join(s._buffer))
        self.assertEqual(b'data', bytes(stream._buffer))
        self.assertIsNone(stream._parser)
        self.assertTrue(s._eof)
コード例 #14
0
    def test_feed_empty_data(self):
        stream = parsers.StreamBuffer()

        stream.feed_data(b'')
        self.assertEqual(b'', bytes(stream._buffer))
コード例 #15
0
    def test_feed_data(self):
        stream = parsers.StreamBuffer()

        stream.feed_data(self.DATA)
        self.assertEqual(self.DATA, bytes(stream._buffer))