Aion-Enum

 view release on metacpan or  search on metacpan

t/aion/enum.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;  BEGIN { 	$SIG{__DI...
# # NAME
# 
# Aion::Enum - перечисления в стиле ООП, когда каждое перечсление является объектом
# 
# # VERSION
# 
# 0.0.2
# 
# # SYNOPSIS
# 
# Файл lib/StatusEnum.pm:
#@> lib/StatusEnum.pm
#>> package StatusEnum;
#>> 
#>> use Aion::Enum;
#>> 
#>> # Active status
#>> case active => 1, 'Active';
#>> 
#>> # Passive status
#>> case passive => 2, 'Passive';
#>> 
#>> 1;
#@< EOF
# 
subtest 'SYNOPSIS' => sub { 
use StatusEnum;

::is scalar do {&StatusEnum::active->does('Aion::Enum')}, "1", '&StatusEnum::active->does(\'Aion::Enum\') # => 1';

::is scalar do {StatusEnum->active->name}, "active", 'StatusEnum->active->name   # => active';
::is scalar do {StatusEnum->passive->value}, "2", 'StatusEnum->passive->value # => 2';
::is scalar do {StatusEnum->active->alias}, "Active status", 'StatusEnum->active->alias  # => Active status';
::is scalar do {StatusEnum->passive->stash}, "Passive", 'StatusEnum->passive->stash # => Passive';

::is_deeply scalar do {[ StatusEnum->cases   ]}, scalar do {[StatusEnum->active, StatusEnum->passive]}, '[ StatusEnum->cases   ] # --> [StatusEnum->active, StatusEnum->passive]';
::is_deeply scalar do {[ StatusEnum->names   ]}, scalar do {[qw/active passive/]}, '[ StatusEnum->names   ] # --> [qw/active passive/]';
::is_deeply scalar do {[ StatusEnum->values  ]}, scalar do {[qw/1 2/]}, '[ StatusEnum->values  ] # --> [qw/1 2/]';
::is_deeply scalar do {[ StatusEnum->aliases ]}, scalar do {['Active status', 'Passive status']}, '[ StatusEnum->aliases ] # --> [\'Active status\', \'Passive status\']';
::is_deeply scalar do {[ StatusEnum->stashes ]}, scalar do {[qw/Active Passive/]}, '[ StatusEnum->stashes ] # --> [qw/Active Passive/]';

# 
# # DESCRIPTION
# 
# `Aion::Enum` позволяет создавать перечисления-объекты. Данные перечисления могут содержать дополнительные методы и свойства. В них можно до...
# 
# Важной особенностью является сохранение порядка перечисления.
# 
# `Aion::Enum` подобен перечислениям из php8, но имеет дополнительные свойства `alias` и `stash`.
# 
# # SUBROUTINES
# 
# ## case ($name, [$value, [$stash]])
# 
# Создаёт перечисление: его константу.
# 
::done_testing; }; subtest 'case ($name, [$value, [$stash]])' => sub { 
package OrderEnum {
    use Aion::Enum;



( run in 2.016 seconds using v1.01-cache-2.11-cpan-d8267643d1d )