#!/usr/bin/perl
use strict;
use warnings;
use Test::More;
use lib qw(t/lib);
use BitStreamTest;
my @implementations = impl_list;
plan tests => scalar @implementations;
foreach my $type (@implementations) {
my $encoding = 'gamma';
{
my $nvals = 500;
my @data;
srand(110);
for (1 .. $nvals) {
push @data, int(rand(515));
}
my $stream = stream_encode_array($type, $encoding, @data);
die "no stream for $encoding" unless defined $stream;
my $raw = $stream->to_raw;
my $rawlen = length($raw);
my $len = $stream->len;
my $wordlen = ($stream->maxbits / 8) * int( ($len + $stream->maxbits - 1) / $stream->maxbits);
my $bytelen = int( ($len + 7) / 8);
ok( ($rawlen >= $bytelen) && ($rawlen <= $wordlen), "$type: appropriate length of raw stream" );
}
}
done_testing();