📄 30_overloaded.t
字号:
#!perl -wuse strict;no strict "vars";use Bit::Vector::Overload;$Bit::Vector::CONFIG[2] = 3;# ======================================================================# test overloaded operators# ======================================================================$operator_list{'+='} = 1;$operator_list{'|='} = 1;$operator_list{'-='} = 1;$operator_list{'*='} = 1;$operator_list{'&='} = 1;$operator_list{'^='} = 1;$operator_list{'<<='} = 1;$operator_list{'>>='} = 1;$operator_list{'x='} = 1;$operator_list{'.='} = 1;$operator_list{'+'} = 2;$operator_list{'|'} = 2;$operator_list{'-'} = 2;$operator_list{'*'} = 2;$operator_list{'&'} = 2;$operator_list{'^'} = 2;$operator_list{'<<'} = 2;$operator_list{'>>'} = 2;$operator_list{'x'} = 2;$operator_list{'.'} = 2;$operator_list{'=='} = 2;$operator_list{'!='} = 2;$operator_list{'<'} = 2;$operator_list{'<='} = 2;$operator_list{'>'} = 2;$operator_list{'>='} = 2;$operator_list{'cmp'} = 2;$operator_list{'eq'} = 2;$operator_list{'ne'} = 2;$operator_list{'lt'} = 2;$operator_list{'le'} = 2;$operator_list{'gt'} = 2;$operator_list{'ge'} = 2;print "1..15695\n";$n = 1;$set = Bit::Vector->new(500);if (abs($set) == 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($set->Min() >= 500){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($set->Max() < 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;unless ($set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (! $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;$set += 0;if (abs($set) == 1){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() == 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($set){print "ok $n\n";} else {print "not ok $n\n";}$n++;unless (! $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;$set += 1;if (abs($set) == 2){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() == 1){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($set){print "ok $n\n";} else {print "not ok $n\n";}$n++;unless (! $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;$set ^= 0;if (abs($set) == 1){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($set->Min() == 1){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($set->Max() == 1){print "ok $n\n";} else {print "not ok $n\n";}$n++;$set += 400;if (abs($set) == 2){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($set->Min() == 1){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($set->Max() == 400){print "ok $n\n";} else {print "not ok $n\n";}$n++;$set ^= 0;if (abs($set) == 3){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() == 400){print "ok $n\n";} else {print "not ok $n\n";}$n++;$ref = $set;if ($ref == $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;$ref = $set->new(500);if (! $ref){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($set){print "ok $n\n";} else {print "not ok $n\n";}$n++;$ref->Copy($set);if ($ref == $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($ref){print "ok $n\n";} else {print "not ok $n\n";}$n++;$ref = $set + 11;if (abs($ref) == 4){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($ref->Min() == 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($ref->Max() == 400){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($ref->bit_test(11)){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (!($ref == $set)){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($ref != $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($set < $ref){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($set <= $ref){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($ref > $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($ref >= $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;$ref = $set + 499;if (abs($ref) == 4){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($ref->Min() == 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($ref->Max() == 499){print "ok $n\n";} else {print "not ok $n\n";}$n++;$ref = $ref - 400;if (abs($ref) == 3){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($ref->Min() == 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($ref->Max() == 499){print "ok $n\n";} else {print "not ok $n\n";}$n++;$ref = $ref - 0;if (abs($ref) == 2){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($ref->Min() == 1){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($ref->Max() == 499){print "ok $n\n";} else {print "not ok $n\n";}$n++;$ref -= 499;if (abs($ref) == 1){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($ref->Min() == 1){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($ref->Max() == 1){print "ok $n\n";} else {print "not ok $n\n";}$n++;$ref -= 1;if (abs($ref) == 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($ref->Min() >= 500){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($ref->Max() < 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;$limit = 1000; # some tests below assume this limit to be even!$primes = Bit::Vector->new($limit+1);if (! $primes){print "ok $n\n";} else {print "not ok $n\n";}$n++;$primes->Fill();if ($primes){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (abs($primes) == $limit+1){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($primes->Min() == 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($primes->Max() == $limit){print "ok $n\n";} else {print "not ok $n\n";}$n++;$primes -= 0;$primes -= 1;for ( $j = 4; $j <= $limit; $j += 2 ) { $primes -= $j; }for ( $i = 3; ($j = $i * $i) <= $limit; $i += 2 ){ for ( ; $j <= $limit; $j += $i ) { $primes -= $j; }}if (abs($primes) == 168){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($primes->Min() == 2){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($primes->Max() == 997){print "ok $n\n";} else {print "not ok $n\n";}$n++;$odd = $primes->new($limit+1);if (! $odd){print "ok $n\n";} else {print "not ok $n\n";}$n++;for ( $i = 1; $i <= $limit; $i += 2 ) { $odd += $i; }if ($odd){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (abs($odd) == $limit/2){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($odd->Min() == 1){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($odd->Max() == 999){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (!($odd == $primes)){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($odd != $primes){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (!($primes < $odd)){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (!($primes <= $odd)){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (!($primes > $odd)){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (!($primes >= $odd)){print "ok $n\n";} else {print "not ok $n\n";}$n++;$temp = $primes - $odd;if ($temp == 2){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (2 == $temp){print "ok $n\n";} else {print "not ok $n\n";}$n++;$odd = $odd + 2;if (abs($odd) == ($limit/2)+1){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($odd->Min() == 1){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($odd->Max() == 999){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (!($odd == $primes)){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($odd != $primes){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($primes < $odd){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($primes <= $odd){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (!($primes > $odd)){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (!($primes >= $odd)){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($odd > $primes){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($odd >= $primes){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (!($odd < $primes)){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (!($odd <= $primes)){print "ok $n\n";} else {print "not ok $n\n";}$n++;$temp = $primes * $odd;if ($temp == $primes){print "ok $n\n";} else {print "not ok $n\n";}$n++;$temp = $primes + $odd;if ($temp == $odd){print "ok $n\n";} else {print "not ok $n\n";}$n++;$temp = $primes ^ $odd;$xor = $primes->new($limit+1);if (! $xor){print "ok $n\n";} else {print "not ok $n\n";}$n++;$xor->ExclusiveOr($primes,$odd);if ($xor){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($temp == $xor){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($temp->equal($xor)){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (23 < $primes){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (23 <= $primes){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (!(23 > $primes)){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (!(23 >= $primes)){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($primes > 23){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($primes >= 23){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (!($primes < 23)){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (!($primes <= 23)){print "ok $n\n";} else {print "not ok $n\n";}$n++;$temp = ($primes + $odd) - ($primes * $odd);if ($temp == $xor){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($temp->equal($xor)){print "ok $n\n";} else {print "not ok $n\n";}$n++;$even = $xor;$even->Empty();for ( $i = 0; $i <= $limit; $i += 2 ) { $even += $i; }if (($primes * $even) == 2){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (($odd * $even) == 2){print "ok $n\n";} else {print "not ok $n\n";}$n++;$full = $temp;$full->Fill();if (($odd + $even) == $full){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (($primes + $even) == ~($odd - $primes)){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (($primes + $even) == ~($odd * ~$primes)){print "ok $n\n";} else {print "not ok $n\n";}$n++;$set = Bit::Vector->new(500);if (abs($set) == 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($set->Min() >= 500){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($set->Max() < 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;unless ($set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (++$set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (abs($set) == 1){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() == 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (++$set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (abs($set) == 1){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($set->Min() == 1){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($set->Max() == 1){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (++$set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (abs($set) == 2){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() == 1){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (--$set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (abs($set) == 1){print "ok $n\n";} else {print "not ok $n\n";}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -