#!/usr/bin/perl
use strict;
use warnings;
use Test::More;
use List::Util qw(shuffle);
use lib qw(t/lib);
use BitStreamTest;
my @implementations = impl_list;
my @encodings = encoding_list;
plan tests => (scalar @implementations) * 1;
foreach my $type (@implementations) {
srand(29);
{
my @data;
foreach my $encoding (@encodings) {
my $maxval = (is_universal($encoding)) ? 100_000_000 : 1000;
push @data, [$encoding, int(rand($maxval))] for (1 .. 100);
}
# @data will have 100 * scalar @encodings entries,
# or about 3000 encoding/number pairs.
@data = shuffle @data;
# we're encoding a lot of random values, each using a different coding
# method. We should be be able to successfully retrieve them all.
my $nvalues = scalar @data;
my $stream = stream_encode_mixed($type, @data);
my $success = stream_decode_mixed($stream, @data);
ok($success, "$type: mixed coding with $nvalues values");
}
# test each parameter for parameterized codes
}
done_testing();