#!/usr/bin/perl use strict; use warnings; #use FindBin; use lib "$FindBin::Bin/../lib"; use Data::BitStream qw(code_is_supported code_is_universal); use Test::More; my @codes = qw| Gamma Delta Omega EvenRodeh Levenstein Fibonacci Unary Unary1 Baer(0) Baer(-1) Baer(-2) Baer(-8) Baer(1) Baer(2) Baer(8) Golomb(1) Golomb(2) Golomb(3) Golomb(177) Rice(0) Rice(1) Rice(2) Rice(7) Golomb(177) GammaGolomb(1) GammaGolomb(2) GammaGolomb(3) GammaGolomb(16) ExpGolomb(1) ExpGolomb(2) ExpGolomb(3) ExpGolomb(16) StartStop(0-0-2-3-9) StartStop(3-2-9) StartStepStop(3-2-13) Comma(2) Comma(5) BlockTaboo(00) BlockTaboo(1001) BinWord(15) |; plan tests => 3 * scalar @codes; foreach my $code (@codes) { my $issupported = code_is_supported($code); my $isuniversal = code_is_universal($code); ok($issupported, "$code is supported"); ok($isuniversal || !$isuniversal, "$code is or is not universal"); } my $stream = Data::BitStream->new; my $mod = 8000; foreach my $code (@codes) { my $v = unpack("%32C*", $code) % $mod; #print "putting $v with $code\n"; $stream->code_put($code, $v); } $stream->rewind_for_read; foreach my $code (@codes) { my $expect = unpack("%32C*", $code) % $mod; my $v = $stream->code_get($code); is($v,$expect, "get with $code"); }