File Coverage

blib/lib/Games/Solitaire/Verify/Exception.pm
Criterion Covered Total %
statement 12 16 75.0
branch n/a
condition n/a
subroutine 4 5 80.0
pod n/a
total 16 21 76.1


line stmt bran cond sub pod time code
1             package Games::Solitaire::Verify::Exception;
2             $Games::Solitaire::Verify::Exception::VERSION = '0.2401';
3 12     12   88 use strict;
  12         24  
  12         360  
4 12     12   62 use warnings;
  12         28  
  12         3346  
5              
6              
7             use Exception::Class (
8 12         335 'Games::Solitaire::Verify::Exception',
9             'Games::Solitaire::Verify::Exception::Parse' =>
10             { isa => "Games::Solitaire::Verify::Exception", },
11             'Games::Solitaire::Verify::Exception::Parse::FCS' =>
12             { isa => "Games::Solitaire::Verify::Exception::Parse", },
13             'Games::Solitaire::Verify::Exception::Parse::Card' =>
14             { isa => "Games::Solitaire::Verify::Exception::Parse", },
15             'Games::Solitaire::Verify::Exception::Parse::Card::UnknownRank' =>
16             { isa => "Games::Solitaire::Verify::Exception::Parse::Card", },
17             'Games::Solitaire::Verify::Exception::Parse::Card::UnknownSuit' =>
18             { isa => "Games::Solitaire::Verify::Exception::Parse::Card", },
19             'Games::Solitaire::Verify::Exception::Parse::Column' =>
20             { isa => "Games::Solitaire::Verify::Exception::Parse", },
21             'Games::Solitaire::Verify::Exception::Parse::Column::Prefix' =>
22             { isa => "Games::Solitaire::Verify::Exception::Parse::Column", },
23             'Games::Solitaire::Verify::Exception::Parse::State' =>
24             { isa => "Games::Solitaire::Verify::Exception::Parse", },
25             "Games::Solitaire::Verify::Exception::Parse::State::Foundations" =>
26             { isa => "Games::Solitaire::Verify::Exception::Parse::State", },
27             "Games::Solitaire::Verify::Exception::Parse::State::Freecells" =>
28             { isa => "Games::Solitaire::Verify::Exception::Parse::State", },
29             "Games::Solitaire::Verify::Exception::Parse::State::Column" => {
30             isa => "Games::Solitaire::Verify::Exception::Parse::State",
31             fields => ["index"],
32             },
33             "Games::Solitaire::Verify::Exception::State" => {
34             isa => "Games::Solitaire::Verify::Exception",
35             fields => ["cards"],
36             },
37             "Games::Solitaire::Verify::Exception::State::ExtraCards" => {
38             isa => "Games::Solitaire::Verify::Exception::State",
39             },
40             "Games::Solitaire::Verify::Exception::State::MissingCards" => {
41             isa => "Games::Solitaire::Verify::Exception::State",
42             },
43             "Games::Solitaire::Verify::Exception::State::TooHighRank" => {
44             isa => "Games::Solitaire::Verify::Exception::State",
45             },
46             "Games::Solitaire::Verify::Exception::VariantParams::Param" => {
47             isa => "Games::Solitaire::Verify::Exception",
48             fields => ["value"],
49             },
50             "Games::Solitaire::Verify::Exception::VariantParams::Param::NumDecks" => {
51             isa => "Games::Solitaire::Verify::Exception::VariantParams::Param",
52             },
53             "Games::Solitaire::Verify::Exception::VariantParams::Param::EmptyStacksFill"
54             => {
55             isa => "Games::Solitaire::Verify::Exception::VariantParams::Param",
56             },
57             "Games::Solitaire::Verify::Exception::VariantParams::Param::Stacks" => {
58             isa => "Games::Solitaire::Verify::Exception::VariantParams::Param",
59             },
60             "Games::Solitaire::Verify::Exception::VariantParams::Param::Freecells" => {
61             isa => "Games::Solitaire::Verify::Exception::VariantParams::Param",
62             },
63             "Games::Solitaire::Verify::Exception::VariantParams::Param::SeqMove" => {
64             isa => "Games::Solitaire::Verify::Exception::VariantParams::Param",
65             },
66             "Games::Solitaire::Verify::Exception::VariantParams::Param::SeqBuildBy" =>
67             {
68             isa => "Games::Solitaire::Verify::Exception::VariantParams::Param",
69             },
70             "Games::Solitaire::Verify::Exception::VariantParams::Param::Rules" => {
71             isa => "Games::Solitaire::Verify::Exception::VariantParams::Param",
72             },
73              
74             'Games::Solitaire::Verify::Exception::Variant' => {
75             isa => "Games::Solitaire::Verify::Exception",
76             fields => ["variant"],
77             },
78             'Games::Solitaire::Verify::Exception::Variant::Unknown' =>
79             { isa => "Games::Solitaire::Verify::Exception::Variant", },
80             'Games::Solitaire::Verify::Exception::VerifyMove' => {
81             isa => "Games::Solitaire::Verify::Exception",
82             fields => ["problem"],
83             },
84             'Games::Solitaire::Verify::Exception::Move' => {
85             isa => "Games::Solitaire::Verify::Exception",
86             fields => ["move"],
87             },
88             'Games::Solitaire::Verify::Exception::Move::Variant::Unsupported' =>
89             { isa => "Games::Solitaire::Verify::Exception::Move", },
90             'Games::Solitaire::Verify::Exception::Move::NotEnoughEmpties' =>
91             { isa => "Games::Solitaire::Verify::Exception::Move", },
92             'Games::Solitaire::Verify::Exception::Move::Src' =>
93             { isa => "Games::Solitaire::Verify::Exception::Move", },
94             'Games::Solitaire::Verify::Exception::Move::Src::Col' =>
95             { isa => "Games::Solitaire::Verify::Exception::Move::Src", },
96             'Games::Solitaire::Verify::Exception::Move::Src::Col::NoCards' =>
97             { isa => "Games::Solitaire::Verify::Exception::Move::Src::Col", },
98             'Games::Solitaire::Verify::Exception::Move::Src::Col::NonSequence' => {
99             isa => "Games::Solitaire::Verify::Exception::Move::Src::Col",
100             fields => [qw(pos)],
101             },
102             'Games::Solitaire::Verify::Exception::Move::Src::Col::NotEnoughCards' =>
103             { isa => "Games::Solitaire::Verify::Exception::Move::Src::Col", },
104             'Games::Solitaire::Verify::Exception::Move::Src::Col::NotTrueSeq' =>
105             { isa => "Games::Solitaire::Verify::Exception::Move::Src::Col", },
106             'Games::Solitaire::Verify::Exception::Move::Src::Freecell::Empty' =>
107             { isa => "Games::Solitaire::Verify::Exception::Move::Src", },
108             'Games::Solitaire::Verify::Exception::Move::Dest' =>
109             { isa => "Games::Solitaire::Verify::Exception::Move", },
110             'Games::Solitaire::Verify::Exception::Move::Dest::Foundation' =>
111             { isa => "Games::Solitaire::Verify::Exception::Move::Dest", },
112             'Games::Solitaire::Verify::Exception::Move::Dest::Freecell' =>
113             { isa => "Games::Solitaire::Verify::Exception::Move::Dest", },
114             'Games::Solitaire::Verify::Exception::Move::Dest::Col' =>
115             { isa => "Games::Solitaire::Verify::Exception::Move::Dest", },
116             'Games::Solitaire::Verify::Exception::Move::Dest::Col::NonMatchSuits' => {
117             isa => "Games::Solitaire::Verify::Exception::Move::Dest::Col",
118             fields => [qw(seq_build_by)],
119             },
120             'Games::Solitaire::Verify::Exception::Move::Dest::Col::OnlyKingsCanFillEmpty'
121             => { isa => "Games::Solitaire::Verify::Exception::Move::Dest::Col", },
122             'Games::Solitaire::Verify::Exception::Move::Dest::Col::RankMismatch' =>
123             { isa => "Games::Solitaire::Verify::Exception::Move::Dest::Col", },
124              
125 12     12   6647 );
  12         123097  
126              
127             package Games::Solitaire::Verify::Exception;
128              
129             use overload q#""# => sub {
130 0     0     my $self = shift;
131 0           my $err = $self->error();
132 0           $err =~ s/([^\n])\z/$1\n/ms;
133 0           return $err;
134 12     12   135835 };
  12         29  
  12         95  
135              
136              
137              
138              
139             1; # End of Games::Solitaire::Verify::Exception
140              
141             __END__