[ Index ]

PHP Cross Reference of moodle-2.8

title

Body

[close]

/lib/tests/ -> useragent_test.php (source)

   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  }


Generated: Fri Nov 28 20:29:05 2014 Cross-referenced by PHPXref 0.7.1