2525 encode_array ,
2626 pixel_data ,
2727 pixel_array ,
28+ pack_bits ,
29+ unpack_bits ,
2830)
29- from rle .rle import pack_bits , unpack_bits
31+ from rle .rle import pack_bits as _pack_bits , unpack_bits as _unpack_bits
3032
3133
3234INDEX_LEE = get_indexed_datasets ("1.2.840.10008.1.2.1" )
@@ -383,10 +385,20 @@ def test_pixel_data(self):
383385
384386
385387class TestUnpackBits :
386- """Tests for unpack_bits ()."""
388+ """Tests for _unpack_bits ()."""
387389
388390 @pytest .mark .parametrize ("src, little, big" , REFERENCE_PACK_UNPACK )
389391 def test_unpack_bytes (self , src , little , big ):
392+ """Test unpacking data without numpy."""
393+ as_bytes = pack (f"{ len (little )} B" , * little )
394+ assert _unpack_bits (src , 0 , "<" ) == as_bytes
395+ assert _unpack_bits (src , 32 , "<" ) == as_bytes
396+ as_bytes = pack (f"{ len (big )} B" , * big )
397+ assert _unpack_bits (src , 0 , ">" ) == as_bytes
398+ assert _unpack_bits (src , 32 , ">" ) == as_bytes
399+
400+ @pytest .mark .parametrize ("src, little, big" , REFERENCE_PACK_UNPACK )
401+ def test_unpack_bytes_util (self , src , little , big ):
390402 """Test unpacking data without numpy."""
391403 as_bytes = pack (f"{ len (little )} B" , * little )
392404 assert unpack_bits (src , 0 , "<" ) == as_bytes
@@ -397,6 +409,31 @@ def test_unpack_bytes(self, src, little, big):
397409
398410 def test_count_little (self ):
399411 """Test the `count` parameter for little endian unpacking."""
412+ assert _unpack_bits (b"\x00 " , 1 , "<" ) == b"\x00 "
413+ assert _unpack_bits (b"\xff " , 1 , "<" ) == b"\x01 "
414+ assert _unpack_bits (b"\xff " , 2 , "<" ) == b"\x01 " * 2
415+ assert _unpack_bits (b"\xff " , 3 , "<" ) == b"\x01 " * 3
416+ assert _unpack_bits (b"\xff " , 4 , "<" ) == b"\x01 " * 4
417+ assert _unpack_bits (b"\xff " , 5 , "<" ) == b"\x01 " * 5
418+ assert _unpack_bits (b"\xff " , 6 , "<" ) == b"\x01 " * 6
419+ assert _unpack_bits (b"\xff " , 7 , "<" ) == b"\x01 " * 7
420+ assert _unpack_bits (b"\xff " , 8 , "<" ) == b"\x01 " * 8
421+ assert _unpack_bits (b"\xff \xAA " , 9 , "<" ) == b"\x01 " * 8 + b"\x00 "
422+ assert _unpack_bits (b"\xff \xAA " , 10 , "<" ) == b"\x01 " * 8 + b"\x00 \x01 "
423+ assert _unpack_bits (b"\xff \xAA " , 11 , "<" ) == b"\x01 " * 8 + b"\x00 \x01 \x00 "
424+ assert _unpack_bits (b"\xff \xAA " , 12 , "<" ) == b"\x01 " * 8 + b"\x00 \x01 " * 2
425+ assert _unpack_bits (b"\xff \xAA " , 13 , "<" ) == b"\x01 " * 8 + b"\x00 \x01 " * 2 + b"\x00 "
426+ assert _unpack_bits (b"\xff \xAA " , 14 , "<" ) == b"\x01 " * 8 + b"\x00 \x01 " * 3
427+ assert _unpack_bits (b"\xff \xAA " , 15 , "<" ) == b"\x01 " * 8 + b"\x00 \x01 " * 3 + b"\x00 "
428+ assert _unpack_bits (b"\xff \xAA " , 16 , "<" ) == b"\x01 " * 8 + b"\x00 \x01 " * 4
429+
430+ def test_count_little_util (self ):
431+ """Test the `count` parameter for little endian unpacking."""
432+ assert unpack_bits (b"\x00 " , - 1 , "<" ) == b"\x00 " * 8
433+ assert unpack_bits (b"\x00 " , 10 , "<" ) == b"\x00 " * 8
434+ assert unpack_bits (b"\x00 " , None , "<" ) == b"\x00 " * 8
435+ assert unpack_bits (b"\x00 " , 0 , "<" ) == b"\x00 " * 8
436+
400437 assert unpack_bits (b"\x00 " , 1 , "<" ) == b"\x00 "
401438 assert unpack_bits (b"\xff " , 1 , "<" ) == b"\x01 "
402439 assert unpack_bits (b"\xff " , 2 , "<" ) == b"\x01 " * 2
@@ -417,31 +454,31 @@ def test_count_little(self):
417454
418455 def test_count_big (self ):
419456 """Test the `count` parameter for big endian unpacking."""
420- assert unpack_bits (b"\x00 " , 1 , ">" ) == b"\x00 "
421- assert unpack_bits (b"\xff " , 1 , ">" ) == b"\x01 "
422- assert unpack_bits (b"\xff " , 2 , ">" ) == b"\x01 " * 2
423- assert unpack_bits (b"\xff " , 3 , ">" ) == b"\x01 " * 3
424- assert unpack_bits (b"\xff " , 4 , ">" ) == b"\x01 " * 4
425- assert unpack_bits (b"\xff " , 5 , ">" ) == b"\x01 " * 5
426- assert unpack_bits (b"\xff " , 6 , ">" ) == b"\x01 " * 6
427- assert unpack_bits (b"\xff " , 7 , ">" ) == b"\x01 " * 7
428- assert unpack_bits (b"\xff " , 8 , ">" ) == b"\x01 " * 8
429- assert unpack_bits (b"\xff \xAA " , 9 , ">" ) == b"\x01 " * 8 + b"\x01 "
430- assert unpack_bits (b"\xff \xAA " , 10 , ">" ) == b"\x01 " * 8 + b"\x01 \x00 "
431- assert unpack_bits (b"\xff \xAA " , 11 , ">" ) == b"\x01 " * 8 + b"\x01 \x00 \x01 "
432- assert unpack_bits (b"\xff \xAA " , 12 , ">" ) == b"\x01 " * 8 + b"\x01 \x00 " * 2
433- assert unpack_bits (b"\xff \xAA " , 13 , ">" ) == b"\x01 " * 8 + b"\x01 \x00 " * 2 + b"\x01 "
434- assert unpack_bits (b"\xff \xAA " , 14 , ">" ) == b"\x01 " * 8 + b"\x01 \x00 " * 3
435- assert unpack_bits (b"\xff \xAA " , 15 , ">" ) == b"\x01 " * 8 + b"\x01 \x00 " * 3 + b"\x01 "
436- assert unpack_bits (b"\xff \xAA " , 16 , ">" ) == b"\x01 " * 8 + b"\x01 \x00 " * 4
457+ assert _unpack_bits (b"\x00 " , 1 , ">" ) == b"\x00 "
458+ assert _unpack_bits (b"\xff " , 1 , ">" ) == b"\x01 "
459+ assert _unpack_bits (b"\xff " , 2 , ">" ) == b"\x01 " * 2
460+ assert _unpack_bits (b"\xff " , 3 , ">" ) == b"\x01 " * 3
461+ assert _unpack_bits (b"\xff " , 4 , ">" ) == b"\x01 " * 4
462+ assert _unpack_bits (b"\xff " , 5 , ">" ) == b"\x01 " * 5
463+ assert _unpack_bits (b"\xff " , 6 , ">" ) == b"\x01 " * 6
464+ assert _unpack_bits (b"\xff " , 7 , ">" ) == b"\x01 " * 7
465+ assert _unpack_bits (b"\xff " , 8 , ">" ) == b"\x01 " * 8
466+ assert _unpack_bits (b"\xff \xAA " , 9 , ">" ) == b"\x01 " * 8 + b"\x01 "
467+ assert _unpack_bits (b"\xff \xAA " , 10 , ">" ) == b"\x01 " * 8 + b"\x01 \x00 "
468+ assert _unpack_bits (b"\xff \xAA " , 11 , ">" ) == b"\x01 " * 8 + b"\x01 \x00 \x01 "
469+ assert _unpack_bits (b"\xff \xAA " , 12 , ">" ) == b"\x01 " * 8 + b"\x01 \x00 " * 2
470+ assert _unpack_bits (b"\xff \xAA " , 13 , ">" ) == b"\x01 " * 8 + b"\x01 \x00 " * 2 + b"\x01 "
471+ assert _unpack_bits (b"\xff \xAA " , 14 , ">" ) == b"\x01 " * 8 + b"\x01 \x00 " * 3
472+ assert _unpack_bits (b"\xff \xAA " , 15 , ">" ) == b"\x01 " * 8 + b"\x01 \x00 " * 3 + b"\x01 "
473+ assert _unpack_bits (b"\xff \xAA " , 16 , ">" ) == b"\x01 " * 8 + b"\x01 \x00 " * 4
437474
438475 @pytest .mark .parametrize ("src, little, big" , REFERENCE_PACK_UNPACK )
439476 def test_unpack_bytearray (self , src , little , big ):
440477 """Test unpacking data without numpy."""
441478 as_bytes = pack (f"{ len (little )} B" , * little )
442- assert unpack_bits (bytearray (src ), 0 , "<" ) == as_bytes
479+ assert _unpack_bits (bytearray (src ), 0 , "<" ) == as_bytes
443480 as_bytes = pack (f"{ len (big )} B" , * big )
444- assert unpack_bits (bytearray (src ), 0 , ">" ) == as_bytes
481+ assert _unpack_bits (bytearray (src ), 0 , ">" ) == as_bytes
445482
446483
447484REFERENCE_PACK_PARTIAL_LITTLE = [
@@ -489,21 +526,27 @@ class TestPackBits:
489526
490527 @pytest .mark .parametrize ("output, little, big" , REFERENCE_PACK_UNPACK )
491528 def test_pack_bytes (self , output , little , big ):
529+ """Test packing data."""
530+ assert output == _pack_bits (bytes (little ), "<" )
531+ assert output == _pack_bits (bytes (big ), ">" )
532+
533+ @pytest .mark .parametrize ("output, little, big" , REFERENCE_PACK_UNPACK )
534+ def test_pack_bytes_utils (self , output , little , big ):
492535 """Test packing data."""
493536 assert output == pack_bits (bytes (little ), "<" )
494537 assert output == pack_bits (bytes (big ), ">" )
495538
496539 @pytest .mark .parametrize ("output, little, big" , REFERENCE_PACK_UNPACK )
497540 def test_pack_bytearray (self , output , little , big ):
498541 """Test packing data."""
499- assert output == pack_bits (bytearray (little ), "<" )
500- assert output == pack_bits (bytearray (big ), ">" )
542+ assert output == _pack_bits (bytearray (little ), "<" )
543+ assert output == _pack_bits (bytearray (big ), ">" )
501544
502545 def test_non_binary_input (self ):
503546 """Test non-binary input raises exception."""
504547 msg = r"Only binary input \(containing zeros or ones\) can be packed"
505548 with pytest .raises (ValueError , match = msg ):
506- pack_bits (b"\x00 \x00 \x02 \x00 \x00 \x00 \x00 \x00 " , "<" )
549+ _pack_bits (b"\x00 \x00 \x02 \x00 \x00 \x00 \x00 \x00 " , "<" )
507550
508551 def test_bytes_input (self ):
509552 """Repeat above test with bytes input."""
@@ -516,8 +559,8 @@ def test_bytes_input(self):
516559 ]
517560 )
518561 # fmt: on
519- assert b"\x00 \x55 \xff " == pack_bits (src , "<" )
520- assert b"\x00 \xAA \xff " == pack_bits (src , ">" )
562+ assert b"\x00 \x55 \xff " == _pack_bits (src , "<" )
563+ assert b"\x00 \xAA \xff " == _pack_bits (src , ">" )
521564
522565 def test_bytearry_input (self ):
523566 """Repeat above test with bytearray input."""
@@ -530,25 +573,25 @@ def test_bytearry_input(self):
530573 ]
531574 )
532575 # fmt: on
533- assert b"\x00 \x55 \xff " == pack_bits (src , "<" )
534- assert b"\x00 \xAA \xff " == pack_bits (src , ">" )
576+ assert b"\x00 \x55 \xff " == _pack_bits (src , "<" )
577+ assert b"\x00 \xAA \xff " == _pack_bits (src , ">" )
535578
536579 @pytest .mark .parametrize ("output, src" , REFERENCE_PACK_PARTIAL_LITTLE )
537580 def test_pack_partial_bytes (self , src , output ):
538581 """Test packing data that isn't a full byte long."""
539- assert output == pack_bits (bytes (src ), "<" )
582+ assert output == _pack_bits (bytes (src ), "<" )
540583
541584 @pytest .mark .parametrize ("output, src" , REFERENCE_PACK_PARTIAL_LITTLE )
542585 def test_pack_partial_bytearray (self , src , output ):
543586 """Test packing data that isn't a full byte long."""
544- assert output == pack_bits (bytearray (src ), "<" )
587+ assert output == _pack_bits (bytearray (src ), "<" )
545588
546589 @pytest .mark .parametrize ("output, src" , REFERENCE_PACK_PARTIAL_BIG )
547590 def test_pack_partial_bytes_big (self , src , output ):
548591 """Test packing data that isn't a full byte long."""
549- assert output == pack_bits (bytes (src ), ">" )
592+ assert output == _pack_bits (bytes (src ), ">" )
550593
551594 @pytest .mark .parametrize ("output, src" , REFERENCE_PACK_PARTIAL_BIG )
552595 def test_pack_partial_bytearray_big (self , src , output ):
553596 """Test packing data that isn't a full byte long."""
554- assert output == pack_bits (bytearray (src ), ">" )
597+ assert output == _pack_bits (bytearray (src ), ">" )
0 commit comments