-
Notifications
You must be signed in to change notification settings - Fork 0
/
dice.t
54 lines (37 loc) · 1.34 KB
/
dice.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
use strict;
use warnings;
use Test::More;
use Data::Dumper;
use Games::Opoly::UI::Test;
use_ok('Games::Opoly::Dice');
my $dice = Games::Opoly::Dice->new;
isa_ok( $dice, 'Games::Opoly::Dice' );
{
my %rolls;
my $sum;
map { $rolls{$_}++ } map { $dice->roll_one } (1..6000);
is_deeply( [sort keys %rolls], [ 1 .. 6 ], 'Die rolls 1-6' );
$sum += $_ for values %rolls;
is( $sum, 6000, 'total number of dice thrown is correct' );
my @test = map { $_ > 800 and $_ < 1200 } values %rolls;
is_deeply( \@test, [ map { 1 } (1..6) ], 'All values thrown between 800 and 1200 times (6000 total)' );
}
{
my %rolls;
my $sum;
map { $rolls{$_}++ } map { $dice->roll_two } (1..6000);
is_deeply( [sort keys %rolls], [ 1 .. 6 ], 'Die rolls 1-6' );
$sum += $_ for values %rolls;
is( $sum, 12000, 'total number of dice thrown is correct' );
my @test = map { $_ > 1600 and $_ < 2400 } values %rolls;
is_deeply( \@test, [ map { 1 } (1..6) ], 'All values thrown between 1600 and 2400 times (6000 total rolls of two dice)' );
}
{
my $ui = Games::Opoly::UI::Test->new();
my $loaded = Games::Opoly::Dice::Loaded->new( ui => $ui );
isa_ok( $loaded, 'Games::Opoly::Dice' );
isa_ok( $loaded, 'Games::Opoly::Dice::Loaded' );
$ui->user_input('26');
is_deeply( [$loaded->roll_two], [2, 6], 'Loaded dice respond to user input');
}
done_testing;