Aion

 view release on metacpan or  search on metacpan

t/aion/meta/subroutine.t  view on Meta::CPAN

use common::sense; use open qw/:std :utf8/;  use Carp qw//; use Cwd qw//; use File::Basename qw//; use File::Find qw//; use File::Slurper qw//; use File::Spec qw//; use File::Path qw//; use Scalar::Util qw//;  use Test::More 0.98;  use String::Diff q...
# # NAME
# 
# Aion::Meta::Subroutine - описывает функцию с сигнатурой
# 
# # SYNOPSIS
# 
subtest 'SYNOPSIS' => sub { 
use Aion::Types qw(Int);
use Aion::Meta::Subroutine;

my $subroutine = Aion::Meta::Subroutine->new(
	pkg => 'My::Package',
	subname => 'my_subroutine',
	signature => [Int, Int],
	referent => undef,
);

local ($::_g0 = do {$subroutine->stringify}, $::_e0 = "my_subroutine(Int => Int) of My::Package"); ::ok $::_g0 eq $::_e0, '$subroutine->stringify  # => my_subroutine(Int => Int) of My::Package' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; ...

# 
# # DESCRIPTION
# 
# Служит для объявления требуемой функции в интерфейсах и обстрактных классах.
# При этом `referent ~~ Undef`.
# 
# А так же создаёт функцию-обёртку проверяющую сигнатуру.
# 
# # SUBROUTINES
# 
# ## new (%args)
# 
# Конструктор.
# 
# ## wrap_sub ()
# 
# Создаёт функцию-обёртку проверяющую сигнатуру.
# 
# ## compare ($subroutine)
# 
# Сверяет свою (ожидаемую) сигнатуру с объявленной у функции в модуле и выбрасывает исключение, если сигнатуры не совпадают.
# 
# ## stringify ()
# 
# Строковое описание функции.
# 
# ## pkg ()
# 
# Возвращает имя пакета, в котором объявлена функция.
# 
# ## subname ()
# 
# Возвращает имя функции.
# 
# ## signature ()
# 
# Возвращает сигнатуру функции.
# 
# ## referent ()
# 
# Возвращает ссылку на оригинальную функцию.



( run in 2.815 seconds using v1.01-cache-2.11-cpan-fe3c2283af0 )