📄 leak.t
字号:
#!/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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -