The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!perl -w

use strict;
no strict "vars";

use Bit::Vector;

# ======================================================================
#   $set->Norm();
#   $set->Min();
#   $set->Max();
# ======================================================================

print "1..21\n";

$lim = 997;

$set = new Bit::Vector($lim);

$norm = $set->Norm();
$min = $set->Min();
$max = $set->Max();

$n = 1;
if ($norm == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($min > $lim)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($max < -$lim)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;

$set->Fill();
$norm = $set->Norm();
$min = $set->Min();
$max = $set->Max();

if ($norm == $lim)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($min == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($max == $lim-1)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;

$set->Empty();
$set->Bit_On(0);
$set->Bit_On($lim-1);
$norm = $set->Norm();
$min = $set->Min();
$max = $set->Max();

if ($norm == 2)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($min == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($max == $lim-1)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;

$set->Empty();
$set->Bit_On(0);
$norm = $set->Norm();
$min = $set->Min();
$max = $set->Max();

if ($norm == 1)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($min == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($max == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;

$set->Empty();
$set->Bit_On($lim-1);
$norm = $set->Norm();
$min = $set->Min();
$max = $set->Max();

if ($norm == 1)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($min == $lim-1)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($max == $lim-1)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;

$set->Empty();
$set->Bit_On(1);
$set->Bit_On($lim-2);
$norm = $set->Norm();
$min = $set->Min();
$max = $set->Max();

if ($norm == 2)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($min == 1)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($max == $lim-2)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;

$set->Empty();
$set->Bit_On(int($lim/2));
$norm = $set->Norm();
$min = $set->Min();
$max = $set->Max();

if ($norm == 1)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($min == int($lim/2))
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($max == int($lim/2))
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;

__END__