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

📄 01error.t

📁 source of perl for linux application,
💻 T
字号:
use strict;use warnings;use Carp;BEGIN {    chdir 't' if -d 't';    @INC = qw(. ../lib);}our $db ;{    chdir 't' if -d 't';    if ( ! -d 'DBM_Filter')    {        mkdir 'DBM_Filter', 0777 	    or die "Cannot create directory 'DBM_Filter': $!\n" ;    }}END { rmdir 'DBM_Filter' }sub writeFile{    my $filename = shift ;    my $content = shift;    open F, ">$filename" or croak "Cannot open $filename: $!" ;    print F $content ;    close F;}sub runFilter{    my $name = shift ;    my $filter = shift ;print "# runFilter $name\n" ;    my $filename = "DBM_Filter/$name.pm";    $filter = "package DBM_Filter::$name ;\n$filter"        unless $filter =~ /^\s*package/ ;    writeFile($filename, $filter);    eval { $db->Filter_Push($name) };    unlink $filename;    return $@;}use Test::More tests => 21;BEGIN { use_ok('DBM_Filter') };my $db_file;BEGIN {    use Config;    foreach (qw/ODBM_File SDBM_File NDBM_File GDBM_File DB_File/) {        if ($Config{extensions} =~ /\b$_\b/) {            $db_file = $_;            last;        }    }    use_ok($db_file);};BEGIN { use_ok('Fcntl') };unlink <Op_dbmx*>;END { unlink <Op_dbmx*>; }my %h1 = () ;my %h2 = () ;$db = tie(%h1, $db_file,'Op_dbmx', O_RDWR|O_CREAT, 0640) ;ok $db, "tied to $db_file ok";# Error caseseval { $db->Filter_Push() ; };like $@, qr/^Filter_Push: no parameters present/,        "croak if not parameters passed to Filter_Push";eval { $db->Filter_Push("unknown_class") ; };like $@, qr/^Filter_Push: Cannot Load DBM Filter 'DBM_Filter::unknown_class'/,         "croak on unknown class" ;eval { $db->Filter_Push("Some::unknown_class") ; };like $@, qr/^Filter_Push: Cannot Load DBM Filter 'Some::unknown_class'/,         "croak on unknown fully qualified class" ;eval { $db->Filter_Push('Store') ; };like $@, qr/^Filter_Push: not even params/,        "croak if not passing even number or params to Filter_Push";runFilter('bad1', <<'EOM');    package DBM_Filter::bad1 ;    1;EOMlike $@, qr/^Filter_Push: No methods \(Filter, Fetch or Store\) found in class 'DBM_Filter::bad1'/,        "croak if none of Filter/Fetch/Store in filter" ;runFilter('bad2', <<'EOM');    package DBM_Filter::bad2 ;    sub Filter    {        return 2;    }    1;EOMlike $@, qr/^Filter_Push: 'DBM_Filter::bad2::Filter' did not return a hash reference./,        "croak if Filter doesn't return hash reference" ;runFilter('bad3', <<'EOM');    package DBM_Filter::bad3 ;    sub Filter    {        return { BadKey => sub { } } ;    }    1;EOMlike $@, qr/^Filter_Push: Unknown key 'BadKey'/,        "croak if bad keyword returned from Filter";runFilter('bad4', <<'EOM');    package DBM_Filter::bad4 ;    sub Filter    {        return { Store => "abc" } ;    }    1;EOMlike $@, qr/^Filter_Push: value associated with key 'Store' is not a code reference/,        "croak if not a code reference";runFilter('bad5', <<'EOM');    package DBM_Filter::bad5 ;    sub Filter    {        return { } ;    }    1;EOMlike $@, qr/^Filter_Push: expected both Store & Fetch - got neither/,        "croak if neither fetch or store is present";runFilter('bad6', <<'EOM');    package DBM_Filter::bad6 ;    sub Filter    {        return { Store => sub {} } ;    }    1;EOMlike $@, qr/^Filter_Push: expected both Store & Fetch - got Store/,        "croak if store is present but fetch isn't";runFilter('bad7', <<'EOM');    package DBM_Filter::bad7 ;    sub Filter    {        return { Fetch => sub {} } ;    }    1;EOMlike $@, qr/^Filter_Push: expected both Store & Fetch - got Fetch/,        "croak if fetch is present but store isn't";runFilter('bad8', <<'EOM');    package DBM_Filter::bad8 ;    sub Filter {}    sub Store {}    sub Fetch {}    1;EOMlike $@, qr/^Filter_Push: Can't mix Filter with Store and Fetch in class 'DBM_Filter::bad8'/,        "croak if Fetch, Store and Filter";runFilter('bad9', <<'EOM');    package DBM_Filter::bad9 ;    sub Filter {}    sub Store {}    1;EOMlike $@, qr/^Filter_Push: Can't mix Filter with Store and Fetch in class 'DBM_Filter::bad9'/,        "croak if Store and Filter";runFilter('bad10', <<'EOM');    package DBM_Filter::bad10 ;    sub Filter {}    sub Fetch {}    1;EOMlike $@, qr/^Filter_Push: Can't mix Filter with Store and Fetch in class 'DBM_Filter::bad10'/,        "croak if Fetch and Filter";runFilter('bad11', <<'EOM');    package DBM_Filter::bad11 ;    sub Fetch {}    1;EOMlike $@, qr/^Filter_Push: Missing method 'Store' in class 'DBM_Filter::bad11'/,        "croak if Fetch but no Store";runFilter('bad12', <<'EOM');    package DBM_Filter::bad12 ;    sub Store {}    1;EOMlike $@, qr/^Filter_Push: Missing method 'Fetch' in class 'DBM_Filter::bad12'/,        "croak if Store but no Fetch";undef $db;{    use warnings FATAL => 'untie';    eval { untie %h1 };    is $@, '', "untie without inner references" ;}

⌨️ 快捷键说明

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