[ Index ] |
PHP Cross Reference of moodle-2.8 |
[Summary view] [Print] [Text view]
1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 /** 18 * Tests the user agent class. 19 * 20 * @package core 21 * @copyright 2013 Sam Hemelryk 22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 23 */ 24 25 /** 26 * User agent test suite. 27 * 28 * @package core 29 * @copyright 2013 Sam Hemelryk 30 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 31 */ 32 class core_useragent_testcase extends basic_testcase { 33 34 /** 35 * User agents we'll be using to test. 36 * @var array 37 */ 38 protected $user_agents = array( 39 'MSIE' => array( 40 '5.0' => array( 41 'Windows 98' => 'Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)' 42 ), 43 '5.5' => array( 44 'Windows 2000' => 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)' 45 ), 46 '6.0' => array( 47 'Windows XP SP2' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)' 48 ), 49 '7.0' => array( 50 'Windows XP SP2' => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)' 51 ), 52 '8.0' => array( 53 'Windows Vista' => 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)' 54 ), 55 '9.0' => array( 56 'Windows 7' => 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)' 57 ), 58 '9.0i' => array( 59 'Windows 7' => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)' 60 ), 61 '10.0' => array( 62 'Windows 8' => 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)' 63 ), 64 '10.0i' => array( 65 'Windows 8' => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Trident/6.0; Touch; .NET4.0E; .NET4.0C; Tablet PC 2.0)' 66 ), 67 '11.0' => array( 68 'Windows 8.1' => 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0)' 69 ), 70 '11.0i' => array( 71 'Windows 8.1' => ' Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C)' 72 ), 73 ), 74 'Firefox' => array( 75 '1.0.6' => array( 76 'Windows XP' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6' 77 ), 78 '1.5' => array( 79 'Windows XP' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8) Gecko/20051107 Firefox/1.5' 80 ), 81 '1.5.0.1' => array( 82 'Windows XP' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1' 83 ), 84 '2.0' => array( 85 'Windows XP' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1', 86 'Ubuntu Linux AMD64' => 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1) Gecko/20060601 Firefox/2.0 (Ubuntu-edgy)' 87 ), 88 '3.0.6' => array( 89 'SUSE' => 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.6) Gecko/2009012700 SUSE/3.0.6-1.4 Firefox/3.0.6' 90 ), 91 '3.6' => array( 92 'Linux' => 'Mozilla/5.0 (X11; Linux i686; rv:2.0) Gecko/20100101 Firefox/3.6' 93 ), 94 '11.0' => array( 95 'Windows' => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko Firefox/11.0' 96 ), 97 '15.0a2' => array( 98 'Windows' => 'Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120716 Firefox/15.0a2' 99 ), 100 '18.0' => array( 101 'Mac OS X' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:18.0) Gecko/18.0 Firefox/18.0' 102 ), 103 ), 104 'SeaMonkey' => array( 105 '2.0' => array( 106 'Windows' => 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1b3pre) Gecko/20081208 SeaMonkey/2.0' 107 ), 108 '2.1' => array( 109 'Linux' => 'Mozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20110609 Firefox/4.0.1 SeaMonkey/2.1' 110 ), 111 '2.3' => array( 112 'FreeBSD' => 'Mozilla/5.0 (X11; FreeBSD amd64; rv:6.0) Gecko/20110818 Firefox/6.0 SeaMonkey/2.3' 113 ), 114 ), 115 'Safari' => array( 116 '312' => array( 117 'Mac OS X' => 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312' 118 ), 119 '412' => array( 120 'Mac OS X' => 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412 (KHTML, like Gecko) Safari/412' 121 ), 122 '2.0' => array( 123 'Mac OS X' => 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412 (KHTML, like Gecko) Safari/412' 124 ) 125 ), 126 'Safari iOS' => array( 127 '528' => array( 128 'iPhone' => 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; cs-cz) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7D11 Safari/528.16' 129 ), 130 '533' => array( 131 'iPad' => 'Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5' 132 ), 133 ), 134 'WebKit Android' => array( 135 '525' => array( 136 'G1 Phone' => 'Mozilla/5.0 (Linux; U; Android 1.1; en-gb; dream) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2 – G1 Phone' 137 ), 138 '530' => array( 139 'Nexus' => 'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17 –Nexus' 140 ), 141 '537' => array( 142 'Samsung GT-9505' => 'Mozilla/5.0 (Linux; Android 4.3; it-it; SAMSUNG GT-I9505/I9505XXUEMJ7 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' 143 ) 144 ), 145 'Chrome' => array( 146 '8' => array( 147 'Mac OS X' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.215 Safari/534.10' 148 ), 149 ), 150 'Opera' => array( 151 '8.51' => array( 152 'Windows XP' => 'Opera/8.51 (Windows NT 5.1; U; en)' 153 ), 154 '9.0' => array( 155 'Windows XP' => 'Opera/9.0 (Windows NT 5.1; U; en)', 156 'Debian Linux' => 'Opera/9.01 (X11; Linux i686; U; en)' 157 ) 158 ) 159 ); 160 161 /** 162 * Test instance generation. 163 */ 164 public function test_instance() { 165 $this->assertInstanceOf('core_useragent', core_useragent::instance()); 166 $this->assertInstanceOf('core_useragent', core_useragent::instance(true)); 167 } 168 169 /** 170 * Modifies $_SERVER['HTTP_USER_AGENT'] manually to check if check_browser_version 171 * works as expected. 172 */ 173 public function test_check_browser_version() { 174 core_useragent::instance(true, $this->user_agents['Safari']['412']['Mac OS X']); 175 $this->assertTrue(core_useragent::is_safari()); 176 $this->assertTrue(core_useragent::check_safari_version()); 177 $this->assertTrue(core_useragent::is_webkit()); 178 $this->assertTrue(core_useragent::check_webkit_version()); 179 $this->assertTrue(core_useragent::check_safari_version('312')); 180 $this->assertFalse(core_useragent::check_safari_version('500')); 181 $this->assertFalse(core_useragent::is_chrome()); 182 $this->assertFalse(core_useragent::check_chrome_version()); 183 $this->assertFalse(core_useragent::is_safari_ios()); 184 $this->assertFalse(core_useragent::check_safari_ios_version()); 185 186 core_useragent::instance(true, $this->user_agents['Safari iOS']['528']['iPhone']); 187 $this->assertTrue(core_useragent::is_safari_ios()); 188 $this->assertTrue(core_useragent::check_safari_ios_version()); 189 $this->assertTrue(core_useragent::is_webkit()); 190 $this->assertTrue(core_useragent::check_webkit_version()); 191 $this->assertTrue(core_useragent::check_safari_ios_version('527')); 192 $this->assertFalse(core_useragent::check_safari_ios_version(590)); 193 $this->assertFalse(core_useragent::check_safari_version('312')); 194 $this->assertFalse(core_useragent::check_safari_version('500')); 195 $this->assertFalse(core_useragent::is_chrome()); 196 $this->assertFalse(core_useragent::check_chrome_version()); 197 198 core_useragent::instance(true, $this->user_agents['WebKit Android']['530']['Nexus']); 199 $this->assertTrue(core_useragent::is_webkit()); 200 $this->assertTrue(core_useragent::check_webkit_version()); 201 $this->assertTrue(core_useragent::check_webkit_android_version('527')); 202 $this->assertFalse(core_useragent::check_webkit_android_version(590)); 203 $this->assertFalse(core_useragent::is_safari()); 204 $this->assertFalse(core_useragent::check_safari_version()); 205 $this->assertFalse(core_useragent::is_chrome()); 206 $this->assertFalse(core_useragent::check_chrome_version()); 207 208 core_useragent::instance(true, $this->user_agents['Chrome']['8']['Mac OS X']); 209 $this->assertTrue(core_useragent::is_chrome()); 210 $this->assertTrue(core_useragent::check_chrome_version()); 211 $this->assertTrue(core_useragent::is_webkit()); 212 $this->assertTrue(core_useragent::check_webkit_version()); 213 $this->assertTrue(core_useragent::check_chrome_version(8)); 214 $this->assertFalse(core_useragent::check_chrome_version(10)); 215 $this->assertFalse(core_useragent::check_safari_version('1')); 216 217 core_useragent::instance(true, $this->user_agents['Opera']['9.0']['Windows XP']); 218 $this->assertTrue(core_useragent::is_opera()); 219 $this->assertTrue(core_useragent::check_opera_version()); 220 $this->assertTrue(core_useragent::check_opera_version('8.0')); 221 $this->assertFalse(core_useragent::check_opera_version('10.0')); 222 223 core_useragent::instance(true, $this->user_agents['MSIE']['6.0']['Windows XP SP2']); 224 $this->assertTrue(core_useragent::is_ie()); 225 $this->assertTrue(core_useragent::check_ie_version()); 226 $this->assertTrue(core_useragent::check_ie_version('5.0')); 227 $this->assertFalse(core_useragent::check_ie_compatibility_view()); 228 $this->assertFalse(core_useragent::check_ie_version('7.0')); 229 230 core_useragent::instance(true, $this->user_agents['MSIE']['5.0']['Windows 98']); 231 $this->assertFalse(core_useragent::is_ie()); 232 $this->assertFalse(core_useragent::check_ie_version()); 233 $this->assertTrue(core_useragent::check_ie_version(0)); 234 $this->assertTrue(core_useragent::check_ie_version('5.0')); 235 $this->assertFalse(core_useragent::check_ie_compatibility_view()); 236 $this->assertFalse(core_useragent::check_ie_version('7.0')); 237 238 core_useragent::instance(true, $this->user_agents['MSIE']['9.0']['Windows 7']); 239 $this->assertTrue(core_useragent::is_ie()); 240 $this->assertTrue(core_useragent::check_ie_version()); 241 $this->assertTrue(core_useragent::check_ie_version(0)); 242 $this->assertTrue(core_useragent::check_ie_version('5.0')); 243 $this->assertTrue(core_useragent::check_ie_version('9.0')); 244 $this->assertFalse(core_useragent::check_ie_compatibility_view()); 245 $this->assertFalse(core_useragent::check_ie_version('10')); 246 247 core_useragent::instance(true, $this->user_agents['MSIE']['9.0i']['Windows 7']); 248 $this->assertTrue(core_useragent::is_ie()); 249 $this->assertTrue(core_useragent::check_ie_version()); 250 $this->assertTrue(core_useragent::check_ie_version(0)); 251 $this->assertTrue(core_useragent::check_ie_version('5.0')); 252 $this->assertTrue(core_useragent::check_ie_version('9.0')); 253 $this->assertTrue(core_useragent::check_ie_compatibility_view()); 254 $this->assertFalse(core_useragent::check_ie_version('10')); 255 256 core_useragent::instance(true, $this->user_agents['MSIE']['10.0']['Windows 8']); 257 $this->assertTrue(core_useragent::is_ie()); 258 $this->assertTrue(core_useragent::check_ie_version()); 259 $this->assertTrue(core_useragent::check_ie_version(0)); 260 $this->assertTrue(core_useragent::check_ie_version('5.0')); 261 $this->assertTrue(core_useragent::check_ie_version('9.0')); 262 $this->assertTrue(core_useragent::check_ie_version('10')); 263 $this->assertFalse(core_useragent::check_ie_compatibility_view()); 264 $this->assertFalse(core_useragent::check_ie_version('11')); 265 266 core_useragent::instance(true, $this->user_agents['MSIE']['10.0i']['Windows 8']); 267 $this->assertTrue(core_useragent::is_ie()); 268 $this->assertTrue(core_useragent::check_ie_version()); 269 $this->assertTrue(core_useragent::check_ie_version(0)); 270 $this->assertTrue(core_useragent::check_ie_version('5.0')); 271 $this->assertTrue(core_useragent::check_ie_version('9.0')); 272 $this->assertTrue(core_useragent::check_ie_version('10')); 273 $this->assertTrue(core_useragent::check_ie_compatibility_view()); 274 $this->assertFalse(core_useragent::check_ie_version('11')); 275 276 core_useragent::instance(true, $this->user_agents['MSIE']['11.0']['Windows 8.1']); 277 $this->assertTrue(core_useragent::is_ie()); 278 $this->assertTrue(core_useragent::check_ie_version()); 279 $this->assertTrue(core_useragent::check_ie_version(0)); 280 $this->assertTrue(core_useragent::check_ie_version('5.0')); 281 $this->assertTrue(core_useragent::check_ie_version('9.0')); 282 $this->assertTrue(core_useragent::check_ie_version('10')); 283 $this->assertTrue(core_useragent::check_ie_version('11')); 284 $this->assertFalse(core_useragent::check_ie_compatibility_view()); 285 $this->assertFalse(core_useragent::check_ie_version('12')); 286 287 core_useragent::instance(true, $this->user_agents['MSIE']['11.0i']['Windows 8.1']); 288 $this->assertTrue(core_useragent::is_ie()); 289 $this->assertTrue(core_useragent::check_ie_version()); 290 $this->assertTrue(core_useragent::check_ie_version(0)); 291 $this->assertTrue(core_useragent::check_ie_version('5.0')); 292 $this->assertTrue(core_useragent::check_ie_version('9.0')); 293 $this->assertTrue(core_useragent::check_ie_version('10')); 294 $this->assertTrue(core_useragent::check_ie_version('11')); 295 $this->assertTrue(core_useragent::check_ie_compatibility_view()); 296 $this->assertFalse(core_useragent::check_ie_version('12')); 297 298 core_useragent::instance(true, $this->user_agents['Firefox']['2.0']['Windows XP']); 299 $this->assertTrue(core_useragent::is_firefox()); 300 $this->assertTrue(core_useragent::check_firefox_version()); 301 $this->assertTrue(core_useragent::check_firefox_version('1.5')); 302 $this->assertFalse(core_useragent::check_firefox_version('3.0')); 303 $this->assertTrue(core_useragent::check_gecko_version('2')); 304 $this->assertTrue(core_useragent::check_gecko_version(20030516)); 305 $this->assertTrue(core_useragent::check_gecko_version(20051106)); 306 $this->assertTrue(core_useragent::check_gecko_version(2006010100)); 307 308 core_useragent::instance(true, $this->user_agents['Firefox']['1.0.6']['Windows XP']); 309 $this->assertTrue(core_useragent::is_firefox()); 310 $this->assertTrue(core_useragent::check_firefox_version()); 311 $this->assertTrue(core_useragent::check_gecko_version('1')); 312 $this->assertFalse(core_useragent::check_gecko_version(20030516)); 313 $this->assertFalse(core_useragent::check_gecko_version(20051106)); 314 $this->assertFalse(core_useragent::check_gecko_version(2006010100)); 315 $this->assertFalse(core_useragent::check_firefox_version('1.5')); 316 $this->assertFalse(core_useragent::check_firefox_version('3.0')); 317 $this->assertFalse(core_useragent::check_gecko_version('2')); 318 319 core_useragent::instance(true, $this->user_agents['Firefox']['2.0']['Windows XP']); 320 $this->assertTrue(core_useragent::is_firefox()); 321 $this->assertTrue(core_useragent::check_firefox_version()); 322 $this->assertTrue(core_useragent::check_firefox_version('1.5')); 323 $this->assertTrue(core_useragent::check_gecko_version('1')); 324 $this->assertTrue(core_useragent::check_gecko_version('2')); 325 $this->assertTrue(core_useragent::check_gecko_version(20030516)); 326 $this->assertTrue(core_useragent::check_gecko_version(20051106)); 327 $this->assertTrue(core_useragent::check_gecko_version(2006010100)); 328 $this->assertFalse(core_useragent::check_firefox_version('3.0')); 329 330 core_useragent::instance(true, $this->user_agents['Firefox']['3.6']['Linux']); 331 $this->assertTrue(core_useragent::is_firefox()); 332 $this->assertTrue(core_useragent::check_firefox_version()); 333 $this->assertTrue(core_useragent::check_firefox_version('1.5')); 334 $this->assertTrue(core_useragent::check_firefox_version('3.0')); 335 $this->assertTrue(core_useragent::check_gecko_version('2')); 336 $this->assertTrue(core_useragent::check_gecko_version('3.6')); 337 $this->assertTrue(core_useragent::check_gecko_version(20030516)); 338 $this->assertTrue(core_useragent::check_gecko_version(20051106)); 339 $this->assertTrue(core_useragent::check_gecko_version(2006010100)); 340 $this->assertFalse(core_useragent::check_firefox_version('4')); 341 $this->assertFalse(core_useragent::check_firefox_version('10')); 342 343 core_useragent::instance(true, $this->user_agents['Firefox']['3.6']['Linux']); 344 $this->assertTrue(core_useragent::is_firefox()); 345 $this->assertTrue(core_useragent::check_firefox_version()); 346 $this->assertTrue(core_useragent::check_firefox_version('1.5')); 347 $this->assertTrue(core_useragent::check_firefox_version('3.0')); 348 $this->assertTrue(core_useragent::check_gecko_version('2')); 349 $this->assertTrue(core_useragent::check_gecko_version('3.6')); 350 $this->assertTrue(core_useragent::check_gecko_version(20030516)); 351 $this->assertTrue(core_useragent::check_gecko_version(20051106)); 352 $this->assertTrue(core_useragent::check_gecko_version(2006010100)); 353 $this->assertFalse(core_useragent::check_firefox_version('4')); 354 $this->assertFalse(core_useragent::check_firefox_version('10')); 355 $this->assertFalse(core_useragent::check_firefox_version('18')); 356 $this->assertFalse(core_useragent::check_gecko_version('4')); 357 358 core_useragent::instance(true, $this->user_agents['Firefox']['15.0a2']['Windows']); 359 $this->assertTrue(core_useragent::is_firefox()); 360 $this->assertTrue(core_useragent::check_firefox_version()); 361 $this->assertTrue(core_useragent::check_firefox_version('1.5')); 362 $this->assertTrue(core_useragent::check_firefox_version('3.0')); 363 $this->assertTrue(core_useragent::check_gecko_version('2')); 364 $this->assertTrue(core_useragent::check_gecko_version('3.6')); 365 $this->assertTrue(core_useragent::check_gecko_version('15.0')); 366 $this->assertTrue(core_useragent::check_gecko_version(20030516)); 367 $this->assertTrue(core_useragent::check_gecko_version(20051106)); 368 $this->assertTrue(core_useragent::check_gecko_version(2006010100)); 369 $this->assertTrue(core_useragent::check_firefox_version('4')); 370 $this->assertTrue(core_useragent::check_firefox_version('10')); 371 $this->assertTrue(core_useragent::check_firefox_version('15')); 372 $this->assertFalse(core_useragent::check_firefox_version('18')); 373 $this->assertFalse(core_useragent::check_gecko_version('18')); 374 375 core_useragent::instance(true, $this->user_agents['Firefox']['18.0']['Mac OS X']); 376 $this->assertTrue(core_useragent::is_firefox()); 377 $this->assertTrue(core_useragent::check_firefox_version()); 378 $this->assertTrue(core_useragent::check_firefox_version('1.5')); 379 $this->assertTrue(core_useragent::check_firefox_version('3.0')); 380 $this->assertTrue(core_useragent::check_gecko_version('2')); 381 $this->assertTrue(core_useragent::check_gecko_version('3.6')); 382 $this->assertTrue(core_useragent::check_gecko_version('15.0')); 383 $this->assertTrue(core_useragent::check_gecko_version('18.0')); 384 $this->assertTrue(core_useragent::check_gecko_version(20030516)); 385 $this->assertTrue(core_useragent::check_gecko_version(20051106)); 386 $this->assertTrue(core_useragent::check_gecko_version(2006010100)); 387 $this->assertTrue(core_useragent::check_firefox_version('4')); 388 $this->assertTrue(core_useragent::check_firefox_version('10')); 389 $this->assertTrue(core_useragent::check_firefox_version('15')); 390 $this->assertTrue(core_useragent::check_firefox_version('18')); 391 $this->assertFalse(core_useragent::check_firefox_version('19')); 392 $this->assertFalse(core_useragent::check_gecko_version('19')); 393 394 core_useragent::instance(true, $this->user_agents['SeaMonkey']['2.0']['Windows']); 395 $this->assertTrue(core_useragent::check_gecko_version('2')); 396 $this->assertTrue(core_useragent::check_gecko_version(20030516)); 397 $this->assertTrue(core_useragent::check_gecko_version(20051106)); 398 $this->assertTrue(core_useragent::check_gecko_version(2006010100)); 399 $this->assertFalse(core_useragent::check_gecko_version('3.6')); 400 $this->assertFalse(core_useragent::check_gecko_version('4.0')); 401 $this->assertFalse(core_useragent::is_firefox()); 402 $this->assertFalse(core_useragent::check_firefox_version()); 403 404 core_useragent::instance(true, $this->user_agents['SeaMonkey']['2.1']['Linux']); 405 $this->assertTrue(core_useragent::check_gecko_version('2')); 406 $this->assertTrue(core_useragent::check_gecko_version('3.6')); 407 $this->assertTrue(core_useragent::check_gecko_version('4.0')); 408 $this->assertTrue(core_useragent::check_gecko_version(20030516)); 409 $this->assertTrue(core_useragent::check_gecko_version(20051106)); 410 $this->assertTrue(core_useragent::check_gecko_version(2006010100)); 411 $this->assertTrue(core_useragent::is_firefox()); 412 $this->assertTrue(core_useragent::check_firefox_version()); 413 $this->assertTrue(core_useragent::check_firefox_version(4.0)); 414 $this->assertFalse(core_useragent::check_firefox_version(5)); 415 $this->assertFalse(core_useragent::check_gecko_version('18.0')); 416 417 } 418 419 /** 420 * Modifies $_SERVER['HTTP_USER_AGENT'] manually to check if supports_svg 421 * works as expected. 422 */ 423 public function test_supports_svg() { 424 $this->assertTrue(core_useragent::supports_svg()); 425 426 // MSIE 5.0 is not considered a browser at all: known false positive. 427 core_useragent::instance(true, $this->user_agents['MSIE']['5.0']['Windows 98']); 428 $this->assertTrue(core_useragent::supports_svg()); 429 430 core_useragent::instance(true, $this->user_agents['MSIE']['5.5']['Windows 2000']); 431 $this->assertFalse(core_useragent::supports_svg()); 432 433 core_useragent::instance(true, $this->user_agents['MSIE']['6.0']['Windows XP SP2']); 434 $this->assertFalse(core_useragent::supports_svg()); 435 436 core_useragent::instance(true, $this->user_agents['MSIE']['7.0']['Windows XP SP2']); 437 $this->assertFalse(core_useragent::supports_svg()); 438 439 core_useragent::instance(true, $this->user_agents['MSIE']['8.0']['Windows Vista']); 440 $this->assertFalse(core_useragent::supports_svg()); 441 442 core_useragent::instance(true, $this->user_agents['MSIE']['9.0']['Windows 7']); 443 $this->assertTrue(core_useragent::supports_svg()); 444 445 core_useragent::instance(true, $this->user_agents['MSIE']['9.0i']['Windows 7']); 446 $this->assertFalse(core_useragent::supports_svg()); 447 448 core_useragent::instance(true, $this->user_agents['MSIE']['10.0']['Windows 8']); 449 $this->assertTrue(core_useragent::supports_svg()); 450 451 core_useragent::instance(true, $this->user_agents['MSIE']['10.0i']['Windows 8']); 452 $this->assertTrue(core_useragent::supports_svg()); 453 454 core_useragent::instance(true, $this->user_agents['MSIE']['11.0']['Windows 8.1']); 455 $this->assertTrue(core_useragent::supports_svg()); 456 457 core_useragent::instance(true, $this->user_agents['MSIE']['11.0i']['Windows 8.1']); 458 $this->assertTrue(core_useragent::supports_svg()); 459 460 core_useragent::instance(true, $this->user_agents['WebKit Android']['525']['G1 Phone']); 461 $this->assertFalse(core_useragent::supports_svg()); 462 463 core_useragent::instance(true, $this->user_agents['WebKit Android']['530']['Nexus']); 464 $this->assertFalse(core_useragent::supports_svg()); 465 466 core_useragent::instance(true, $this->user_agents['WebKit Android']['537']['Samsung GT-9505']); 467 $this->assertTrue(core_useragent::supports_svg()); 468 469 core_useragent::instance(true, $this->user_agents['Opera']['9.0']['Windows XP']); 470 $this->assertFalse(core_useragent::supports_svg()); 471 472 core_useragent::instance(true, $this->user_agents['Chrome']['8']['Mac OS X']); 473 $this->assertTrue(core_useragent::supports_svg()); 474 475 core_useragent::instance(true, $this->user_agents['Firefox']['18.0']['Mac OS X']); 476 $this->assertTrue(core_useragent::supports_svg()); 477 } 478 479 /** 480 * Test browser version classes functionality. 481 */ 482 public function test_get_browser_version_classes() { 483 core_useragent::instance(true, $this->user_agents['Safari']['412']['Mac OS X']); 484 $this->assertEquals(array('safari'), core_useragent::get_browser_version_classes()); 485 486 core_useragent::instance(true, $this->user_agents['Chrome']['8']['Mac OS X']); 487 $this->assertEquals(array('safari'), core_useragent::get_browser_version_classes()); 488 489 core_useragent::instance(true, $this->user_agents['Safari iOS']['528']['iPhone']); 490 $this->assertEquals(array('safari', 'ios'), core_useragent::get_browser_version_classes()); 491 492 core_useragent::instance(true, $this->user_agents['WebKit Android']['530']['Nexus']); 493 $this->assertEquals(array('safari', 'android'), core_useragent::get_browser_version_classes()); 494 495 core_useragent::instance(true, $this->user_agents['Chrome']['8']['Mac OS X']); 496 $this->assertEquals(array('safari'), core_useragent::get_browser_version_classes()); 497 498 core_useragent::instance(true, $this->user_agents['Opera']['9.0']['Windows XP']); 499 $this->assertEquals(array('opera'), core_useragent::get_browser_version_classes()); 500 501 core_useragent::instance(true, $this->user_agents['MSIE']['6.0']['Windows XP SP2']); 502 $this->assertEquals(array('ie', 'ie6'), core_useragent::get_browser_version_classes()); 503 504 core_useragent::instance(true, $this->user_agents['MSIE']['7.0']['Windows XP SP2']); 505 $this->assertEquals(array('ie', 'ie7'), core_useragent::get_browser_version_classes()); 506 507 core_useragent::instance(true, $this->user_agents['MSIE']['8.0']['Windows Vista']); 508 $this->assertEquals(array('ie', 'ie8'), core_useragent::get_browser_version_classes()); 509 510 core_useragent::instance(true, $this->user_agents['MSIE']['9.0']['Windows 7']); 511 $this->assertEquals(array('ie', 'ie9'), core_useragent::get_browser_version_classes()); 512 513 core_useragent::instance(true, $this->user_agents['MSIE']['9.0i']['Windows 7']); 514 $this->assertEquals(array('ie', 'ie9'), core_useragent::get_browser_version_classes()); 515 516 core_useragent::instance(true, $this->user_agents['MSIE']['10.0']['Windows 8']); 517 $this->assertEquals(array('ie', 'ie10'), core_useragent::get_browser_version_classes()); 518 519 core_useragent::instance(true, $this->user_agents['MSIE']['10.0i']['Windows 8']); 520 $this->assertEquals(array('ie', 'ie10'), core_useragent::get_browser_version_classes()); 521 522 core_useragent::instance(true, $this->user_agents['Firefox']['2.0']['Windows XP']); 523 $this->assertEquals(array('gecko', 'gecko18'), core_useragent::get_browser_version_classes()); 524 525 core_useragent::instance(true, $this->user_agents['Firefox']['3.0.6']['SUSE']); 526 $this->assertEquals(array('gecko', 'gecko19'), core_useragent::get_browser_version_classes()); 527 } 528 529 /** 530 * Test device type detection. 531 */ 532 public function test_get_device_type() { 533 // IE8 (common pattern ~1.5% of IE7/8 users have embedded IE6 agent). 534 $ie8 = 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; BT Openworld BB; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Hotbar 10.2.197.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727)'; 535 core_useragent::instance(true, $ie8); 536 $this->assertEquals('default', core_useragent::get_device_type()); 537 // Genuine IE6. 538 $ie6 = 'Mozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; Media Center PC 2.8)'; 539 core_useragent::instance(true, $ie6); 540 $this->assertEquals('legacy', core_useragent::get_device_type()); 541 542 core_useragent::instance(true); 543 } 544 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:29:05 2014 | Cross-referenced by PHPXref 0.7.1 |