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

📄 module.pm

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 PM
字号:
package Test::Builder::Module;use Test::Builder;require Exporter;@ISA = qw(Exporter);$VERSION = '0.74';use strict;# 5.004's Exporter doesn't have export_to_level.my $_export_to_level = sub {      my $pkg = shift;      my $level = shift;      (undef) = shift;                  # redundant arg      my $callpkg = caller($level);      $pkg->export($callpkg, @_);};=head1 NAMETest::Builder::Module - Base class for test modules=head1 SYNOPSIS  # Emulates Test::Simple  package Your::Module;  my $CLASS = __PACKAGE__;  use base 'Test::Builder::Module';  @EXPORT = qw(ok);  sub ok ($;$) {      my $tb = $CLASS->builder;      return $tb->ok(@_);  }    1;=head1 DESCRIPTIONThis is a superclass for Test::Builder-based modules.  It provides ahandful of common functionality and a method of getting at the underlyingTest::Builder object.=head2 ImportingTest::Builder::Module is a subclass of Exporter which means yourmodule is also a subclass of Exporter.  @EXPORT, @EXPORT_OK, etc...all act normally.A few methods are provided to do the C<use Your::Module tests => 23> partfor you.=head3 importTest::Builder::Module provides an import() method which acts in thesame basic way as Test::More's, setting the plan and controlingexporting of functions and variables.  This allows your module to setthe plan independent of Test::More.All arguments passed to import() are passed onto C<< Your::Module->builder->plan() >> with the exception of C<import =>[qw(things to import)]>.    use Your::Module import => [qw(this that)], tests => 23;says to import the functions this() and that() as well as set the planto be 23 tests.import() also sets the exported_to() attribute of your builder to bethe caller of the import() function.Additional behaviors can be added to your import() method by overridingimport_extra().=cutsub import {    my($class) = shift;    my $test = $class->builder;    my $caller = caller;    $test->exported_to($caller);    $class->import_extra(\@_);    my(@imports) = $class->_strip_imports(\@_);    $test->plan(@_);    $class->$_export_to_level(1, $class, @imports);}sub _strip_imports {    my $class = shift;    my $list  = shift;    my @imports = ();    my @other   = ();    my $idx = 0;    while( $idx <= $#{$list} ) {        my $item = $list->[$idx];        if( defined $item and $item eq 'import' ) {            push @imports, @{$list->[$idx+1]};            $idx++;        }        else {            push @other, $item;        }        $idx++;    }    @$list = @other;    return @imports;}=head3 import_extra    Your::Module->import_extra(\@import_args);import_extra() is called by import().  It provides an opportunity for youto add behaviors to your module based on its import list.Any extra arguments which shouldn't be passed on to plan() should be stripped off by this method.See Test::More for an example of its use.B<NOTE> This mechanism is I<VERY ALPHA AND LIKELY TO CHANGE> as itfeels like a bit of an ugly hack in its current form.=cutsub import_extra {}=head2 BuilderTest::Builder::Module provides some methods of getting at the underlyingTest::Builder object.=head3 builder  my $builder = Your::Class->builder;This method returns the Test::Builder object associated with Your::Class.It is not a constructor so you can call it as often as you like.This is the preferred way to get the Test::Builder object.  You shouldI<not> get it via C<< Test::Builder->new >> as was previouslyrecommended.The object returned by builder() may change at runtime so you shouldcall builder() inside each function rather than store it in a global.  sub ok {      my $builder = Your::Class->builder;      return $builder->ok(@_);  }=cutsub builder {    return Test::Builder->new;}1;

⌨️ 快捷键说明

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