File Coverage

blib/lib/Games/Solitaire/Verify/Exception.pm
Criterion Covered Total %
statement 13 17 76.4
branch n/a
condition n/a
subroutine 5 6 83.3
pod n/a
total 18 23 78.2


line stmt bran cond sub pod time code
1             package Games::Solitaire::Verify::Exception;
2             $Games::Solitaire::Verify::Exception::VERSION = '0.2402';
3 12     12   87 use strict;
  12         23  
  12         368  
4 12     12   64 use warnings;
  12         24  
  12         3295  
5              
6              
7             use Exception::Class (
8 12         363 '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   6685 );
  12         123571  
126              
127             package Games::Solitaire::Verify::Exception;
128              
129             use overload q#""# => sub {
130 0     0   0 my $self = shift;
131 0         0 my $err = $self->error();
132 0         0 $err =~ s/([^\n])\z/$1\n/ms;
133 0         0 return $err;
134             },
135 54     54   9014 'bool' => sub { return 1; },
136 12     12   137279 'fallback' => 1;
  12         35  
  12         117  
137              
138              
139              
140              
141             1; # End of Games::Solitaire::Verify::Exception
142              
143             __END__