📄 12_____string.t
字号:
#!perl -wuse strict;no strict "vars";use Bit::Vector::Overload;$Bit::Vector::CONFIG[2] = 3;# ======================================================================# $vector->to_Hex();# $vector->from_Hex();# $vector->to_Enum();# $vector->from_Enum();# ======================================================================print "1..192\n";$limit = 100;$vec1 = Bit::Vector->new($limit+1);$vec2 = Bit::Vector->new($limit+1);$n = 1;eval { $vec1->from_Hex("FEDCBA9876543210"); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;$str1 = $vec1->to_Hex();if ($str1 =~ /^0*FEDCBA9876543210$/){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec2->from_Hex("fedcba9876543210"); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;$str2 = $vec2->to_Hex();if ($str2 =~ /^0*FEDCBA9876543210$/){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec1->from_Hex("deadbeef"); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;$str1 = $vec1->to_Hex();if ($str1 =~ /^0*DEADBEEF$/){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec1->from_Hex("dead beef"); };if ($@ =~ /syntax error/){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec2->from_Hex("beef"); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($vec1->equal($vec2)){print "ok $n\n";} else {print "not ok $n\n";}$n++;$str1 = $vec1->to_Hex();if ($str1 =~ /^0*BEEF$/){print "ok $n\n";} else {print "not ok $n\n";}$n++;$str2 = $vec2->to_Enum();if ($str2 eq "0-3,5-7,9-13,15"){print "ok $n\n";} else {print "not ok $n\n";}$n++;$vec1->Primes();$str1 = $vec1->to_Hex();if ($str1 =~ /^0*20208828828208A20A08A28AC$/){print "ok $n\n";} else {print "not ok $n\n";}$n++;$str2 = $vec1->to_Enum();if ($str2 eq"2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97"){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec2->from_Hex("20208828828208A20A08A28AC"); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($vec1->equal($vec2)){print "ok $n\n";} else {print "not ok $n\n";}$n++;$vec2->Flip();$str1 ="2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97";eval { $vec2->from_Enum($str1); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($vec1->equal($vec2)){print "ok $n\n";} else {print "not ok $n\n";}$n++;$str2 = "43,4,19,2,12,67,31,11,3,23,29,6-9,79-97,14-16,47,53-59,71,37-41,61";eval { $vec2->from_Enum($str2); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;$str1 = $vec2->to_Enum();$str2 = "2-4,6-9,11,12,14-16,19,23,29,31,37-41,43,47,53-59,61,67,71,79-97";if ($str1 eq $str2){print "ok $n\n";} else {print "not ok $n\n";}$n++;$str1 = $vec2->to_Hex();if ($str1 =~ /^0*3FFFF80882FE08BE0A089DBDC$/){print "ok $n\n";} else {print "not ok $n\n";}$n++;$vec2->Fill();if ($vec2->Norm() == $limit+1){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec2->from_Hex("0000000000000000"); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($vec2->Norm() == 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;$vec2->Fill();if ($vec2->Norm() == $limit+1){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec2->from_Hex("0"); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($vec2->Norm() == 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;$vec2->Fill();if ($vec2->Norm() == $limit+1){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec2->from_Hex(""); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($vec2->Norm() == 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;$vec1 = Bit::Vector->new(64);eval { $vec1->from_Hex("FEDCBA9876543210"); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;$str1 = $vec1->to_Hex();if ($str1 =~ /^0*FEDCBA9876543210$/){print "ok $n\n";} else {print "not ok $n\n";}$n++;$vec2 = Bit::Vector->new(64);eval { $vec2->from_Hex("fedcba9876543210"); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;$str2 = $vec2->to_Hex();if ($str2 =~ /^0*FEDCBA9876543210$/){print "ok $n\n";} else {print "not ok $n\n";}$n++;$vec1 = Bit::Vector->new(32);eval { $vec1->from_Hex("DEADbeef"); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;$str1 = $vec1->to_Hex();if ($str1 =~ /^0*DEADBEEF$/){print "ok $n\n";} else {print "not ok $n\n";}$n++;$vec2 = Bit::Vector->new(36);eval { $vec2->from_Hex("DEAD beef"); };if ($@ =~ /syntax error/){print "ok $n\n";} else {print "not ok $n\n";}$n++;$str2 = $vec2->to_Hex();if ($str2 =~ /^0*00000BEEF$/){print "ok $n\n";} else {print "not ok $n\n";}$n++;$vec1 = Bit::Vector->new(64);eval { $vec1->from_Hex("0000000000000000"); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($vec1->Norm() == 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ($vec1->Size() == 64){print "ok $n\n";} else {print "not ok $n\n";}$n++;$vec2 = Bit::Vector->new(64);eval { $vec2->from_Hex("00000g0000000000"); };if ($@ =~ /syntax error/){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec2->from_Hex(""); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;$vec1 = Bit::Vector->new($limit+1);$str1 = 3.1415926 * 2.0E+7;eval { $vec1->from_Hex($str1); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;$str2 = $vec1->to_Hex();if ($str2 =~ /^0*62831852$/){print "ok $n\n";} else {print "not ok $n\n";}$n++;$vec2 = Bit::Vector->new($limit+1);eval { $vec2->from_Hex($str1); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;$str2 = $vec2->to_Hex();if ($str2 =~ /^0*62831852$/){print "ok $n\n";} else {print "not ok $n\n";}$n++;$str2 = 3.1415926 * 2.0;eval { $vec1->from_Hex($str2); };if ($@ =~ /syntax error/){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec2->from_Hex($str2); };if ($@ =~ /syntax error/){print "ok $n\n";} else {print "not ok $n\n";}$n++;$str1 = "ERRORFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF";# _123456789ABCDEF_123456789ABCDEF_123456789ABCDEF_123456789ABCDEFeval { $vec1->from_Hex($str1); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;$str2 = $vec1->to_Hex();if ($str2 =~ /^0*1FFFFFFFFFFFFFFFFFFFFFFFFF$/){print "ok $n\n";} else {print "not ok $n\n";}$n++;$vec2 = $vec1->Shadow();eval { $vec1->from_Enum("0-$limit"); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;$vec2->Fill();if ($vec1->equal($vec2)){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec1->from_Enum("0..$limit"); };if ($@ =~ /syntax error/){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec1->from_Enum("0,$limit"); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;$vec2->Empty();$vec2->Bit_On(0);$vec2->Bit_On($limit);if ($vec1->equal($vec2)){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec1->from_Enum("0,$limit,"); };if ($@ =~ /syntax error/){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec1->from_Enum("0,\$limit"); };if ($@ =~ /syntax error/){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec1->from_Enum("101-102"); };if ($@ =~ /index out of range/){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec1->from_Enum("100-102"); };if ($@ =~ /index out of range/){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec1->from_Enum("100-99"); };if ($@ =~ /minimum > maximum index/){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec1->from_Enum("100,101"); };if ($@ =~ /index out of range/){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $vec1->from_Enum("101,100"); };if ($@ =~ /index out of range/){print "ok $n\n";} else {print "not ok $n\n";}$n++;@first = ('', '1', '3', '7');for ( $bits = 0; $bits <= 129; $bits++ ){ $vec = Bit::Vector->new($bits); $vec->Fill(); if ($vec->to_Hex() eq $first[$bits & 3] . ('F' x ($bits >> 2))) {print "ok $n\n";} else {print "not ok $n\n";} $n++;}__END__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -