#!perl -w use strict; no strict "vars"; use Bit::Vector; # ====================================================================== # $set->Interval_Empty($lower,$upper); # $set->Interval_Fill($lower,$upper); # $set->Interval_Flip($lower,$upper); # $set->Interval_Reverse($lower,$upper); # ($min,$max) = $set->Interval_Scan_inc($start); # ($min,$max) = $set->Interval_Scan_dec($start); # ====================================================================== print "1..4024\n"; $lim = 32768; $n = 1; $set = new Bit::Vector($lim); $rev = new Bit::Vector($lim); $rev->Primes(); $vec = $rev->Clone(); $primes = $rev->Norm(); if ($rev->equal($vec)) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if ($set->Norm() == 0) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if ($set->Min() > $lim) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if ($set->Max() < -$lim) {print "ok $n\n";} else {print "not ok $n\n";} $n++; $set->Fill(); if ($set->Norm() == $lim) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if ($set->Min() == 0) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if ($set->Max() == $lim-1) {print "ok $n\n";} else {print "not ok $n\n";} $n++; $set->Empty(); if ($set->Norm() == 0) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if ($set->Min() > $lim) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if ($set->Max() < -$lim) {print "ok $n\n";} else {print "not ok $n\n";} $n++; $set->Complement($set); if ($set->Norm() == $lim) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if ($set->Min() == 0) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if ($set->Max() == $lim-1) {print "ok $n\n";} else {print "not ok $n\n";} $n++; $set->Flip(); if ($set->Norm() == 0) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if ($set->Min() > $lim) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if ($set->Max() < -$lim) {print "ok $n\n";} else {print "not ok $n\n";} $n++; test_set_clr(1,14); test_flip(1,14); test_rev(1,14); test_set_clr(1,30); test_flip(1,30); test_rev(1,30); test_set_clr(1,62); test_flip(1,62); test_rev(1,62); test_set_clr(1,126); test_flip(1,126); test_rev(1,126); test_set_clr(1,254); test_flip(1,254); test_rev(1,254); test_set_clr(1,$lim-2); test_flip(1,$lim-2); test_rev(1,$lim-2); test_set_clr(0,14); test_flip(0,14); test_rev(0,14); test_set_clr(0,30); test_flip(0,30); test_rev(0,30); test_set_clr(0,62); test_flip(0,62); test_rev(0,62); test_set_clr(0,126); test_flip(0,126); test_rev(0,126); test_set_clr(0,254); test_flip(0,254); test_rev(0,254); test_set_clr(0,$lim-2); test_flip(0,$lim-2); test_rev(0,$lim-2); test_set_clr(1,15); test_flip(1,15); test_rev(1,15); test_set_clr(1,31); test_flip(1,31); test_rev(1,31); test_set_clr(1,63); test_flip(1,63); test_rev(1,63); test_set_clr(1,127); test_flip(1,127); test_rev(1,127); test_set_clr(1,255); test_flip(1,255); test_rev(1,255); test_set_clr(1,$lim-1); test_flip(1,$lim-1); test_rev(1,$lim-1); test_set_clr(0,15); test_flip(0,15); test_rev(0,15); test_set_clr(0,31); test_flip(0,31); test_rev(0,31); test_set_clr(0,63); test_flip(0,63); test_rev(0,63); test_set_clr(0,127); test_flip(0,127); test_rev(0,127); test_set_clr(0,255); test_flip(0,255); test_rev(0,255); test_set_clr(0,$lim-1); test_flip(0,$lim-1); test_rev(0,$lim-1); for ( $i = 0; $i < 256; $i++ ) { test_set_clr($i,$i); test_flip($i,$i); } eval { $set->Interval_Empty(-1,$lim-1); }; if ($@ =~ /[^:]+::[^:]+::Interval_Empty\(\): minimum index out of range/) {print "ok $n\n";} else {print "not ok $n\n";} $n++; eval { $set->Interval_Fill(-1,$lim-1); }; if ($@ =~ /[^:]+::[^:]+::Interval_Fill\(\): minimum index out of range/) {print "ok $n\n";} else {print "not ok $n\n";} $n++; eval { $set->Interval_Flip(-1,$lim-1); }; if ($@ =~ /[^:]+::[^:]+::Interval_Flip\(\): minimum index out of range/) {print "ok $n\n";} else {print "not ok $n\n";} $n++; eval { $set->Interval_Reverse(-1,$lim-1); }; if ($@ =~ /[^:]+::[^:]+::Interval_Reverse\(\): minimum index out of range/) {print "ok $n\n";} else {print "not ok $n\n";} $n++; eval { $set->Interval_Empty(0,-1); }; if ($@ =~ /[^:]+::[^:]+::Interval_Empty\(\): maximum index out of range/) {print "ok $n\n";} else {print "not ok $n\n";} $n++; eval { $set->Interval_Fill(0,-1); }; if ($@ =~ /[^:]+::[^:]+::Interval_Fill\(\): maximum index out of range/) {print "ok $n\n";} else {print "not ok $n\n";} $n++; eval { $set->Interval_Flip(0,-1); }; if ($@ =~ /[^:]+::[^:]+::Interval_Flip\(\): maximum index out of range/) {print "ok $n\n";} else {print "not ok $n\n";} $n++; eval { $set->Interval_Reverse(0,-1); }; if ($@ =~ /[^:]+::[^:]+::Interval_Reverse\(\): maximum index out of range/) {print "ok $n\n";} else {print "not ok $n\n";} $n++; eval { $set->Interval_Empty(1,0); }; if ($@ =~ /[^:]+::[^:]+::Interval_Empty\(\): minimum > maximum index/) {print "ok $n\n";} else {print "not ok $n\n";} $n++; eval { $set->Interval_Fill(1,0); }; if ($@ =~ /[^:]+::[^:]+::Interval_Fill\(\): minimum > maximum index/) {print "ok $n\n";} else {print "not ok $n\n";} $n++; eval { $set->Interval_Flip(1,0); }; if ($@ =~ /[^:]+::[^:]+::Interval_Flip\(\): minimum > maximum index/) {print "ok $n\n";} else {print "not ok $n\n";} $n++; eval { $set->Interval_Reverse(1,0); }; if ($@ =~ /[^:]+::[^:]+::Interval_Reverse\(\): minimum > maximum index/) {print "ok $n\n";} else {print "not ok $n\n";} $n++; eval { ($min,$max) = $set->Interval_Scan_inc($lim); }; if ($@ =~ /[^:]+::[^:]+::Interval_Scan_inc\(\): start index out of range/) {print "ok $n\n";} else {print "not ok $n\n";} $n++; eval { ($min,$max) = $set->Interval_Scan_inc(-1); }; if ($@ =~ /[^:]+::[^:]+::Interval_Scan_inc\(\): start index out of range/) {print "ok $n\n";} else {print "not ok $n\n";} $n++; eval { ($min,$max) = $set->Interval_Scan_dec($lim); }; if ($@ =~ /[^:]+::[^:]+::Interval_Scan_dec\(\): start index out of range/) {print "ok $n\n";} else {print "not ok $n\n";} $n++; eval { ($min,$max) = $set->Interval_Scan_dec(-1); }; if ($@ =~ /[^:]+::[^:]+::Interval_Scan_dec\(\): start index out of range/) {print "ok $n\n";} else {print "not ok $n\n";} $n++; exit; sub test_set_clr { my($lower,$upper) = @_; my($span) = $upper - $lower + 1; $set->Interval_Fill($lower,$upper); if ($set->Norm() == $span) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if (($min,$max) = $set->Interval_Scan_inc(0)) {print "ok $n\n";} else {print "not ok $n\n"; $min = $set->Min(); $max = $set->Max(); } $n++; if ($min == $lower) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if ($max == $upper) {print "ok $n\n";} else {print "not ok $n\n";} $n++; $set->Interval_Empty($lower,$upper); if ($set->Norm() == 0) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if ($set->Min() > $lim) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if ($set->Max() < -$lim) {print "ok $n\n";} else {print "not ok $n\n";} $n++; } sub test_flip { my($lower,$upper) = @_; my($span) = $upper - $lower + 1; $set->Interval_Flip($lower,$upper); if ($set->Norm() == $span) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if (($min,$max) = $set->Interval_Scan_dec($set->Size()-1)) {print "ok $n\n";} else {print "not ok $n\n"; $min = $set->Min(); $max = $set->Max(); } $n++; if ($min == $lower) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if ($max == $upper) {print "ok $n\n";} else {print "not ok $n\n";} $n++; $set->Interval_Flip($lower,$upper); if ($set->Norm() == 0) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if ($set->Min() > $lim) {print "ok $n\n";} else {print "not ok $n\n";} $n++; if ($set->Max() < -$lim) {print "ok $n\n";} else {print "not ok $n\n";} $n++; } sub test_rev { my($lower,$upper) = @_; $rev->Interval_Reverse($lower,$upper); if ($rev->Norm() == $primes) {print "ok $n\n";} else {print "not ok $n\n";} $n++; unless ($rev->equal($vec)) {print "ok $n\n";} else {print "not ok $n\n";} $n++; $rev->Interval_Reverse($lower,$upper); if ($rev->equal($vec)) {print "ok $n\n";} else {print "not ok $n\n";} $n++; } __END__