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

📄 calling.t

📁 source of perl for linux application,
💻 T
字号:
#!/usr/bin/perl -w# test calling conventions, and :constant overloadinguse strict;use Test;BEGIN   {  $| = 1;  # to locate the testing files  my $location = $0; $location =~ s/calling.t//i;  if ($ENV{PERL_CORE})    {    # testing with the core distribution    @INC = qw(../lib lib);    }  else    {    unshift @INC, '../lib';    }  if (-d 't')    {    chdir 't';    require File::Spec;    unshift @INC, File::Spec->catdir(File::Spec->updir, $location);    }  else    {    unshift @INC, $location;    }  print "# INC = @INC\n";  my $tests = 160;  plan tests => $tests;  if ($] < 5.006)    {    for (1..$tests) { skip (1,'Not supported on older Perls'); }    exit;    }  }package Math::BigInt::Test;use Math::BigInt;use vars qw/@ISA/;@ISA = qw/Math::BigInt/;		# child of MBIuse overload;package Math::BigFloat::Test;use Math::BigFloat;use vars qw/@ISA/;@ISA = qw/Math::BigFloat/;		# child of MBIuse overload;package main;use Math::BigInt try => 'Calc';use Math::BigFloat;my ($x,$y,$z,$u);my $version = '1.76';	# adjust manually to match latest release################################################################################ check whether op's accept normal strings, even when inherited by subclasses# do one positive and one negative test to avoid false positives by "accident"my ($func,@args,$ans,$rc,$class,$try);while (<DATA>)  {  $_ =~ s/[\n\r]//g;	# remove newlines  next if /^#/; # skip comments  if (s/^&//)    {    $func = $_;    }  else    {    @args = split(/:/,$_,99);    $ans = pop @args;    foreach $class (qw/      Math::BigInt Math::BigFloat Math::BigInt::Test Math::BigFloat::Test/)      {      $try = "'$args[0]'"; 			# quote it      $try = $args[0] if $args[0] =~ /'/;	# already quoted      $try = '' if $args[0] eq '';		# undef, no argument      $try = "$class\->$func($try);";      $rc = eval $try;      print "# Tried: '$try'\n" if !ok ($rc, $ans);      }    }   }$class = 'Math::BigInt';# XXX TODO this test does not work/fail.# test whether use Math::BigInt qw/version/ works#$try = "use $class ($version.'1');";#$try .= ' $x = $class->new(123); $x = "$x";';#eval $try;#ok_undef ( $x );               # should result in error!# test whether fallback to calc works$try = "use $class ($version,'try','foo, bar , ');";$try .= "$class\->config()->{lib};";$ans = eval $try;ok ( $ans =~ /^Math::BigInt::(Fast)?Calc\z/, 1);# test whether constant works or not, also test for qw($version)# bgcd() is present in subclass, too$try = "use Math::BigInt ($version,'bgcd',':constant');";$try .= ' $x = 2**150; bgcd($x); $x = "$x";';$ans = eval $try;ok ( $ans, "1427247692705959881058285969449495136382746624");# test wether Math::BigInt::Scalar via use works (w/ dff. spellings of calc)$try = "use $class ($version,'lib','Scalar');";$try .= ' $x = 2**10; $x = "$x";';$ans = eval $try; ok ( $ans, "1024");$try = "use $class ($version,'lib','$class\::Scalar');";$try .= ' $x = 2**10; $x = "$x";';$ans = eval $try; ok ( $ans, "1024");# all done__END__&is_zero1:00:1&is_one1:10:0&is_positive1:1-1:0&is_negative1:0-1:1&is_nanabc:11:0&is_infinf:10:0&bstr5:510:10-10:-10abc:NaN'+inf':inf'-inf':-inf&bsstr1:1e+00:0e+12:2e+0200:2e+2-5:-5e+0-100:-1e+2abc:NaN'+inf':inf&babs-1:11:1&bnot-2:11:-2&bzero:0&bnan:NaNabc:NaN&bone:1'+':1'-':-1&binf:inf'+':inf'-':-inf

⌨️ 快捷键说明

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