#!/usr/bin/perl
use strict;
use warnings;
use Test::More tests => 1;
use Data::BitStream::XS;
# Make a big random sring
my $str = '';
my $nbits = 10_000;
for (1 .. $nbits) {
$str .= (rand(1) < 0.5) ? '0' : '1';
}
die unless $nbits == length($str);
die if $str =~ /[^01]/;
my $stream = Data::BitStream::XS->new;
my $maxbits = $stream->maxbits;
# Insert it in chunks
{
$stream->erase_for_write;
my $pos = 0;
while ($pos < $nbits) {
my $maxput = $nbits - $pos;
my $putlen = 1 + int(rand($maxbits * 4)); # 1-4*$maxbits
$putlen = $maxput if $putlen > $maxput;
$stream->put_string( substr($str, $pos, $putlen) );
$pos += $putlen;
}
}
# Read the whole thing as a string and verify it matches
ok( $str eq $stream->to_string, "streams match after chunked put_string");