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   35 use strict;
  6         9  
  6         144  
4 6     6   24 use warnings;
  6         10  
  6         119  
5 6     6   24 use Carp;
  6         8  
  6         286  
6              
7 6     6   31 use Woothee::Util qw/update_map update_category update_version update_os update_os_version/;
  6         8  
  6         251  
8 6     6   34 use Woothee::DataSet qw/dataset/;
  6         10  
  6         3267  
9              
10             our $VERSION = "1.8.0";
11              
12             sub challenge_playstation {
13 255     255 0 391 my ($ua, $result) = @_;
14              
15 255         338 my $data;
16             my $os_version;
17              
18 255 100 100     1541 if (index($ua, "PSP (PlayStation Portable);") > -1) {
    100          
    100          
    100          
19 3 50       27 if ($ua =~ m!PSP \(PlayStation Portable\); ([.0-9]+)\)!) {
20 3         11 $os_version = $1;
21             }
22 3         9 $data = dataset("PSP");
23             }
24             elsif (index($ua, "PlayStation Vita") > -1) {
25 3 50       33 if ($ua =~ m!PlayStation Vita ([.0-9]+)\)!) {
26 3         10 $os_version = $1;
27             }
28 3         8 $data = dataset("PSVita");
29             }
30             elsif (index($ua, "PLAYSTATION 3 ") > -1 || index($ua, "PLAYSTATION 3;") > -1) {
31 6 50       46 if ($ua =~ m!PLAYSTATION 3;? ([.0-9]+)\)!) {
32 6         15 $os_version = $1;
33             }
34 6         14 $data = dataset("PS3");
35             }
36             elsif (index($ua, "PlayStation 4 ") > -1) {
37 3 50       29 if ($ua =~ m!PlayStation 4 ([.0-9]+)\)!) {
38 3         10 $os_version = $1;
39             }
40 3         8 $data = dataset("PS4");
41             }
42              
43 255 100       671 return 0 unless $data;
44              
45 15         42 update_map($result, $data);
46 15 50       33 if ($os_version) {
47 15         29 update_os_version($result, $os_version);
48             }
49 15         43 return 1;
50             }
51              
52             sub challenge_nintendo {
53 240     240 0 361 my ($ua, $result) = @_;
54              
55 240         264 my $data;
56              
57 240 100       1044 if (index($ua, "Nintendo 3DS;") > -1) {
    50          
    50          
    100          
58 3         12 $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         9 $data = dataset("NintendoWiiU");
68             }
69              
70 240 100       595 return 0 unless $data;
71              
72 6         23 update_map($result, $data);
73 6         18 return 1;
74             }
75              
76             # for Xbox Series, see OS.pm (Windows)
77              
78             sub challenge_digitaltv {
79 234     234 0 334 my ($ua, $result) = @_;
80              
81 234         265 my $data;
82              
83 234 100       481 if (index($ua, "InettvBrowser/") > -1) {
84 12         38 $data = dataset("DigitalTV");
85             }
86              
87 234 100       558 return 0 unless $data;
88              
89 12         32 update_map($result, $data);
90 12         40 return 1;
91             }
92              
93             1;
94              
95             __END__