leak.t

来自「source of perl for linux application,」· T 代码 · 共 88 行

T
88
字号
#!/usr/bin/perl -w# Test for memory leaks.# XXX TODO: This test file doesn't actually seem to work! If you remove# the sv_2mortal() in the XS file, it still happily passes all tests...use Test::More;use strict;BEGIN  {  $| = 1;  chdir 't' if -d 't';  unshift @INC, ('../lib', '../blib/arch');	# for running manually  plan tests => 22;  }use Math::BigInt::FastCalc;#############################################################################package Math::BigInt::FastCalc::LeakCheck;use base qw(Math::BigInt::FastCalc);my $destroyed = 0;sub DESTROY { $destroyed++; }#############################################################################package main;for my $method (qw(_zero _one _two _ten))  {  $destroyed = 0;    {    my $num = Math::BigInt::FastCalc::LeakCheck->$method();    bless $num, "Math::BigInt::FastCalc::LeakCheck";    }  is ($destroyed, 1, "$method does not leak memory");  }my $num = Math::BigInt::FastCalc->_zero();for my $method (qw(_is_zero _is_one _is_two _is_ten _num))  {  $destroyed = 0;    {    my $rc = Math::BigInt::FastCalc->$method($num);    bless \$rc, "Math::BigInt::FastCalc::LeakCheck";    }  is ($destroyed, 1, "$method does not leak memory");  }my $num_10 = Math::BigInt::FastCalc->_ten();my $num_2 = Math::BigInt::FastCalc->_two();my $num_long   = Math::BigInt::FastCalc->_new("1234567890");my $num_long_2 = Math::BigInt::FastCalc->_new("12345678900987654321");is (Math::BigInt::FastCalc->_str($num_long), "1234567890");is (Math::BigInt::FastCalc->_str($num_long_2), "12345678900987654321");# to hit all possible code branches_test_acmp($num, $num);_test_acmp($num_10, $num_10);_test_acmp($num, $num_10);_test_acmp($num_10, $num);_test_acmp($num, $num_2);_test_acmp($num_2, $num);_test_acmp($num_long, $num);_test_acmp($num, $num_long);_test_acmp($num_long, $num_long);_test_acmp($num_long, $num_long_2);_test_acmp($num_long_2, $num_long);sub _test_acmp  {  my ($n1,$n2) = @_;  $destroyed = 0;    {    my $rc = Math::BigInt::FastCalc->_acmp($n1,$n2);    bless \$rc, "Math::BigInt::FastCalc::LeakCheck";    }  my $n_1 = Math::BigInt::FastCalc->_str($n1);  my $n_2 = Math::BigInt::FastCalc->_str($n2);  is ($destroyed, 1, "_acmp($n_1,$n_2) does not leak memory");  }

⌨️ 快捷键说明

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