📄 10__intervals.t
字号:
#!perl -wuse 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__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -