2 /* vim: set expandtab tabstop=4 shiftwidth=4: */
7 * Copyright (c) 2008-2009 KUBO Atsuhiro <kubo@iteman.jp>,
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions are met:
13 * * Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * * Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
31 * @category Networking
32 * @package Net_UserAgent_Mobile
33 * @author KUBO Atsuhiro <kubo@iteman.jp>
34 * @copyright 2008-2009 KUBO Atsuhiro <kubo@iteman.jp>
35 * @license http://www.opensource.org/licenses/bsd-license.php New BSD License
36 * @version CVS: $Id: EZwebTestCase.php 2036 2009-07-03 04:52:56Z fishbone $
37 * @since File available since Release 0.31.0
40 require_once dirname(__FILE__) . '/AbstractTestCase.php';
41 require_once 'Net/UserAgent/Mobile/EZweb.php';
43 // {{{ Net_UserAgent_Mobile_EZwebTestCase
46 * Some tests for Net_UserAgent_Mobile_EZweb.
48 * @category Networking
49 * @package Net_UserAgent_Mobile
50 * @author KUBO Atsuhiro <kubo@iteman.jp>
51 * @copyright 2008-2009 KUBO Atsuhiro <kubo@iteman.jp>
52 * @license http://www.opensource.org/licenses/bsd-license.php New BSD License
53 * @version Release: 1.0.0
54 * @since Class available since Release 0.31.0
56 class Net_UserAgent_Mobile_EZwebTestCase extends Net_UserAgent_Mobile_AbstractTestCase
77 private $_profiles = array('KDDI-CA23 UP.Browser/6.2.0.3.111 (GUI) MMP/2.0' => array('model' => 'CA23'),
78 'KDDI-CA24 UP.Browser/6.2.0.5 (GUI) MMP/2.0' => array('model' => 'CA24'),
79 'KDDI-CA25 UP.Browser/6.2.0.6.2 (GUI) MMP/2.0' => array('model' => 'CA25'),
80 'KDDI-CA26 UP.Browser/6.2.0.6.2 (GUI) MMP/2.0' => array('model' => 'CA26'),
81 'KDDI-CA27 UP.Browser/6.2.0.9 (GUI) MMP/2.0' => array('model' => 'CA27'),
82 'KDDI-CA28 UP.Browser/6.2.0.9 (GUI) MMP/2.0' => array('model' => 'CA28'),
83 'KDDI-CA31 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0' => array('model' => 'CA31'),
84 'KDDI-CA32 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0' => array('model' => 'CA32'),
85 'KDDI-CA33 UP.Browser/6.2.0.10.4 (GUI) MMP/2.0' => array('model' => 'CA33'),
86 'KDDI-CA34 UP.Browser/6.2.0.10.3.3 (GUI) MMP/2.0' => array('model' => 'CA34'),
87 'KDDI-CA35 UP.Browser/6.2.0.11.1.2 (GUI) MMP/2.0' => array('model' => 'CA35'),
88 'KDDI-CA37 UP.Browser/6.2.0.12.1.3 (GUI) MMP/2.0' => array('model' => 'CA37'),
89 'KDDI-HI32 UP.Browser/6.2.0.6.2 (GUI) MMP/2.0' => array('model' => 'HI32'),
90 'KDDI-HI33 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0' => array('model' => 'HI33'),
91 'KDDI-HI34 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0' => array('model' => 'HI34'),
92 'KDDI-HI35 UP.Browser/6.2.0.9.2 (GUI) MMP/2.0' => array('model' => 'HI35'),
93 'KDDI-HI36 UP.Browser/6.2.0.10.4 (GUI) MMP/2.0' => array('model' => 'HI36'),
94 'KDDI-HI37 UP.Browser/6.2.0.10.3.3 (GUI) MMP/2.0' => array('model' => 'HI37'),
95 'KDDI-HI38 UP.Browser/6.2.0.11.1.2 (GUI) MMP/2.0' => array('model' => 'HI38'),
96 'KDDI-HI38 UP.Browser/6.2.0.11.1.3.110 (GUI) MMP/2.0' => array('model' => 'HI38'),
97 'KDDI-HI39 UP.Browser/6.2.0.12.1.3 (GUI) MMP/2.0' => array('model' => 'HI39'),
98 'KDDI-KC22 UP.Browser/6.0.8.3 (GUI) MMP/1.1' => array('model' => 'KC22'),
99 'KDDI-KC23 UP.Browser/6.2.0.5 (GUI) MMP/2.0' => array('model' => 'KC23'),
100 'KDDI-KC27 UP.Browser/6.2.0.9 (GUI) MMP/2.0' => array('model' => 'KC27'),
101 'KDDI-KC28 UP.Browser/6.2.0.10.1 (GUI) MMP/2.0' => array('model' => 'KC28'),
102 'KDDI-KC31 UP.Browser/6.2.0.5 (GUI) MMP/2.0' => array('model' => 'KC31'),
103 'KDDI-KC31 UP.Browser/6.2.0.5.c.1.100 (GUI) MMP/2.0' => array('model' => 'KC31'),
104 'KDDI-KC32 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0' => array('model' => 'KC32'),
105 'KDDI-KC33 UP.Browser/6.2.0.9 (GUI) MMP/2.0' => array('model' => 'KC33'),
106 'KDDI-KC34 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0' => array('model' => 'KC34'),
107 'KDDI-KC35 UP.Browser/6.2.0.10.2.2 (GUI) MMP/2.0' => array('model' => 'KC35'),
108 'KDDI-KC36 UP.Browser/6.2.0.10.2.2 (GUI) MMP/2.0' => array('model' => 'KC36'),
109 'KDDI-KC37 UP.Browser/6.2.0.11.1.2 (GUI) MMP/2.0' => array('model' => 'KC37'),
110 'KDDI-KC38 UP.Browser/6.2.0.11.1.2 (GUI) MMP/2.0' => array('model' => 'KC38'),
111 'KDDI-KC38 UP.Browser/6.2.0.11.1.2.2 (GUI) MMP/2.0' => array('model' => 'KC38'),
112 'KDDI-KC39 UP.Browser/6.2.0.12.1.3 (GUI) MMP/2.0' => array('model' => 'KC39'),
113 'KDDI-KC3A UP.Browser/6.2.0.12.1.3 (GUI) MMP/2.0' => array('model' => 'KC3A'),
114 'KDDI-KCU1 UP.Browser/6.2.0.5.1 (GUI) MMP/2.0' => array('model' => 'KCU1'),
115 'KDDI-MA31 UP.Browser/6.2.0.11.1.3.110 (GUI) MMP/2.0' => array('model' => 'MA31'),
116 'KDDI-MA31 UP.Browser/6.2.0.11.1.4 (GUI) MMP/2.0' => array('model' => 'MA31'),
117 'KDDI-PT21 UP.Browser/6.2.0.9 (GUI) MMP/2.0' => array('model' => 'PT21'),
118 'KDDI-SA24 UP.Browser/6.0.8.2 (GUI) MMP/1.1' => array('model' => 'SA24'),
119 'KDDI-SA25 UP.Browser/6.2.0.4 (GUI) MMP/2.0' => array('model' => 'SA25'),
120 'KDDI-SA25 UP.Browser/6.2.0.5 (GUI) MMP/2.0' => array('model' => 'SA25'),
121 'KDDI-SA26 UP.Browser/6.2.0.5.1 (GUI) MMP/2.0' => array('model' => 'SA26'),
122 'KDDI-SA27 UP.Browser/6.2.0.6.3 (GUI) MMP/2.0' => array('model' => 'SA27'),
123 'KDDI-SA28 UP.Browser/6.2.0.5 (GUI) MMP/2.0' => array('model' => 'SA28'),
124 'KDDI-SA29 UP.Browser/6.2.0.10.1 (GUI) MMP/2.0' => array('model' => 'SA29'),
125 'KDDI-SA31 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0' => array('model' => 'SA31'),
126 'KDDI-SA32 UP.Browser/6.2.0.8 (GUI) MMP/2.0' => array('model' => 'SA32'),
127 'KDDI-SA33 UP.Browser/6.2.0.9 (GUI) MMP/2.0' => array('model' => 'SA33'),
128 'KDDI-SA34 UP.Browser/6.2.0.9.1 (GUI) MMP/2.0' => array('model' => 'SA34'),
129 'KDDI-SA35 UP.Browser/6.2.0.9.1 (GUI) MMP/2.0' => array('model' => 'SA35'),
130 'KDDI-SA36 UP.Browser/6.2.0.10.2.1 (GUI) MMP/2.0' => array('model' => 'SA36'),
131 'KDDI-SA38 UP.Browser/6.2.0.11.1.2 (GUI) MMP/2.0' => array('model' => 'SA38'),
132 'KDDI-SA39 UP.Browser/6.2.0.12.1.3 (GUI) MMP/2.0' => array('model' => 'SA39'),
133 'KDDI-SH31 UP.Browser/6.2.0.10.3.5 (GUI) MMP/2.0' => array('model' => 'SH31'),
134 'KDDI-SH32 UP.Browser/6.2.0.11.2.1 (GUI) MMP/2.0' => array('model' => 'SH32'),
135 'KDDI-SN25 UP.Browser/6.2.0.5 (GUI) MMP/2.0' => array('model' => 'SN25'),
136 'KDDI-SN26 UP.Browser/6.2.0.5 (GUI) MMP/2.0' => array('model' => 'SN26'),
137 'KDDI-SN27 UP.Browser/6.2.0.6.2 (GUI) MMP/2.0' => array('model' => 'SN27'),
138 'KDDI-SN29 UP.Browser/6.2.0.6.2 (GUI) MMP/2.0' => array('model' => 'SN29'),
139 'KDDI-SN31 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0' => array('model' => 'SN31'),
140 'KDDI-SN32 UP.Browser/6.2.0.9 (GUI) MMP/2.0' => array('model' => 'SN32'),
141 'KDDI-SN33 UP.Browser/6.2.0.9.2 (GUI) MMP/2.0' => array('model' => 'SN33'),
142 'KDDI-SN34 UP.Browser/6.2.0.10.4 (GUI) MMP/2.0' => array('model' => 'SN34'),
143 'KDDI-SN35 UP.Browser/6.2.0.9.2 (GUI) MMP/2.0' => array('model' => 'SN35'),
144 'KDDI-SN36 UP.Browser/6.2.0.10.4 (GUI) MMP/2.0' => array('model' => 'SN36'),
145 'KDDI-SN37 UP.Browser/6.2.0.11.1.2 (GUI) MMP/2.0' => array('model' => 'SN37'),
146 'KDDI-SN38 UP.Browser/6.2.0.11.2 (GUI) MMP/2.0' => array('model' => 'SN38'),
147 'KDDI-SN39 UP.Browser/6.2.0.11.2.1 (GUI) MMP/2.0' => array('model' => 'SN39'),
148 'KDDI-ST21 UP.Browser/6.0.8.3 (GUI) MMP/1.1' => array('model' => 'ST21'),
149 'KDDI-ST22 UP.Browser/6.0.8.3 (GUI) MMP/1.1' => array('model' => 'ST22'),
150 'KDDI-ST23 UP.Browser/6.2.0.6.2 (GUI) MMP/2.0' => array('model' => 'ST23'),
151 'KDDI-ST24 UP.Browser/6.2.0.8 (GUI) MMP/2.0' => array('model' => 'ST24'),
152 'KDDI-ST25 UP.Browser/6.2.0.8 (GUI) MMP/2.0' => array('model' => 'ST25'),
153 'KDDI-ST26 UP.Browser/6.2.0.8 (GUI) MMP/2.0' => array('model' => 'ST26'),
154 'KDDI-ST27 UP.Browser/6.2.0.9 (GUI) MMP/2.0' => array('model' => 'ST27'),
155 'KDDI-ST28 UP.Browser/6.2.0.10.1 (GUI) MMP/2.0' => array('model' => 'ST28'),
156 'KDDI-ST2C UP.Browser/6.2.0.11.1.2.1 (GUI) MMP/2.0' => array('model' => 'ST2C'),
157 'KDDI-ST31 UP.Browser/6.2.0.11.1.2 (GUI) MMP/2.0' => array('model' => 'ST31'),
158 'KDDI-TS21 UP.Browser/6.0.2.276 (GUI) MMP/1.1' => array('model' => 'TS21'),
159 'KDDI-TS25 UP.Browser/6.0.8.3 (GUI) MMP/1.1' => array('model' => 'TS25'),
160 'KDDI-TS27 UP.Browser/6.2.0.6.2 (GUI) MMP/2.0' => array('model' => 'TS27'),
161 'KDDI-TS28 UP.Browser/6.2.0.6.2 (GUI) MMP/2.0' => array('model' => 'TS28'),
162 'KDDI-TS29 UP.Browser/6.2.0.9 (GUI) MMP/2.0' => array('model' => 'TS29'),
163 'KDDI-TS2A UP.Browser/6.2.0.9 (GUI) MMP/2.0' => array('model' => 'TS2A'),
164 'KDDI-TS2B UP.Browser/6.2.0.9 (GUI) MMP/2.0' => array('model' => 'TS2B'),
165 'KDDI-TS2C UP.Browser/6.2.0.9 (GUI) MMP/2.0' => array('model' => 'TS2C'),
166 'KDDI-TS2D UP.Browser/6.2.0.11.1.2.1 (GUI) MMP/2.0' => array('model' => 'TS2D'),
167 'KDDI-TS31 UP.Browser/6.2.0.8 (GUI) MMP/2.0' => array('model' => 'TS31'),
168 'KDDI-TS32 UP.Browser/6.2.0.9.1 (GUI) MMP/2.0' => array('model' => 'TS32'),
169 'KDDI-TS33 UP.Browser/6.2.0.9.1 (GUI) MMP/2.0' => array('model' => 'TS33'),
170 'KDDI-TS34 UP.Browser/6.2.0.10.2.1 (GUI) MMP/2.0' => array('model' => 'TS34'),
171 'KDDI-TS35 UP.Browser/6.2.0.10.2.1 (GUI) MMP/2.0' => array('model' => 'TS35'),
172 'KDDI-TS36 UP.Browser/6.2.0.10.2.1 (GUI) MMP/2.0' => array('model' => 'TS36'),
173 'KDDI-TS37 UP.Browser/6.2.0.10.3.3 (GUI) MMP/2.0' => array('model' => 'TS37'),
174 'KDDI-TS37 UP.Browser/6.2.0.10.3.3.1 (GUI) MMP/2.0' => array('model' => 'TS37'),
175 'KDDI-TS38 UP.Browser/6.2.0.11.1.2 (GUI) MMP/2.0' => array('model' => 'TS38'),
176 'KDDI-TS39 UP.Browser/6.2.0.11.2 (GUI) MMP/2.0' => array('model' => 'TS39'),
177 'KDDI-TS3A UP.Browser/6.2.0.11.2 (GUI) MMP/2.0' => array('model' => 'TS3A'),
178 'KDDI-TS3A UP.Browser/6.2.0.11.2.1 (GUI) MMP/2.0' => array('model' => 'TS3A'),
179 'KDDI-TS3B UP.Browser/6.2.0.12.1.3 (GUI) MMP/2.0' => array('model' => 'TS3B'),
180 'KDDI-TS3C UP.Browser/6.2.0.12.1.3 (GUI) MMP/2.0' => array('model' => 'TS3C'),
181 'UP.Browser/3.01-HI01 UP.Link/3.4.5.2' => array('model' => 'HI01'),
182 'UP.Browser/3.04-KC14 UP.Link/3.4.5.9' => array('model' => 'KC14'),
183 'UP.Browser/3.04-KC15 UP.Link/3.4.5.9' => array('model' => 'KC15'),
184 'UP.Browser/3.04-KCT8 UP.Link/3.4.5.9' => array('model' => 'KCT8'),
185 'UP.Browser/3.04-ST14 UP.Link/3.4.5.9' => array('model' => 'ST14'),
186 'UP.Browser/3.04-TST4 UP.Link/3.4.5.6' => array('model' => 'TST4')
195 public function testShouldDetectUserAgentsAsEzweb()
197 reset($this->_profiles);
198 while (list($userAgent, $profile) = each($this->_profiles)) {
199 $agent = new Net_UserAgent_Mobile_EZweb($userAgent);
201 $this->assertFalse($agent->isDoCoMo());
202 $this->assertTrue($agent->isEZweb());
203 $this->assertFalse($agent->isSoftBank());
204 $this->assertFalse($agent->isWillcom());
205 $this->assertFalse($agent->isNonMobile());
209 public function testShouldProvideTheModelNameOfAUserAgent()
211 reset($this->_profiles);
212 while (list($userAgent, $profile) = each($this->_profiles)) {
213 $agent = new Net_UserAgent_Mobile_EZweb($userAgent);
215 $this->assertEquals($profile['model'], $agent->getModel());
220 * @since Method available since Release 1.0.0RC1
222 public function testShouldProvideTheUidOfASubscriber()
224 $uid = '12345678901234_56.ezweb.ne.jp';
225 $_SERVER['HTTP_X_UP_SUBNO'] = $uid;
226 $agent = new Net_UserAgent_Mobile_EZweb('KDDI-TS3C UP.Browser/6.2.0.12.1.3 (GUI) MMP/2.0');
228 $this->assertEquals($uid, $agent->getUID());
230 unset($_SERVER['HTTP_X_UP_SUBNO']);
231 $agent = new Net_UserAgent_Mobile_EZweb('KDDI-TS3C UP.Browser/6.2.0.12.1.3 (GUI) MMP/2.0');
233 $this->assertNull($agent->getUID());
237 * @since Method available since Release 1.0.0RC1
239 public function testShouldProvideTheVersionOfAUserAgent()
241 $agent = new Net_UserAgent_Mobile_EZweb('KDDI-TS3C UP.Browser/6.2.0.12.1.3 (GUI) MMP/2.0');
243 $this->assertEquals('6.2.0.12.1.3 (GUI)', $agent->getVersion());
245 $agent = new Net_UserAgent_Mobile_EZweb('UP.Browser/3.04-TST4 UP.Link/3.4.5.6');
247 $this->assertEquals('3.04', $agent->getVersion());
251 * @since Method available since Release 1.0.0RC1
253 public function testShouldProvideTheDeviceIdOfAUserAgent()
255 $agent = new Net_UserAgent_Mobile_EZweb('KDDI-TS3C UP.Browser/6.2.0.12.1.3 (GUI) MMP/2.0');
257 $this->assertEquals('TS3C', $agent->getDeviceID());
259 $agent = new Net_UserAgent_Mobile_EZweb('UP.Browser/3.04-TST4 UP.Link/3.4.5.6');
261 $this->assertEquals('TST4', $agent->getDeviceID());
265 * @since Method available since Release 1.0.0RC1
267 public function testShouldProvideTheServerOfAUserAgent()
269 $agent = new Net_UserAgent_Mobile_EZweb('KDDI-TS3C UP.Browser/6.2.0.12.1.3 (GUI) MMP/2.0');
271 $this->assertEquals('MMP/2.0', $agent->getServer());
273 $agent = new Net_UserAgent_Mobile_EZweb('UP.Browser/3.04-TST4 UP.Link/3.4.5.6');
275 $this->assertEquals('UP.Link/3.4.5.6', $agent->getServer());
279 * @since Method available since Release 1.0.0RC1
281 public function testShouldTellWhetherAUserAgentIsXhtmlCompliantModelOrNot()
283 $agent = new Net_UserAgent_Mobile_EZweb('KDDI-TS3C UP.Browser/6.2.0.12.1.3 (GUI) MMP/2.0');
285 $this->assertTrue($agent->isXHTMLCompliant());
287 $agent = new Net_UserAgent_Mobile_EZweb('UP.Browser/3.04-TST4 UP.Link/3.4.5.6');
289 $this->assertFalse($agent->isXHTMLCompliant());
293 * @since Method available since Release 1.0.0RC1
295 public function testShouldProvideTheCommentOfAUserAgent()
297 $agent = new Net_UserAgent_Mobile_EZweb('UP.Browser/3.04-TS14 UP.Link/3.4.4 (Google WAP Proxy/1.0)');
299 $this->assertEquals('Google WAP Proxy/1.0', $agent->getComment());
301 $agent = new Net_UserAgent_Mobile_EZweb('KDDI-TS3C UP.Browser/6.2.0.12.1.3 (GUI) MMP/2.0');
303 $this->assertNull($agent->getComment());
307 * @since Method available since Release 1.0.0RC1
309 public function testShouldTellWhetherAUserAgentIsWap2ModelOrNot()
311 $agent = new Net_UserAgent_Mobile_EZweb('KDDI-TS3C UP.Browser/6.2.0.12.1.3 (GUI) MMP/2.0');
313 $this->assertTrue($agent->isWAP2());
315 $agent = new Net_UserAgent_Mobile_EZweb('UP.Browser/3.04-TST4 UP.Link/3.4.5.6');
317 $this->assertFalse($agent->isWAP2());
321 * @since Method available since Release 1.0.0RC1
323 public function testShouldTellWhetherAUserAgentIsWap1ModelOrNot()
325 $agent = new Net_UserAgent_Mobile_EZweb('KDDI-TS3C UP.Browser/6.2.0.12.1.3 (GUI) MMP/2.0');
327 $this->assertFalse($agent->isWAP1());
329 $agent = new Net_UserAgent_Mobile_EZweb('UP.Browser/3.04-TST4 UP.Link/3.4.5.6');
331 $this->assertTrue($agent->isWAP1());
335 * @since Method available since Release 1.0.0RC1
337 public function testShouldProvideTheScreenInformationOfAUserAgent()
339 $_SERVER['HTTP_X_UP_DEVCAP_SCREENPIXELS'] = '90,70';
340 $_SERVER['HTTP_X_UP_DEVCAP_SCREENDEPTH'] = '16,RGB565';
341 $_SERVER['HTTP_X_UP_DEVCAP_ISCOLOR'] = '1';
343 $agent = new Net_UserAgent_Mobile_EZweb('KDDI-TS21 UP.Browser/6.0.2.276 (GUI) MMP/1.1');
345 $display = $agent->getDisplay();
347 $this->assertEquals(90, $display->getWidth());
348 $this->assertEquals(70, $display->getHeight());
349 $this->assertTrue($display->isColor());
350 $this->assertEquals(65536, $display->getDepth());
352 unset($_SERVER['HTTP_X_UP_DEVCAP_ISCOLOR']);
353 unset($_SERVER['HTTP_X_UP_DEVCAP_SCREENDEPTH']);
354 unset($_SERVER['HTTP_X_UP_DEVCAP_SCREENPIXELS']);
382 * c-hanging-comment-ender-p: nil
383 * indent-tabs-mode: nil