⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 01________new.t

📁 SinFP是一种新的识别对方计算机操作系统类型的工具
💻 T
字号:
#!perl -wuse strict;no strict "vars";use integer;use Bit::Vector;@ISA = qw(Bit::Vector);# ======================================================================#   $set = Bit::Vector::new('Bit::Vector',$elements);# ======================================================================print "1..131\n";$n = 1;# test if the constructor works at all:$set = Bit::Vector::new('Bit::Vector',1);if (defined $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (ref($set) eq 'Bit::Vector'){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (${$set} != 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;# test if the constructor handles NULL pointers as expected:eval { $ref = Bit::Vector::new('Bit::Vector',0); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;# test if the copy of an object reference works as expected:$ref = $set;if (defined $ref){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (ref($ref) eq 'Bit::Vector'){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (${$ref} != 0){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++;# test the constructor with a large set (13,983,816 elements):$set = Bit::Vector::new('Bit::Vector',&binomial(49,6));if (defined $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (ref($set) eq 'Bit::Vector'){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (${$set} != 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;# are the two sets really distinct and set objects behaving as expected?if (${$ref} != ${$set}){print "ok $n\n";} else {print "not ok $n\n";}$n++;# are set objects behaving as expected, i.e. are they write-protected?eval { ${$set} = 0x00088850; };if ($@ =~ /Modification of a read-only value attempted/){print "ok $n\n";} else {print "not ok $n\n";}$n++;$set = 0x00088850;if ($set == 559184){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { ${$ref} = 0x000E9CE0; };if ($@ =~ /Modification of a read-only value attempted/){print "ok $n\n";} else {print "not ok $n\n";}$n++;$ref = 0x000E9CE0;if ($ref == 957664){print "ok $n\n";} else {print "not ok $n\n";}$n++;# test various ways of calling the constructor:# 1: $set = Bit::Vector::new('Bit::Vector',1);# 2: $class = 'Bit::Vector'; $set = Bit::Vector::new($class,2);# 3: $set = new Bit::Vector(3);# 4: $set = Bit::Vector->new(4);# 5: $ref = $set->new(5);# 6: $set = $set->new(6);# (test case #1 has been handled above)# test case #2:$class = 'Bit::Vector';$set = Bit::Vector::new($class,2);if (defined $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (ref($set) eq 'Bit::Vector'){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (${$set} != 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;# test case #3:$ref = new Bit::Vector(3);if (defined $ref){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (ref($ref) eq 'Bit::Vector'){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (${$ref} != 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;# coherence test:if (${$ref} != ${$set}){print "ok $n\n";} else {print "not ok $n\n";}$n++;# test case #4:$set = Bit::Vector->new(4);if (defined $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (ref($set) eq 'Bit::Vector'){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (${$set} != 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;# coherence test:if (${$ref} != ${$set}){print "ok $n\n";} else {print "not ok $n\n";}$n++;# prepare possibility for id check:$old = ${$set};if (${$set} == $old){print "ok $n\n";} else {print "not ok $n\n";}$n++;# test case #5:$ref = $set->new(5);if (defined $ref){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (ref($ref) eq 'Bit::Vector'){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (${$ref} != 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;# coherence tests:if (defined $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (ref($set) eq 'Bit::Vector'){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (${$set} != 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (${$set} == $old){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++;# prepare exact copy of object reference:$ref = $set;if (defined $ref){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (ref($ref) eq 'Bit::Vector'){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (${$ref} != 0){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} == $old){print "ok $n\n";} else {print "not ok $n\n";}$n++;# test case #6 (pseudo auto-destruction test):$set = $set->new(6);if (defined $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (ref($set) eq 'Bit::Vector'){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (${$set} != 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;# coherence tests:if (defined $ref){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (ref($ref) eq 'Bit::Vector'){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (${$ref} != 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (${$ref} == $old){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++;# auto-destruction test:$set = $set->new(7);if (defined $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (ref($set) eq 'Bit::Vector'){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (${$set} != 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;# coherence test:if (${$ref} != ${$set}){print "ok $n\n";} else {print "not ok $n\n";}$n++;# test weird ways of calling the constructor:eval { $set = Bit::Vector::new("",8); };if (ref($set) eq 'Bit::Vector'){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $set = Bit::Vector::new('',9); };if (ref($set) eq 'Bit::Vector'){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $set = Bit::Vector::new(undef,10); };if (ref($set) eq 'Bit::Vector'){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $set = Bit::Vector::new(6502,11); };if (ref($set) eq 'Bit::Vector'){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $set = Bit::Vector::new('main',12); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (defined $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ( (ref($set) eq 'main') || (ref($set) eq 'Bit::Vector') ){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (${$set} != 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $set = 0; };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $set = Bit::Vector::new('nonsense',13); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (defined $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ( (ref($set) eq 'nonsense') || (ref($set) eq 'Bit::Vector') ){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (${$set} != 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $set = 0; };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $set = new main(14); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (defined $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ( (ref($set) eq 'main') || (ref($set) eq 'Bit::Vector') ){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (${$set} != 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $set = 0; };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;@parameters = ( 'main', 15 );eval { $set = Bit::Vector::new(@parameters); };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (defined $set){print "ok $n\n";} else {print "not ok $n\n";}$n++;if ( (ref($set) eq 'main') || (ref($set) eq 'Bit::Vector') ){print "ok $n\n";} else {print "not ok $n\n";}$n++;if (${$set} != 0){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $set = 0; };unless ($@){print "ok $n\n";} else {print "not ok $n\n";}$n++;# test syntactically incorrect constructor calls:eval { $set = Bit::Vector::new(16); };if ($@ =~ /Usage: new\(class,bits\[,count\]\)/){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $set = Bit::Vector::new('main'); };if ($@ =~ /Usage: new\(class,bits\[,count\]\)/){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $set = Bit::Vector::new($set); };if ($@ =~ /Usage: new\(class,bits\[,count\]\)/){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $set = Bit::Vector::new('main',17,1,0); };if ($@ =~ /Usage: new\(class,bits\[,count\]\)/){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $set = Bit::Vector::Create($set,'main',18,0); };if ($@ =~ /Usage: Create\(class,bits\[,count\]\)/){print "ok $n\n";} else {print "not ok $n\n";}$n++;eval { $set = Bit::Vector::new($set,19,'main',0); };if ($@ =~ /Usage: new\(class,bits\[,count\]\)/){print "ok $n\n";} else {print "not ok $n\n";}$n++;# test if size is correct:for ( $i = 1; $i <= 16; $i++ ){    $k = int(2 ** $i + 0.5);    for ( $j = $k-1; $j <= $k+1; $j++ )    {        $set = Bit::Vector->new($j);        if ($set->Size() == $j)        {print "ok $n\n";} else {print "not ok $n\n";}        $n++;    }}exit;sub binomial{    my($n,$k) = @_;    my($prod) = 1;    my($j) = 0;    if (($n <= 0) || ($k <= 0) || ($n <= $k)) { return(1); }    if ($k > $n - $k) { $k = $n - $k; }    while ($j < $k)    {        $prod *= $n--;        $prod /= ++$j;    }    return(int($prod + 0.5));}__END__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -