Mercurial > hg
view contrib/python-zstandard/tests/test_buffer_util.py @ 43994:de7838053207
zstandard: vendor python-zstandard 0.13.0
Version 0.13.0 of the package was just released. It contains
an upgraded zstd C library which can result in some performance
wins, official support for Python 3.8, and a blackened code base.
There were no meaningful code or functionality changes in this
release of python-zstandard: just reformatting and an upgraded
zstd library version. So the diff seems much larger than what it
is.
Files were added without modifications.
The clang-format-ignorelist file was updated to reflect a new
header file in the zstd distribution.
# no-check-commit because 3rd party code has different style guidelines
Differential Revision: https://phab.mercurial-scm.org/D7770
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 28 Dec 2019 09:55:45 -0800 |
parents | 675775c33ab6 |
children | 5e84a96d865b |
line wrap: on
line source
import struct import unittest import zstandard as zstd from .common import TestCase ss = struct.Struct("=QQ") class TestBufferWithSegments(TestCase): def test_arguments(self): if not hasattr(zstd, "BufferWithSegments"): self.skipTest("BufferWithSegments not available") with self.assertRaises(TypeError): zstd.BufferWithSegments() with self.assertRaises(TypeError): zstd.BufferWithSegments(b"foo") # Segments data should be a multiple of 16. with self.assertRaisesRegex( ValueError, "segments array size is not a multiple of 16" ): zstd.BufferWithSegments(b"foo", b"\x00\x00") def test_invalid_offset(self): if not hasattr(zstd, "BufferWithSegments"): self.skipTest("BufferWithSegments not available") with self.assertRaisesRegex( ValueError, "offset within segments array references memory" ): zstd.BufferWithSegments(b"foo", ss.pack(0, 4)) def test_invalid_getitem(self): if not hasattr(zstd, "BufferWithSegments"): self.skipTest("BufferWithSegments not available") b = zstd.BufferWithSegments(b"foo", ss.pack(0, 3)) with self.assertRaisesRegex(IndexError, "offset must be non-negative"): test = b[-10] with self.assertRaisesRegex(IndexError, "offset must be less than 1"): test = b[1] with self.assertRaisesRegex(IndexError, "offset must be less than 1"): test = b[2] def test_single(self): if not hasattr(zstd, "BufferWithSegments"): self.skipTest("BufferWithSegments not available") b = zstd.BufferWithSegments(b"foo", ss.pack(0, 3)) self.assertEqual(len(b), 1) self.assertEqual(b.size, 3) self.assertEqual(b.tobytes(), b"foo") self.assertEqual(len(b[0]), 3) self.assertEqual(b[0].offset, 0) self.assertEqual(b[0].tobytes(), b"foo") def test_multiple(self): if not hasattr(zstd, "BufferWithSegments"): self.skipTest("BufferWithSegments not available") b = zstd.BufferWithSegments( b"foofooxfooxy", b"".join([ss.pack(0, 3), ss.pack(3, 4), ss.pack(7, 5)]) ) self.assertEqual(len(b), 3) self.assertEqual(b.size, 12) self.assertEqual(b.tobytes(), b"foofooxfooxy") self.assertEqual(b[0].tobytes(), b"foo") self.assertEqual(b[1].tobytes(), b"foox") self.assertEqual(b[2].tobytes(), b"fooxy") class TestBufferWithSegmentsCollection(TestCase): def test_empty_constructor(self): if not hasattr(zstd, "BufferWithSegmentsCollection"): self.skipTest("BufferWithSegmentsCollection not available") with self.assertRaisesRegex(ValueError, "must pass at least 1 argument"): zstd.BufferWithSegmentsCollection() def test_argument_validation(self): if not hasattr(zstd, "BufferWithSegmentsCollection"): self.skipTest("BufferWithSegmentsCollection not available") with self.assertRaisesRegex(TypeError, "arguments must be BufferWithSegments"): zstd.BufferWithSegmentsCollection(None) with self.assertRaisesRegex(TypeError, "arguments must be BufferWithSegments"): zstd.BufferWithSegmentsCollection( zstd.BufferWithSegments(b"foo", ss.pack(0, 3)), None ) with self.assertRaisesRegex( ValueError, "ZstdBufferWithSegments cannot be empty" ): zstd.BufferWithSegmentsCollection(zstd.BufferWithSegments(b"", b"")) def test_length(self): if not hasattr(zstd, "BufferWithSegmentsCollection"): self.skipTest("BufferWithSegmentsCollection not available") b1 = zstd.BufferWithSegments(b"foo", ss.pack(0, 3)) b2 = zstd.BufferWithSegments( b"barbaz", b"".join([ss.pack(0, 3), ss.pack(3, 3)]) ) c = zstd.BufferWithSegmentsCollection(b1) self.assertEqual(len(c), 1) self.assertEqual(c.size(), 3) c = zstd.BufferWithSegmentsCollection(b2) self.assertEqual(len(c), 2) self.assertEqual(c.size(), 6) c = zstd.BufferWithSegmentsCollection(b1, b2) self.assertEqual(len(c), 3) self.assertEqual(c.size(), 9) def test_getitem(self): if not hasattr(zstd, "BufferWithSegmentsCollection"): self.skipTest("BufferWithSegmentsCollection not available") b1 = zstd.BufferWithSegments(b"foo", ss.pack(0, 3)) b2 = zstd.BufferWithSegments( b"barbaz", b"".join([ss.pack(0, 3), ss.pack(3, 3)]) ) c = zstd.BufferWithSegmentsCollection(b1, b2) with self.assertRaisesRegex(IndexError, "offset must be less than 3"): c[3] with self.assertRaisesRegex(IndexError, "offset must be less than 3"): c[4] self.assertEqual(c[0].tobytes(), b"foo") self.assertEqual(c[1].tobytes(), b"bar") self.assertEqual(c[2].tobytes(), b"baz")