File Coverage

blib/lib/Woothee/Appliance.pm
Criterion Covered Total %
statement 50 52 96.1
branch 27 34 79.4
condition 3 3 100.0
subroutine 8 8 100.0
pod 0 3 0.0
total 88 100 88.0


line stmt bran cond sub pod time code
1             package Woothee::Appliance;
2              
3 6     6   40 use strict;
  6         13  
  6         192  
4 6     6   32 use warnings;
  6         13  
  6         159  
5 6     6   29 use Carp;
  6         11  
  6         340  
6              
7 6     6   33 use Woothee::Util qw/update_map update_category update_version update_os update_os_version/;
  6         11  
  6         329  
8 6     6   34 use Woothee::DataSet qw/dataset/;
  6         11  
  6         3814  
9              
10             our $VERSION = "v1.10.0";
11              
12             sub challenge_playstation {
13 255     255 0 508 my ($ua, $result) = @_;
14              
15 255         397 my $data;
16             my $os_version;
17              
18 255 100 100     1819 if (index($ua, "PSP (PlayStation Portable);") > -1) {
    100          
    100          
    100          
19 3 50       32 if ($ua =~ m!PSP \(PlayStation Portable\); ([.0-9]+)\)!) {
20 3         10 $os_version = $1;
21             }
22 3         44 $data = dataset("PSP");
23             }
24             elsif (index($ua, "PlayStation Vita") > -1) {
25 3 50       31 if ($ua =~ m!PlayStation Vita ([.0-9]+)\)!) {
26 3         11 $os_version = $1;
27             }
28 3         9 $data = dataset("PSVita");
29             }
30             elsif (index($ua, "PLAYSTATION 3 ") > -1 || index($ua, "PLAYSTATION 3;") > -1) {
31 6 50       54 if ($ua =~ m!PLAYSTATION 3;? ([.0-9]+)\)!) {
32 6         18 $os_version = $1;
33             }
34 6         17 $data = dataset("PS3");
35             }
36             elsif (index($ua, "PlayStation 4 ") > -1) {
37 3 50       31 if ($ua =~ m!PlayStation 4 ([.0-9]+)\)!) {
38 3         12 $os_version = $1;
39             }
40 3         11 $data = dataset("PS4");
41             }
42              
43 255 100       791 return 0 unless $data;
44              
45 15         49 update_map($result, $data);
46 15 50       39 if ($os_version) {
47 15         38 update_os_version($result, $os_version);
48             }
49 15         53 return 1;
50             }
51              
52             sub challenge_nintendo {
53 240     240 0 437 my ($ua, $result) = @_;
54              
55 240         329 my $data;
56              
57 240 100       1217 if (index($ua, "Nintendo 3DS;") > -1) {
    50          
    50          
    100          
58 3         13 $data = dataset("Nintendo3DS");
59             }
60             elsif (index($ua, "Nintendo DSi;") > -1) {
61 0         0 $data = dataset("NintendoDSi");
62             }
63             elsif (index($ua, "Nintendo Wii;") > -1) {
64 0         0 $data = dataset("NintendoWii");
65             }
66             elsif (index($ua, "(Nintendo WiiU)") > -1) {
67 3         11 $data = dataset("NintendoWiiU");
68             }
69              
70 240 100       727 return 0 unless $data;
71              
72 6         34 update_map($result, $data);
73 6         21 return 1;
74             }
75              
76             # for Xbox Series, see OS.pm (Windows)
77              
78             sub challenge_digitaltv {
79 234     234 0 403 my ($ua, $result) = @_;
80              
81 234         309 my $data;
82              
83 234 100       600 if (index($ua, "InettvBrowser/") > -1) {
84 12         33 $data = dataset("DigitalTV");
85             }
86              
87 234 100       675 return 0 unless $data;
88              
89 12         43 update_map($result, $data);
90 12         40 return 1;
91             }
92              
93             1;
94              
95             __END__