root/lang/perl/HTTP-MobileAgent/trunk/t/02_docomo.t @ 4172

Revision 4172, 7.7 kB (checked in by tokuhirom, 5 years ago)

HTTP-MobileAgent?: fixed HTTP::MobileAgent::DoCoMo?->xhtml_compliant bug.

before this revision, this method returns invalid value with few very old(2002) models.

tangible models: N2001 N2002 P2002 D2101V P2101V SH2101V T2101V

Line 
1use strict;
2use Test::More tests => 910;
3
4BEGIN { use_ok 'HTTP::MobileAgent' }
5
6my @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
43for (@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
75while (<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__
86DoCoMo/1.0/633S/c20
87DoCoMo/1.0/641P/c10
88DoCoMo/1.0/641S/c10
89DoCoMo/1.0/642S/c20
90DoCoMo/1.0/Agent
91DoCoMo/1.0/D209i
92DoCoMo/1.0/D209i/c10
93DoCoMo/1.0/D210i/c10
94DoCoMo/1.0/D211i/c10
95DoCoMo/1.0/D251i/c10
96DoCoMo/1.0/D501i
97DoCoMo/1.0/D501i/c5
98DoCoMo/1.0/D502i
99DoCoMo/1.0/D502i/c10
100DoCoMo/1.0/D503i
101DoCoMo/1.0/D503i/c10
102DoCoMo/1.0/D503i/c5
103DoCoMo/1.0/D503iS/c10
104DoCoMo/1.0/D503iS/c5
105DoCoMo/1.0/D504i/c10
106DoCoMo/1.0/ER209i
107DoCoMo/1.0/ER209i/c15
108DoCoMo/1.0/F209i
109DoCoMo/1.0/F209i/c10
110DoCoMo/1.0/F210i/c10
111DoCoMo/1.0/F211i/c10
112DoCoMo/1.0/F251i/c10/TB
113DoCoMo/1.0/F501i
114DoCoMo/1.0/F502i
115DoCoMo/1.0/F502i/c10
116DoCoMo/1.0/F502it
117DoCoMo/1.0/F502it/c10
118DoCoMo/1.0/F503i
119DoCoMo/1.0/F503i/c10
120DoCoMo/1.0/F503i/c32
121DoCoMo/1.0/F503iS
122DoCoMo/1.0/F503iS/c10
123DoCoMo/1.0/F504i/c10/TB
124DoCoMo/1.0/F504i/c10/TJ
125DoCoMo/1.0/F671i/c10
126DoCoMo/1.0/GigaCode (http://gigacode.net/)
127DoCoMo/1.0/KO209i
128DoCoMo/1.0/KO210i
129DoCoMo/1.0/KO210i/c10
130DoCoMo/1.0/N209i
131DoCoMo/1.0/N209i/c08
132DoCoMo/1.0/N210i
133DoCoMo/1.0/N210i/c10
134DoCoMo/1.0/N211i/c10
135DoCoMo/1.0/N501i
136DoCoMo/1.0/N502i
137DoCoMo/1.0/N502i/c08
138DoCoMo/1.0/N502it
139DoCoMo/1.0/N502it/c10
140DoCoMo/1.0/N503i
141DoCoMo/1.0/N503i/c10
142DoCoMo/1.0/N503i/c30
143DoCoMo/1.0/N503i/c5
144DoCoMo/1.0/N503i/c5/serNNEBJ608187
145DoCoMo/1.0/N503iS
146DoCoMo/1.0/N503iS/c10
147DoCoMo/1.0/N503iS/c5
148DoCoMo/1.0/N504i/c10
149DoCoMo/1.0/N504i/c10/TB
150DoCoMo/1.0/N504i/c10/TJ
151DoCoMo/1.0/N504i/c10/TJ/c0
152DoCoMo/1.0/N821i
153DoCoMo/1.0/N821i/c08
154DoCoMo/1.0/NM502i
155DoCoMo/1.0/NM502i/c10
156DoCoMo/1.0/P209i
157DoCoMo/1.0/P209i/c10
158DoCoMo/1.0/P209is
159DoCoMo/1.0/P209is (Google CHTML Proxy/1.0)
160DoCoMo/1.0/P209is/c10
161DoCoMo/1.0/P210i
162DoCoMo/1.0/P210i/c10
163DoCoMo/1.0/P211i/c10
164DoCoMo/1.0/P501i
165DoCoMo/1.0/P502i
166DoCoMo/1.0/P502i/c10
167DoCoMo/1.0/P502i/c10 (Google CHTML Proxy/1.0)
168DoCoMo/1.0/P502i_mEB-PD555
169DoCoMo/1.0/P503i
170DoCoMo/1.0/P503i/c10
171DoCoMo/1.0/P503i/c10/
172DoCoMo/1.0/P503iS
173DoCoMo/1.0/P503iS/c10
174DoCoMo/1.0/P503iS/c10/serNMAUA482012
175DoCoMo/1.0/P504i/c10
176DoCoMo/1.0/P504i/c10/TB
177DoCoMo/1.0/P751v/c100/s64/kPHS-K
178DoCoMo/1.0/P821i
179DoCoMo/1.0/P821i/c08
180DoCoMo/1.0/PacketMeter/c10
181DoCoMo/1.0/R209i
182DoCoMo/1.0/R211i/c10
183DoCoMo/1.0/R691i
184DoCoMo/1.0/SH251i/c10
185DoCoMo/1.0/SH712m/c10
186DoCoMo/1.0/SH821i
187DoCoMo/1.0/SH821i/c10
188DoCoMo/1.0/SO210i/c10
189DoCoMo/1.0/SO211i/c10
190DoCoMo/1.0/SO502i
191DoCoMo/1.0/SO502iWM/c10
192DoCoMo/1.0/SO503i
193DoCoMo/1.0/SO503i/c10
194DoCoMo/1.0/SO503i/c10/serNSOBD506895
195DoCoMo/1.0/SO503i/c10/serNSOBD597705
196DoCoMo/1.0/SO503iS/c10
197DoCoMo/1.0/SO504i/c10
198DoCoMo/1.0/SO504i/c10/TB
199DoCoMo/1.0/TEST/c10
200DoCoMo/1.0/TF502i
201DoCoMo/1.0/X503i/c10
202DoCoMo/1.0/eggy/c300/s32/kPHS-K
203DoCoMo/1.0/eggy/c300/s64/kPHS-K
204DoCoMo/1.0/ex_idisplay/c10
205DoCoMo/1.0/ex_ps_test00/c10
206DoCoMo/1.0/iYappo
207DoCoMo/1.0/p503is/c10
208DoCoMo/1.0/test
209DoCoMo/1.0/test/c10
210DoCoMo/1.0/test/c10/TB
211DoCoMo/1.1/P711m/c10
212DoCoMo/2.0 D2101V(c100)
213DoCoMo/2.0 MST_v_P2101V(c100)
214DoCoMo/2.0 N2001(c10)
215DoCoMo/2.0 N2001(c10;ser350200000307969;icc8981100000200188565F)
216DoCoMo/2.0 N2002(c100)
217DoCoMo/2.0 P2002(c100)
218DoCoMo/2.0 P2101V
219DoCoMo/2.0 P2101V(c100)
220DoCoMo/2.0/N502i
221DoCoMo/2.0/N502it
222DoCoMo/2.0/N503i
223DoCoMo/3.0/N503
Note: See TracBrowser for help on using the browser.