Acme-CoC-Dice
view release on metacpan or search on metacpan
t/01_role.t view on Meta::CPAN
use strict;
use warnings;
use utf8;
use Acme::CoC::Dice;
use Acme::CoC::Util;
use Test2::V0;
use Module::Spy;
my $target = 'Acme::CoC::Dice';
subtest '#role' => sub {
subtest 'normal calling' => sub {
my $spy_role_skill = spy_on($target, 'role_skill')->and_call_through;
$spy_role_skill->calls_reset;
my $result = $target->role('1d100');
is @{ $result->{dices} }, 1;
for my $item (@{ $result->{dices} }) {
ok $item >= 1 && $item <= 100, "1 <= result <= 100: $item";
ok !$spy_role_skill->called, 'role_skill was not called';
}
$spy_role_skill->calls_reset;
$result = $target->role('10d10');
is @{ $result->{dices} }, 10;
for my $item (@{ $result->{dices} }) {
ok $item >= 1 && $item <= 10, "1 <= result <= 10: $item";
ok !$spy_role_skill->called, 'role_skill was not called';
}
};
subtest 'ccb calling' => sub {
my $spy_role_skill = spy_on($target, 'role_skill')->and_call_through;
$spy_role_skill->calls_reset;
my $result = $target->role('skill');
is @{ $result->{dices} }, 1;
for my $dice (@{ $result->{dices} }) {
ok $spy_role_skill, 'role_skill was called';
}
$spy_role_skill->calls_reset;
$result = $target->role('ccb 60');
is @{ $result->{dices} }, 1;
for my $dice (@{ $result->{dices} }) {
ok $spy_role_skill, 'role_skill was called';
}
ok $result->{result};
ok eq_any($result->{result}, ['extream success', 'hard success', 'normal success', 'failed']);
$spy_role_skill->calls_reset;
$result = $target->role('cc 60');
is @{ $result->{dices} }, 1;
for my $dice (@{ $result->{dices} }) {
ok $spy_role_skill, 'role_skill was called';
}
ok $result->{result};
ok eq_any($result->{result}, ['extream success', 'hard success', 'normal success', 'failed']);
};
};
( run in 2.244 seconds using v1.01-cache-2.11-cpan-364913b4093 )