| 1 | use strict; |
|---|
| 2 | use Test::More tests => 910; |
|---|
| 3 | |
|---|
| 4 | BEGIN { use_ok 'HTTP::MobileAgent' } |
|---|
| 5 | |
|---|
| 6 | my @Tests = ( |
|---|
| 7 | # ua, version, html_version, model, cache_size, is_foma, vendor, series, options, xhtml_compliant |
|---|
| 8 | [ "DoCoMo/1.0/D501i", '1.0', '1.0', 'D501i', 5, undef, 'D', '501i', {}, 0 ], |
|---|
| 9 | [ "DoCoMo/1.0/D502i", '1.0', '2.0', 'D502i', 5, undef, 'D', '502i', {}, 0 ], |
|---|
| 10 | [ "DoCoMo/1.0/D502i/c10", '1.0', '2.0', 'D502i', 10, undef, 'D', '502i', {}, 0 ], |
|---|
| 11 | [ "DoCoMo/1.0/D210i/c10", '1.0', '3.0', 'D210i', 10, undef, 'D', '210i', {}, 0 ], |
|---|
| 12 | [ "DoCoMo/1.0/SO503i/c10", '1.0', '3.0', 'SO503i', 10, undef, 'SO', '503i', {}, 0 ], |
|---|
| 13 | [ "DoCoMo/1.0/D211i/c10", '1.0', '3.0', 'D211i', 10, undef, 'D', '211i', {}, 0 ], |
|---|
| 14 | [ "DoCoMo/1.0/SH251i/c10", '1.0', '3.0', 'SH251i', 10, undef, 'SH', '251i', {}, 0 ], |
|---|
| 15 | [ "DoCoMo/1.0/R692i/c10", '1.0', '3.0', 'R692i', 10, undef, 'R', '692i', {}, 0 ], |
|---|
| 16 | [ "DoCoMo/2.0 P2101V(c100)", '2.0', '3.0', 'P2101V', 100, 1, 'P', 'FOMA', {}, 0 ], |
|---|
| 17 | [ "DoCoMo/2.0 N2001(c10)", '2.0', '3.0', 'N2001', 10, 1, 'N', 'FOMA', {}, 0 ], |
|---|
| 18 | [ "DoCoMo/2.0 N2002(c100)", '2.0', '3.0', 'N2002', 100, 1, 'N', 'FOMA', {}, 0 ], |
|---|
| 19 | [ "DoCoMo/2.0 D2101V(c100)", '2.0', '3.0', 'D2101V', 100, 1, 'D', 'FOMA', {}, 0 ], |
|---|
| 20 | [ "DoCoMo/2.0 P2002(c100)", '2.0', '3.0', 'P2002', 100, 1, 'P', 'FOMA', {}, 0 ], |
|---|
| 21 | [ "DoCoMo/2.0 MST_v_SH2101V(c100)", '2.0', '3.0', 'SH2101V', 100, 1, 'SH', 'FOMA', {}, 0 ], |
|---|
| 22 | [ "DoCoMo/2.0 T2101V(c100)", '2.0', '3.0', 'T2101V', 100, 1, 'T', 'FOMA', {}, 0 ], |
|---|
| 23 | [ "DoCoMo/1.0/D504i/c10", '1.0', '4.0', 'D504i', 10, undef, 'D', '504i', {}, 0 ], |
|---|
| 24 | [ "DoCoMo/1.0/D504i/c30/TD", '1.0', '4.0', 'D504i', 30, undef, 'D', '504i', { status => 'TD' }, 0 ], |
|---|
| 25 | [ "DoCoMo/1.0/D504i/c10/TJ", '1.0', '4.0', 'D504i', 10, undef, 'D', '504i', { status => 'TJ' }, 0 ], |
|---|
| 26 | [ "DoCoMo/1.0/F504i/c10/TB", '1.0', '4.0', 'F504i', 10, undef, 'F', '504i', { status => 'TB' }, 0 ], |
|---|
| 27 | [ "DoCoMo/1.0/D251i/c10", '1.0', '4.0', 'D251i', 10, undef, 'D', '251i', {}, 0 ], |
|---|
| 28 | [ "DoCoMo/1.0/F251i/c10/TB", '1.0', '4.0', 'F251i', 10, undef, 'F', '251i', { status => 'TB' }, 0 ], |
|---|
| 29 | [ "DoCoMo/1.0/F671iS/c10/TB", '1.0', '4.0', 'F671iS', 10, undef, 'F', '671i', { status => 'TB' }, 0 ], |
|---|
| 30 | [ "DoCoMo/1.0/P503i/c10/serNMABH200331", '1.0', '3.0', 'P503i', 10, undef, 'P', '503i', { serial_number => 'NMABH200331' }, 0 ], |
|---|
| 31 | [ "DoCoMo/2.0 N2001(c10;ser0123456789abcde;icc01234567890123456789)", |
|---|
| 32 | '2.0', '3.0', 'N2001', 10, 1, 'N', 'FOMA', { serial_number => '0123456789abcde', card_id => '01234567890123456789' }, 0 ], |
|---|
| 33 | [ "DoCoMo/1.0/eggy/c300/s32/kPHS-K", '1.0', '3.2', 'eggy', 300, undef, undef, undef, { bandwidth => 32 }, 0 ], |
|---|
| 34 | [ "DoCoMo/1.0/P751v/c100/s64/kPHS-K", '1.0', '3.2', 'P751v', 100, undef, 'P', undef, { bandwidth => 64 }, 0 ], |
|---|
| 35 | [ "DoCoMo/1.0/P209is (Google CHTML Proxy/1.0)", '1.0', '2.0', 'P209is', 5, undef, 'P', '209i', { comment => 'Google CHTML Proxy/1.0' }, 0 ], |
|---|
| 36 | [ "DoCoMo/1.0/F212i/c10/TB", '1.0', '4.0', 'F212i', 10, undef, 'F', '212i', {}, 0 ], |
|---|
| 37 | [ "DoCoMo/2.0 N2051(c100;TB)", '2.0', '4.0', 'N2051', 100, 1, 'N', 'FOMA', {}, 1 ], |
|---|
| 38 | [ "DoCoMo/1.0/D505i/c20/TC/W20H10", '1.0', '5.0', 'D505i', 20, undef, 'D', '505i', { status => 'TC' }, 0 ], |
|---|
| 39 | [ "DoCoMo/1.0/SH505i2/c20/TB/W20H10", '1.0', '5.0', 'SH505i', 20, undef, 'SH', '505i', { status => 'TB' }, 0 ], |
|---|
| 40 | [ "DoCoMo/1.0/F661i/c10/TB", '1.0', '4.0', 'F661i', 10, undef, 'F', '661i', { is_gps => 1 }, 0 ], |
|---|
| 41 | ); |
|---|
| 42 | |
|---|
| 43 | for (@Tests) { |
|---|
| 44 | my($ua, @data) = @$_; |
|---|
| 45 | my $agent = HTTP::MobileAgent->new($ua); |
|---|
| 46 | isa_ok $agent, 'HTTP::MobileAgent'; |
|---|
| 47 | isa_ok $agent, 'HTTP::MobileAgent::DoCoMo'; |
|---|
| 48 | ok $agent->is_docomo && ! $agent->is_j_phone && !$agent->is_vodafone && ! $agent->is_ezweb; |
|---|
| 49 | is $agent->name, 'DoCoMo'; |
|---|
| 50 | is $agent->user_agent, $ua, "ua is $ua"; |
|---|
| 51 | is $agent->version, $data[0], "version is $data[0]"; |
|---|
| 52 | is $agent->html_version, $data[1], "HTML version is $data[1]"; |
|---|
| 53 | is $agent->model, $data[2], "model is $data[2]"; |
|---|
| 54 | is $agent->cache_size, $data[3], "cache size is $data[3]"; |
|---|
| 55 | is $agent->is_foma, $data[4], "is_foma"; |
|---|
| 56 | is $agent->vendor, $data[5], "vendor"; |
|---|
| 57 | is $agent->series, $data[6], "cache size"; |
|---|
| 58 | is $agent->xhtml_compliant, $data[8], "xhtml compliant $ua"; |
|---|
| 59 | if ($data[7]) { |
|---|
| 60 | is $agent->$_(), $data[7]->{$_},"testing $_" for keys %{$data[7]}; |
|---|
| 61 | } |
|---|
| 62 | is $agent->carrier, 'I' , "carrier is I"; |
|---|
| 63 | is $agent->carrier_longname, 'DoCoMo' , "carrier longname is DoCoMo"; |
|---|
| 64 | |
|---|
| 65 | } |
|---|
| 66 | |
|---|
| 67 | { |
|---|
| 68 | # SH905i is XHTML Compliant. |
|---|
| 69 | local $ENV{HTTP_USER_AGENT} = 'DoCoMo/2.0 SH905i(c100;TB;W24H12)'; |
|---|
| 70 | my $agent = HTTP::MobileAgent->new; |
|---|
| 71 | is $agent->xhtml_compliant, 1; |
|---|
| 72 | } |
|---|
| 73 | |
|---|
| 74 | |
|---|
| 75 | while (<DATA>) { |
|---|
| 76 | next if /^#/; |
|---|
| 77 | chomp; |
|---|
| 78 | local $ENV{HTTP_USER_AGENT} = $_; |
|---|
| 79 | my $agent = HTTP::MobileAgent->new; |
|---|
| 80 | isa_ok $agent, 'HTTP::MobileAgent', "$_"; |
|---|
| 81 | is $agent->name, 'DoCoMo'; |
|---|
| 82 | ok $agent->is_docomo && ! $agent->is_j_phone && ! $agent->is_ezweb; |
|---|
| 83 | } |
|---|
| 84 | |
|---|
| 85 | __END__ |
|---|
| 86 | DoCoMo/1.0/633S/c20 |
|---|
| 87 | DoCoMo/1.0/641P/c10 |
|---|
| 88 | DoCoMo/1.0/641S/c10 |
|---|
| 89 | DoCoMo/1.0/642S/c20 |
|---|
| 90 | DoCoMo/1.0/Agent |
|---|
| 91 | DoCoMo/1.0/D209i |
|---|
| 92 | DoCoMo/1.0/D209i/c10 |
|---|
| 93 | DoCoMo/1.0/D210i/c10 |
|---|
| 94 | DoCoMo/1.0/D211i/c10 |
|---|
| 95 | DoCoMo/1.0/D251i/c10 |
|---|
| 96 | DoCoMo/1.0/D501i |
|---|
| 97 | DoCoMo/1.0/D501i/c5 |
|---|
| 98 | DoCoMo/1.0/D502i |
|---|
| 99 | DoCoMo/1.0/D502i/c10 |
|---|
| 100 | DoCoMo/1.0/D503i |
|---|
| 101 | DoCoMo/1.0/D503i/c10 |
|---|
| 102 | DoCoMo/1.0/D503i/c5 |
|---|
| 103 | DoCoMo/1.0/D503iS/c10 |
|---|
| 104 | DoCoMo/1.0/D503iS/c5 |
|---|
| 105 | DoCoMo/1.0/D504i/c10 |
|---|
| 106 | DoCoMo/1.0/ER209i |
|---|
| 107 | DoCoMo/1.0/ER209i/c15 |
|---|
| 108 | DoCoMo/1.0/F209i |
|---|
| 109 | DoCoMo/1.0/F209i/c10 |
|---|
| 110 | DoCoMo/1.0/F210i/c10 |
|---|
| 111 | DoCoMo/1.0/F211i/c10 |
|---|
| 112 | DoCoMo/1.0/F251i/c10/TB |
|---|
| 113 | DoCoMo/1.0/F501i |
|---|
| 114 | DoCoMo/1.0/F502i |
|---|
| 115 | DoCoMo/1.0/F502i/c10 |
|---|
| 116 | DoCoMo/1.0/F502it |
|---|
| 117 | DoCoMo/1.0/F502it/c10 |
|---|
| 118 | DoCoMo/1.0/F503i |
|---|
| 119 | DoCoMo/1.0/F503i/c10 |
|---|
| 120 | DoCoMo/1.0/F503i/c32 |
|---|
| 121 | DoCoMo/1.0/F503iS |
|---|
| 122 | DoCoMo/1.0/F503iS/c10 |
|---|
| 123 | DoCoMo/1.0/F504i/c10/TB |
|---|
| 124 | DoCoMo/1.0/F504i/c10/TJ |
|---|
| 125 | DoCoMo/1.0/F671i/c10 |
|---|
| 126 | DoCoMo/1.0/GigaCode (http://gigacode.net/) |
|---|
| 127 | DoCoMo/1.0/KO209i |
|---|
| 128 | DoCoMo/1.0/KO210i |
|---|
| 129 | DoCoMo/1.0/KO210i/c10 |
|---|
| 130 | DoCoMo/1.0/N209i |
|---|
| 131 | DoCoMo/1.0/N209i/c08 |
|---|
| 132 | DoCoMo/1.0/N210i |
|---|
| 133 | DoCoMo/1.0/N210i/c10 |
|---|
| 134 | DoCoMo/1.0/N211i/c10 |
|---|
| 135 | DoCoMo/1.0/N501i |
|---|
| 136 | DoCoMo/1.0/N502i |
|---|
| 137 | DoCoMo/1.0/N502i/c08 |
|---|
| 138 | DoCoMo/1.0/N502it |
|---|
| 139 | DoCoMo/1.0/N502it/c10 |
|---|
| 140 | DoCoMo/1.0/N503i |
|---|
| 141 | DoCoMo/1.0/N503i/c10 |
|---|
| 142 | DoCoMo/1.0/N503i/c30 |
|---|
| 143 | DoCoMo/1.0/N503i/c5 |
|---|
| 144 | DoCoMo/1.0/N503i/c5/serNNEBJ608187 |
|---|
| 145 | DoCoMo/1.0/N503iS |
|---|
| 146 | DoCoMo/1.0/N503iS/c10 |
|---|
| 147 | DoCoMo/1.0/N503iS/c5 |
|---|
| 148 | DoCoMo/1.0/N504i/c10 |
|---|
| 149 | DoCoMo/1.0/N504i/c10/TB |
|---|
| 150 | DoCoMo/1.0/N504i/c10/TJ |
|---|
| 151 | DoCoMo/1.0/N504i/c10/TJ/c0 |
|---|
| 152 | DoCoMo/1.0/N821i |
|---|
| 153 | DoCoMo/1.0/N821i/c08 |
|---|
| 154 | DoCoMo/1.0/NM502i |
|---|
| 155 | DoCoMo/1.0/NM502i/c10 |
|---|
| 156 | DoCoMo/1.0/P209i |
|---|
| 157 | DoCoMo/1.0/P209i/c10 |
|---|
| 158 | DoCoMo/1.0/P209is |
|---|
| 159 | DoCoMo/1.0/P209is (Google CHTML Proxy/1.0) |
|---|
| 160 | DoCoMo/1.0/P209is/c10 |
|---|
| 161 | DoCoMo/1.0/P210i |
|---|
| 162 | DoCoMo/1.0/P210i/c10 |
|---|
| 163 | DoCoMo/1.0/P211i/c10 |
|---|
| 164 | DoCoMo/1.0/P501i |
|---|
| 165 | DoCoMo/1.0/P502i |
|---|
| 166 | DoCoMo/1.0/P502i/c10 |
|---|
| 167 | DoCoMo/1.0/P502i/c10 (Google CHTML Proxy/1.0) |
|---|
| 168 | DoCoMo/1.0/P502i_mEB-PD555 |
|---|
| 169 | DoCoMo/1.0/P503i |
|---|
| 170 | DoCoMo/1.0/P503i/c10 |
|---|
| 171 | DoCoMo/1.0/P503i/c10/ |
|---|
| 172 | DoCoMo/1.0/P503iS |
|---|
| 173 | DoCoMo/1.0/P503iS/c10 |
|---|
| 174 | DoCoMo/1.0/P503iS/c10/serNMAUA482012 |
|---|
| 175 | DoCoMo/1.0/P504i/c10 |
|---|
| 176 | DoCoMo/1.0/P504i/c10/TB |
|---|
| 177 | DoCoMo/1.0/P751v/c100/s64/kPHS-K |
|---|
| 178 | DoCoMo/1.0/P821i |
|---|
| 179 | DoCoMo/1.0/P821i/c08 |
|---|
| 180 | DoCoMo/1.0/PacketMeter/c10 |
|---|
| 181 | DoCoMo/1.0/R209i |
|---|
| 182 | DoCoMo/1.0/R211i/c10 |
|---|
| 183 | DoCoMo/1.0/R691i |
|---|
| 184 | DoCoMo/1.0/SH251i/c10 |
|---|
| 185 | DoCoMo/1.0/SH712m/c10 |
|---|
| 186 | DoCoMo/1.0/SH821i |
|---|
| 187 | DoCoMo/1.0/SH821i/c10 |
|---|
| 188 | DoCoMo/1.0/SO210i/c10 |
|---|
| 189 | DoCoMo/1.0/SO211i/c10 |
|---|
| 190 | DoCoMo/1.0/SO502i |
|---|
| 191 | DoCoMo/1.0/SO502iWM/c10 |
|---|
| 192 | DoCoMo/1.0/SO503i |
|---|
| 193 | DoCoMo/1.0/SO503i/c10 |
|---|
| 194 | DoCoMo/1.0/SO503i/c10/serNSOBD506895 |
|---|
| 195 | DoCoMo/1.0/SO503i/c10/serNSOBD597705 |
|---|
| 196 | DoCoMo/1.0/SO503iS/c10 |
|---|
| 197 | DoCoMo/1.0/SO504i/c10 |
|---|
| 198 | DoCoMo/1.0/SO504i/c10/TB |
|---|
| 199 | DoCoMo/1.0/TEST/c10 |
|---|
| 200 | DoCoMo/1.0/TF502i |
|---|
| 201 | DoCoMo/1.0/X503i/c10 |
|---|
| 202 | DoCoMo/1.0/eggy/c300/s32/kPHS-K |
|---|
| 203 | DoCoMo/1.0/eggy/c300/s64/kPHS-K |
|---|
| 204 | DoCoMo/1.0/ex_idisplay/c10 |
|---|
| 205 | DoCoMo/1.0/ex_ps_test00/c10 |
|---|
| 206 | DoCoMo/1.0/iYappo |
|---|
| 207 | DoCoMo/1.0/p503is/c10 |
|---|
| 208 | DoCoMo/1.0/test |
|---|
| 209 | DoCoMo/1.0/test/c10 |
|---|
| 210 | DoCoMo/1.0/test/c10/TB |
|---|
| 211 | DoCoMo/1.1/P711m/c10 |
|---|
| 212 | DoCoMo/2.0 D2101V(c100) |
|---|
| 213 | DoCoMo/2.0 MST_v_P2101V(c100) |
|---|
| 214 | DoCoMo/2.0 N2001(c10) |
|---|
| 215 | DoCoMo/2.0 N2001(c10;ser350200000307969;icc8981100000200188565F) |
|---|
| 216 | DoCoMo/2.0 N2002(c100) |
|---|
| 217 | DoCoMo/2.0 P2002(c100) |
|---|
| 218 | DoCoMo/2.0 P2101V |
|---|
| 219 | DoCoMo/2.0 P2101V(c100) |
|---|
| 220 | DoCoMo/2.0/N502i |
|---|
| 221 | DoCoMo/2.0/N502it |
|---|
| 222 | DoCoMo/2.0/N503i |
|---|
| 223 | DoCoMo/3.0/N503 |
|---|