Commit | Line | Data |
---|---|---|
c3d2fbf9 SH |
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 | ), | |
d2fdad7c FM |
52 | '7.0b' => array( |
53 | 'Windows XP' => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Meridio for Excel 5.0.251; Meridio for PowerPoint 5.0.251; Meridio for Word 5.0.251; Meridio Protocol; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)' | |
54 | ), | |
c3d2fbf9 SH |
55 | '8.0' => array( |
56 | '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)' | |
57 | ), | |
58 | '9.0' => array( | |
59 | 'Windows 7' => 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)' | |
60 | ), | |
61 | '9.0i' => array( | |
62 | '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)' | |
63 | ), | |
64 | '10.0' => array( | |
65 | 'Windows 8' => 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)' | |
66 | ), | |
67 | '10.0i' => array( | |
68 | '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)' | |
69 | ), | |
a6989aa6 MR |
70 | '11.0' => array( |
71 | 'Windows 8.1' => 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0)' | |
72 | ), | |
bc242bbd MS |
73 | '11.0i' => array( |
74 | 'Windows 8.1' => ' Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C)' | |
75 | ), | |
c3d2fbf9 SH |
76 | ), |
77 | 'Firefox' => array( | |
78 | '1.0.6' => array( | |
79 | 'Windows XP' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6' | |
80 | ), | |
81 | '1.5' => array( | |
82 | 'Windows XP' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8) Gecko/20051107 Firefox/1.5' | |
83 | ), | |
84 | '1.5.0.1' => array( | |
85 | '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' | |
86 | ), | |
87 | '2.0' => array( | |
88 | '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', | |
89 | 'Ubuntu Linux AMD64' => 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1) Gecko/20060601 Firefox/2.0 (Ubuntu-edgy)' | |
90 | ), | |
91 | '3.0.6' => array( | |
92 | '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' | |
93 | ), | |
94 | '3.6' => array( | |
95 | 'Linux' => 'Mozilla/5.0 (X11; Linux i686; rv:2.0) Gecko/20100101 Firefox/3.6' | |
96 | ), | |
97 | '11.0' => array( | |
98 | 'Windows' => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko Firefox/11.0' | |
99 | ), | |
100 | '15.0a2' => array( | |
101 | 'Windows' => 'Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120716 Firefox/15.0a2' | |
102 | ), | |
103 | '18.0' => array( | |
104 | 'Mac OS X' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:18.0) Gecko/18.0 Firefox/18.0' | |
105 | ), | |
106 | ), | |
107 | 'SeaMonkey' => array( | |
108 | '2.0' => array( | |
109 | 'Windows' => 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1b3pre) Gecko/20081208 SeaMonkey/2.0' | |
110 | ), | |
111 | '2.1' => array( | |
112 | 'Linux' => 'Mozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20110609 Firefox/4.0.1 SeaMonkey/2.1' | |
113 | ), | |
114 | '2.3' => array( | |
115 | 'FreeBSD' => 'Mozilla/5.0 (X11; FreeBSD amd64; rv:6.0) Gecko/20110818 Firefox/6.0 SeaMonkey/2.3' | |
116 | ), | |
117 | ), | |
118 | 'Safari' => array( | |
119 | '312' => array( | |
120 | 'Mac OS X' => 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312' | |
121 | ), | |
122 | '412' => array( | |
123 | 'Mac OS X' => 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412 (KHTML, like Gecko) Safari/412' | |
124 | ), | |
125 | '2.0' => array( | |
126 | 'Mac OS X' => 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412 (KHTML, like Gecko) Safari/412' | |
127 | ) | |
128 | ), | |
129 | 'Safari iOS' => array( | |
130 | '528' => array( | |
131 | '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' | |
132 | ), | |
133 | '533' => array( | |
134 | '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' | |
135 | ), | |
136 | ), | |
137 | 'WebKit Android' => array( | |
138 | '525' => array( | |
139 | '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' | |
140 | ), | |
141 | '530' => array( | |
142 | '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' | |
143 | ), | |
657a94fc | 144 | '537' => array( |
8ce30abf B |
145 | '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', |
146 | 'Nexus 5' => 'Mozilla/5.0 (Linux; Android 5.0; Nexus 5 Build/LPX13D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36' | |
657a94fc | 147 | ) |
c3d2fbf9 SH |
148 | ), |
149 | 'Chrome' => array( | |
150 | '8' => array( | |
151 | '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' | |
152 | ), | |
153 | ), | |
154 | 'Opera' => array( | |
155 | '8.51' => array( | |
156 | 'Windows XP' => 'Opera/8.51 (Windows NT 5.1; U; en)' | |
157 | ), | |
158 | '9.0' => array( | |
159 | 'Windows XP' => 'Opera/9.0 (Windows NT 5.1; U; en)', | |
160 | 'Debian Linux' => 'Opera/9.01 (X11; Linux i686; U; en)' | |
161 | ) | |
21ece8ee PN |
162 | ), |
163 | 'MS Word' => array( | |
164 | '2010' => array( | |
165 | 'Windows 7' => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E; ms-office)', | |
166 | 'Mac OS X' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X) Word/14.38.0' | |
167 | ) | |
168 | ), | |
169 | 'MS Outlook' => array( | |
170 | '2010' => array( | |
171 | 'Windows 7' => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E; Microsoft Outlook 14.0.7113; ms-office; MSOffice 14)' | |
172 | ) | |
d2fdad7c FM |
173 | ), |
174 | 'Meridio' => array( | |
175 | '5.0.251' => array( | |
176 | 'Windows XP' => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Meridio for Excel 5.0.251; Meridio for PowerPoint 5.0.251; Meridio for Word 5.0.251; Meridio Protocol; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)' | |
177 | ) | |
c3d2fbf9 SH |
178 | ) |
179 | ); | |
180 | ||
181 | /** | |
182 | * Test instance generation. | |
183 | */ | |
184 | public function test_instance() { | |
185 | $this->assertInstanceOf('core_useragent', core_useragent::instance()); | |
186 | $this->assertInstanceOf('core_useragent', core_useragent::instance(true)); | |
187 | } | |
188 | ||
189 | /** | |
190 | * Modifies $_SERVER['HTTP_USER_AGENT'] manually to check if check_browser_version | |
191 | * works as expected. | |
192 | */ | |
193 | public function test_check_browser_version() { | |
194 | core_useragent::instance(true, $this->user_agents['Safari']['412']['Mac OS X']); | |
378b3eac | 195 | $this->assertTrue(core_useragent::is_safari()); |
c3d2fbf9 | 196 | $this->assertTrue(core_useragent::check_safari_version()); |
378b3eac | 197 | $this->assertTrue(core_useragent::is_webkit()); |
c3d2fbf9 SH |
198 | $this->assertTrue(core_useragent::check_webkit_version()); |
199 | $this->assertTrue(core_useragent::check_safari_version('312')); | |
200 | $this->assertFalse(core_useragent::check_safari_version('500')); | |
378b3eac | 201 | $this->assertFalse(core_useragent::is_chrome()); |
c3d2fbf9 | 202 | $this->assertFalse(core_useragent::check_chrome_version()); |
378b3eac | 203 | $this->assertFalse(core_useragent::is_safari_ios()); |
c3d2fbf9 | 204 | $this->assertFalse(core_useragent::check_safari_ios_version()); |
21ece8ee | 205 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 SH |
206 | |
207 | core_useragent::instance(true, $this->user_agents['Safari iOS']['528']['iPhone']); | |
378b3eac | 208 | $this->assertTrue(core_useragent::is_safari_ios()); |
c3d2fbf9 | 209 | $this->assertTrue(core_useragent::check_safari_ios_version()); |
378b3eac | 210 | $this->assertTrue(core_useragent::is_webkit()); |
c3d2fbf9 SH |
211 | $this->assertTrue(core_useragent::check_webkit_version()); |
212 | $this->assertTrue(core_useragent::check_safari_ios_version('527')); | |
213 | $this->assertFalse(core_useragent::check_safari_ios_version(590)); | |
214 | $this->assertFalse(core_useragent::check_safari_version('312')); | |
215 | $this->assertFalse(core_useragent::check_safari_version('500')); | |
378b3eac | 216 | $this->assertFalse(core_useragent::is_chrome()); |
c3d2fbf9 | 217 | $this->assertFalse(core_useragent::check_chrome_version()); |
21ece8ee | 218 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 SH |
219 | |
220 | core_useragent::instance(true, $this->user_agents['WebKit Android']['530']['Nexus']); | |
378b3eac | 221 | $this->assertTrue(core_useragent::is_webkit()); |
c3d2fbf9 SH |
222 | $this->assertTrue(core_useragent::check_webkit_version()); |
223 | $this->assertTrue(core_useragent::check_webkit_android_version('527')); | |
224 | $this->assertFalse(core_useragent::check_webkit_android_version(590)); | |
378b3eac | 225 | $this->assertFalse(core_useragent::is_safari()); |
c3d2fbf9 | 226 | $this->assertFalse(core_useragent::check_safari_version()); |
378b3eac | 227 | $this->assertFalse(core_useragent::is_chrome()); |
c3d2fbf9 | 228 | $this->assertFalse(core_useragent::check_chrome_version()); |
21ece8ee | 229 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 | 230 | |
8ce30abf B |
231 | core_useragent::instance(true, $this->user_agents['WebKit Android']['537']['Samsung GT-9505']); |
232 | $this->assertTrue(core_useragent::is_webkit()); | |
233 | $this->assertTrue(core_useragent::check_webkit_version()); | |
234 | $this->assertTrue(core_useragent::check_webkit_android_version('527')); | |
235 | $this->assertTrue(core_useragent::is_chrome()); | |
236 | $this->assertTrue(core_useragent::check_chrome_version()); | |
237 | $this->assertFalse(core_useragent::check_webkit_android_version(590)); | |
238 | $this->assertFalse(core_useragent::is_safari()); | |
239 | $this->assertFalse(core_useragent::check_safari_version()); | |
240 | ||
241 | core_useragent::instance(true, $this->user_agents['WebKit Android']['537']['Nexus 5']); | |
242 | $this->assertTrue(core_useragent::is_webkit()); | |
243 | $this->assertTrue(core_useragent::check_webkit_version()); | |
244 | $this->assertTrue(core_useragent::check_webkit_android_version('527')); | |
245 | $this->assertTrue(core_useragent::is_chrome()); | |
246 | $this->assertTrue(core_useragent::check_chrome_version()); | |
247 | $this->assertFalse(core_useragent::check_webkit_android_version(590)); | |
248 | $this->assertFalse(core_useragent::is_safari()); | |
249 | $this->assertFalse(core_useragent::check_safari_version()); | |
250 | ||
c3d2fbf9 | 251 | core_useragent::instance(true, $this->user_agents['Chrome']['8']['Mac OS X']); |
378b3eac | 252 | $this->assertTrue(core_useragent::is_chrome()); |
c3d2fbf9 | 253 | $this->assertTrue(core_useragent::check_chrome_version()); |
378b3eac | 254 | $this->assertTrue(core_useragent::is_webkit()); |
c3d2fbf9 SH |
255 | $this->assertTrue(core_useragent::check_webkit_version()); |
256 | $this->assertTrue(core_useragent::check_chrome_version(8)); | |
257 | $this->assertFalse(core_useragent::check_chrome_version(10)); | |
258 | $this->assertFalse(core_useragent::check_safari_version('1')); | |
21ece8ee | 259 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 SH |
260 | |
261 | core_useragent::instance(true, $this->user_agents['Opera']['9.0']['Windows XP']); | |
378b3eac | 262 | $this->assertTrue(core_useragent::is_opera()); |
c3d2fbf9 SH |
263 | $this->assertTrue(core_useragent::check_opera_version()); |
264 | $this->assertTrue(core_useragent::check_opera_version('8.0')); | |
265 | $this->assertFalse(core_useragent::check_opera_version('10.0')); | |
21ece8ee | 266 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 SH |
267 | |
268 | core_useragent::instance(true, $this->user_agents['MSIE']['6.0']['Windows XP SP2']); | |
378b3eac | 269 | $this->assertTrue(core_useragent::is_ie()); |
c3d2fbf9 SH |
270 | $this->assertTrue(core_useragent::check_ie_version()); |
271 | $this->assertTrue(core_useragent::check_ie_version('5.0')); | |
bc242bbd | 272 | $this->assertFalse(core_useragent::check_ie_compatibility_view()); |
c3d2fbf9 | 273 | $this->assertFalse(core_useragent::check_ie_version('7.0')); |
21ece8ee | 274 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 SH |
275 | |
276 | core_useragent::instance(true, $this->user_agents['MSIE']['5.0']['Windows 98']); | |
378b3eac | 277 | $this->assertFalse(core_useragent::is_ie()); |
c3d2fbf9 SH |
278 | $this->assertFalse(core_useragent::check_ie_version()); |
279 | $this->assertTrue(core_useragent::check_ie_version(0)); | |
280 | $this->assertTrue(core_useragent::check_ie_version('5.0')); | |
bc242bbd | 281 | $this->assertFalse(core_useragent::check_ie_compatibility_view()); |
c3d2fbf9 | 282 | $this->assertFalse(core_useragent::check_ie_version('7.0')); |
21ece8ee | 283 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 | 284 | |
d2fdad7c FM |
285 | core_useragent::instance(true, $this->user_agents['MSIE']['7.0']['Windows XP SP2']); |
286 | $this->assertTrue(core_useragent::is_ie()); | |
287 | $this->assertTrue(core_useragent::check_ie_version()); | |
288 | $this->assertTrue(core_useragent::check_ie_version('7.0')); | |
289 | $this->assertFalse(core_useragent::check_ie_compatibility_view()); | |
290 | $this->assertFalse(core_useragent::check_ie_version('8.0')); | |
291 | $this->assertFalse(core_useragent::is_msword()); | |
292 | ||
293 | core_useragent::instance(true, $this->user_agents['MSIE']['7.0b']['Windows XP']); | |
294 | $this->assertTrue(core_useragent::is_ie()); | |
295 | $this->assertTrue(core_useragent::check_ie_version()); | |
296 | $this->assertTrue(core_useragent::check_ie_version('7.0')); | |
297 | $this->assertFalse(core_useragent::check_ie_compatibility_view()); | |
298 | $this->assertFalse(core_useragent::check_ie_version('8.0')); | |
299 | $this->assertFalse(core_useragent::is_msword()); | |
300 | ||
c3d2fbf9 | 301 | core_useragent::instance(true, $this->user_agents['MSIE']['9.0']['Windows 7']); |
378b3eac | 302 | $this->assertTrue(core_useragent::is_ie()); |
c3d2fbf9 SH |
303 | $this->assertTrue(core_useragent::check_ie_version()); |
304 | $this->assertTrue(core_useragent::check_ie_version(0)); | |
305 | $this->assertTrue(core_useragent::check_ie_version('5.0')); | |
306 | $this->assertTrue(core_useragent::check_ie_version('9.0')); | |
bc242bbd | 307 | $this->assertFalse(core_useragent::check_ie_compatibility_view()); |
c3d2fbf9 | 308 | $this->assertFalse(core_useragent::check_ie_version('10')); |
21ece8ee | 309 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 SH |
310 | |
311 | core_useragent::instance(true, $this->user_agents['MSIE']['9.0i']['Windows 7']); | |
378b3eac | 312 | $this->assertTrue(core_useragent::is_ie()); |
c3d2fbf9 SH |
313 | $this->assertTrue(core_useragent::check_ie_version()); |
314 | $this->assertTrue(core_useragent::check_ie_version(0)); | |
315 | $this->assertTrue(core_useragent::check_ie_version('5.0')); | |
316 | $this->assertTrue(core_useragent::check_ie_version('9.0')); | |
bc242bbd | 317 | $this->assertTrue(core_useragent::check_ie_compatibility_view()); |
c3d2fbf9 | 318 | $this->assertFalse(core_useragent::check_ie_version('10')); |
21ece8ee | 319 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 SH |
320 | |
321 | core_useragent::instance(true, $this->user_agents['MSIE']['10.0']['Windows 8']); | |
378b3eac | 322 | $this->assertTrue(core_useragent::is_ie()); |
c3d2fbf9 SH |
323 | $this->assertTrue(core_useragent::check_ie_version()); |
324 | $this->assertTrue(core_useragent::check_ie_version(0)); | |
325 | $this->assertTrue(core_useragent::check_ie_version('5.0')); | |
326 | $this->assertTrue(core_useragent::check_ie_version('9.0')); | |
327 | $this->assertTrue(core_useragent::check_ie_version('10')); | |
bc242bbd | 328 | $this->assertFalse(core_useragent::check_ie_compatibility_view()); |
c3d2fbf9 | 329 | $this->assertFalse(core_useragent::check_ie_version('11')); |
21ece8ee | 330 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 SH |
331 | |
332 | core_useragent::instance(true, $this->user_agents['MSIE']['10.0i']['Windows 8']); | |
378b3eac | 333 | $this->assertTrue(core_useragent::is_ie()); |
c3d2fbf9 SH |
334 | $this->assertTrue(core_useragent::check_ie_version()); |
335 | $this->assertTrue(core_useragent::check_ie_version(0)); | |
336 | $this->assertTrue(core_useragent::check_ie_version('5.0')); | |
337 | $this->assertTrue(core_useragent::check_ie_version('9.0')); | |
338 | $this->assertTrue(core_useragent::check_ie_version('10')); | |
bc242bbd | 339 | $this->assertTrue(core_useragent::check_ie_compatibility_view()); |
c3d2fbf9 | 340 | $this->assertFalse(core_useragent::check_ie_version('11')); |
21ece8ee | 341 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 | 342 | |
a6989aa6 MR |
343 | core_useragent::instance(true, $this->user_agents['MSIE']['11.0']['Windows 8.1']); |
344 | $this->assertTrue(core_useragent::is_ie()); | |
345 | $this->assertTrue(core_useragent::check_ie_version()); | |
346 | $this->assertTrue(core_useragent::check_ie_version(0)); | |
347 | $this->assertTrue(core_useragent::check_ie_version('5.0')); | |
348 | $this->assertTrue(core_useragent::check_ie_version('9.0')); | |
349 | $this->assertTrue(core_useragent::check_ie_version('10')); | |
350 | $this->assertTrue(core_useragent::check_ie_version('11')); | |
bc242bbd MS |
351 | $this->assertFalse(core_useragent::check_ie_compatibility_view()); |
352 | $this->assertFalse(core_useragent::check_ie_version('12')); | |
21ece8ee | 353 | $this->assertFalse(core_useragent::is_msword()); |
bc242bbd MS |
354 | |
355 | core_useragent::instance(true, $this->user_agents['MSIE']['11.0i']['Windows 8.1']); | |
356 | $this->assertTrue(core_useragent::is_ie()); | |
357 | $this->assertTrue(core_useragent::check_ie_version()); | |
358 | $this->assertTrue(core_useragent::check_ie_version(0)); | |
359 | $this->assertTrue(core_useragent::check_ie_version('5.0')); | |
360 | $this->assertTrue(core_useragent::check_ie_version('9.0')); | |
361 | $this->assertTrue(core_useragent::check_ie_version('10')); | |
362 | $this->assertTrue(core_useragent::check_ie_version('11')); | |
363 | $this->assertTrue(core_useragent::check_ie_compatibility_view()); | |
a6989aa6 | 364 | $this->assertFalse(core_useragent::check_ie_version('12')); |
21ece8ee | 365 | $this->assertFalse(core_useragent::is_msword()); |
a6989aa6 | 366 | |
c3d2fbf9 | 367 | core_useragent::instance(true, $this->user_agents['Firefox']['2.0']['Windows XP']); |
378b3eac | 368 | $this->assertTrue(core_useragent::is_firefox()); |
c3d2fbf9 SH |
369 | $this->assertTrue(core_useragent::check_firefox_version()); |
370 | $this->assertTrue(core_useragent::check_firefox_version('1.5')); | |
371 | $this->assertFalse(core_useragent::check_firefox_version('3.0')); | |
372 | $this->assertTrue(core_useragent::check_gecko_version('2')); | |
373 | $this->assertTrue(core_useragent::check_gecko_version(20030516)); | |
374 | $this->assertTrue(core_useragent::check_gecko_version(20051106)); | |
375 | $this->assertTrue(core_useragent::check_gecko_version(2006010100)); | |
21ece8ee | 376 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 SH |
377 | |
378 | core_useragent::instance(true, $this->user_agents['Firefox']['1.0.6']['Windows XP']); | |
378b3eac | 379 | $this->assertTrue(core_useragent::is_firefox()); |
c3d2fbf9 SH |
380 | $this->assertTrue(core_useragent::check_firefox_version()); |
381 | $this->assertTrue(core_useragent::check_gecko_version('1')); | |
382 | $this->assertFalse(core_useragent::check_gecko_version(20030516)); | |
383 | $this->assertFalse(core_useragent::check_gecko_version(20051106)); | |
384 | $this->assertFalse(core_useragent::check_gecko_version(2006010100)); | |
385 | $this->assertFalse(core_useragent::check_firefox_version('1.5')); | |
386 | $this->assertFalse(core_useragent::check_firefox_version('3.0')); | |
387 | $this->assertFalse(core_useragent::check_gecko_version('2')); | |
21ece8ee | 388 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 SH |
389 | |
390 | core_useragent::instance(true, $this->user_agents['Firefox']['2.0']['Windows XP']); | |
378b3eac | 391 | $this->assertTrue(core_useragent::is_firefox()); |
c3d2fbf9 SH |
392 | $this->assertTrue(core_useragent::check_firefox_version()); |
393 | $this->assertTrue(core_useragent::check_firefox_version('1.5')); | |
394 | $this->assertTrue(core_useragent::check_gecko_version('1')); | |
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_firefox_version('3.0')); | |
21ece8ee | 400 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 SH |
401 | |
402 | core_useragent::instance(true, $this->user_agents['Firefox']['3.6']['Linux']); | |
378b3eac | 403 | $this->assertTrue(core_useragent::is_firefox()); |
c3d2fbf9 SH |
404 | $this->assertTrue(core_useragent::check_firefox_version()); |
405 | $this->assertTrue(core_useragent::check_firefox_version('1.5')); | |
406 | $this->assertTrue(core_useragent::check_firefox_version('3.0')); | |
407 | $this->assertTrue(core_useragent::check_gecko_version('2')); | |
408 | $this->assertTrue(core_useragent::check_gecko_version('3.6')); | |
409 | $this->assertTrue(core_useragent::check_gecko_version(20030516)); | |
410 | $this->assertTrue(core_useragent::check_gecko_version(20051106)); | |
411 | $this->assertTrue(core_useragent::check_gecko_version(2006010100)); | |
412 | $this->assertFalse(core_useragent::check_firefox_version('4')); | |
413 | $this->assertFalse(core_useragent::check_firefox_version('10')); | |
21ece8ee | 414 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 SH |
415 | |
416 | core_useragent::instance(true, $this->user_agents['Firefox']['3.6']['Linux']); | |
378b3eac | 417 | $this->assertTrue(core_useragent::is_firefox()); |
c3d2fbf9 SH |
418 | $this->assertTrue(core_useragent::check_firefox_version()); |
419 | $this->assertTrue(core_useragent::check_firefox_version('1.5')); | |
420 | $this->assertTrue(core_useragent::check_firefox_version('3.0')); | |
421 | $this->assertTrue(core_useragent::check_gecko_version('2')); | |
422 | $this->assertTrue(core_useragent::check_gecko_version('3.6')); | |
423 | $this->assertTrue(core_useragent::check_gecko_version(20030516)); | |
424 | $this->assertTrue(core_useragent::check_gecko_version(20051106)); | |
425 | $this->assertTrue(core_useragent::check_gecko_version(2006010100)); | |
426 | $this->assertFalse(core_useragent::check_firefox_version('4')); | |
427 | $this->assertFalse(core_useragent::check_firefox_version('10')); | |
428 | $this->assertFalse(core_useragent::check_firefox_version('18')); | |
429 | $this->assertFalse(core_useragent::check_gecko_version('4')); | |
21ece8ee | 430 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 SH |
431 | |
432 | core_useragent::instance(true, $this->user_agents['Firefox']['15.0a2']['Windows']); | |
378b3eac | 433 | $this->assertTrue(core_useragent::is_firefox()); |
c3d2fbf9 SH |
434 | $this->assertTrue(core_useragent::check_firefox_version()); |
435 | $this->assertTrue(core_useragent::check_firefox_version('1.5')); | |
436 | $this->assertTrue(core_useragent::check_firefox_version('3.0')); | |
437 | $this->assertTrue(core_useragent::check_gecko_version('2')); | |
438 | $this->assertTrue(core_useragent::check_gecko_version('3.6')); | |
439 | $this->assertTrue(core_useragent::check_gecko_version('15.0')); | |
440 | $this->assertTrue(core_useragent::check_gecko_version(20030516)); | |
441 | $this->assertTrue(core_useragent::check_gecko_version(20051106)); | |
442 | $this->assertTrue(core_useragent::check_gecko_version(2006010100)); | |
443 | $this->assertTrue(core_useragent::check_firefox_version('4')); | |
444 | $this->assertTrue(core_useragent::check_firefox_version('10')); | |
445 | $this->assertTrue(core_useragent::check_firefox_version('15')); | |
446 | $this->assertFalse(core_useragent::check_firefox_version('18')); | |
447 | $this->assertFalse(core_useragent::check_gecko_version('18')); | |
21ece8ee | 448 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 SH |
449 | |
450 | core_useragent::instance(true, $this->user_agents['Firefox']['18.0']['Mac OS X']); | |
378b3eac | 451 | $this->assertTrue(core_useragent::is_firefox()); |
c3d2fbf9 SH |
452 | $this->assertTrue(core_useragent::check_firefox_version()); |
453 | $this->assertTrue(core_useragent::check_firefox_version('1.5')); | |
454 | $this->assertTrue(core_useragent::check_firefox_version('3.0')); | |
455 | $this->assertTrue(core_useragent::check_gecko_version('2')); | |
456 | $this->assertTrue(core_useragent::check_gecko_version('3.6')); | |
457 | $this->assertTrue(core_useragent::check_gecko_version('15.0')); | |
458 | $this->assertTrue(core_useragent::check_gecko_version('18.0')); | |
459 | $this->assertTrue(core_useragent::check_gecko_version(20030516)); | |
460 | $this->assertTrue(core_useragent::check_gecko_version(20051106)); | |
461 | $this->assertTrue(core_useragent::check_gecko_version(2006010100)); | |
462 | $this->assertTrue(core_useragent::check_firefox_version('4')); | |
463 | $this->assertTrue(core_useragent::check_firefox_version('10')); | |
464 | $this->assertTrue(core_useragent::check_firefox_version('15')); | |
465 | $this->assertTrue(core_useragent::check_firefox_version('18')); | |
466 | $this->assertFalse(core_useragent::check_firefox_version('19')); | |
467 | $this->assertFalse(core_useragent::check_gecko_version('19')); | |
21ece8ee | 468 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 SH |
469 | |
470 | core_useragent::instance(true, $this->user_agents['SeaMonkey']['2.0']['Windows']); | |
471 | $this->assertTrue(core_useragent::check_gecko_version('2')); | |
472 | $this->assertTrue(core_useragent::check_gecko_version(20030516)); | |
473 | $this->assertTrue(core_useragent::check_gecko_version(20051106)); | |
474 | $this->assertTrue(core_useragent::check_gecko_version(2006010100)); | |
475 | $this->assertFalse(core_useragent::check_gecko_version('3.6')); | |
476 | $this->assertFalse(core_useragent::check_gecko_version('4.0')); | |
378b3eac | 477 | $this->assertFalse(core_useragent::is_firefox()); |
c3d2fbf9 | 478 | $this->assertFalse(core_useragent::check_firefox_version()); |
21ece8ee | 479 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 SH |
480 | |
481 | core_useragent::instance(true, $this->user_agents['SeaMonkey']['2.1']['Linux']); | |
482 | $this->assertTrue(core_useragent::check_gecko_version('2')); | |
483 | $this->assertTrue(core_useragent::check_gecko_version('3.6')); | |
484 | $this->assertTrue(core_useragent::check_gecko_version('4.0')); | |
485 | $this->assertTrue(core_useragent::check_gecko_version(20030516)); | |
486 | $this->assertTrue(core_useragent::check_gecko_version(20051106)); | |
487 | $this->assertTrue(core_useragent::check_gecko_version(2006010100)); | |
378b3eac | 488 | $this->assertTrue(core_useragent::is_firefox()); |
c3d2fbf9 SH |
489 | $this->assertTrue(core_useragent::check_firefox_version()); |
490 | $this->assertTrue(core_useragent::check_firefox_version(4.0)); | |
491 | $this->assertFalse(core_useragent::check_firefox_version(5)); | |
492 | $this->assertFalse(core_useragent::check_gecko_version('18.0')); | |
21ece8ee | 493 | $this->assertFalse(core_useragent::is_msword()); |
c3d2fbf9 | 494 | |
21ece8ee PN |
495 | // We're not really interested in what MS Word gets identified as beyond MS Word itself. |
496 | core_useragent::instance(true, $this->user_agents['MS Word']['2010']['Windows 7']); | |
497 | $this->assertTrue(core_useragent::is_msword()); | |
498 | ||
499 | core_useragent::instance(true, $this->user_agents['MS Word']['2010']['Mac OS X']); | |
500 | $this->assertTrue(core_useragent::is_msword()); | |
501 | ||
502 | // Outlook should not be considered to be MS Word. | |
503 | core_useragent::instance(true, $this->user_agents['MS Outlook']['2010']['Windows 7']); | |
504 | $this->assertFalse(core_useragent::is_msword()); | |
d2fdad7c FM |
505 | |
506 | // Meridio should not be considered to be MS Word. | |
507 | core_useragent::instance(true, $this->user_agents['Meridio']['5.0.251']['Windows XP']); | |
508 | $this->assertFalse(core_useragent::is_msword()); | |
c3d2fbf9 SH |
509 | } |
510 | ||
657a94fc MS |
511 | /** |
512 | * Modifies $_SERVER['HTTP_USER_AGENT'] manually to check if supports_svg | |
513 | * works as expected. | |
514 | */ | |
515 | public function test_supports_svg() { | |
657a94fc MS |
516 | // MSIE 5.0 is not considered a browser at all: known false positive. |
517 | core_useragent::instance(true, $this->user_agents['MSIE']['5.0']['Windows 98']); | |
518 | $this->assertTrue(core_useragent::supports_svg()); | |
519 | ||
520 | core_useragent::instance(true, $this->user_agents['MSIE']['5.5']['Windows 2000']); | |
521 | $this->assertFalse(core_useragent::supports_svg()); | |
522 | ||
523 | core_useragent::instance(true, $this->user_agents['MSIE']['6.0']['Windows XP SP2']); | |
524 | $this->assertFalse(core_useragent::supports_svg()); | |
525 | ||
526 | core_useragent::instance(true, $this->user_agents['MSIE']['7.0']['Windows XP SP2']); | |
527 | $this->assertFalse(core_useragent::supports_svg()); | |
528 | ||
529 | core_useragent::instance(true, $this->user_agents['MSIE']['8.0']['Windows Vista']); | |
530 | $this->assertFalse(core_useragent::supports_svg()); | |
531 | ||
532 | core_useragent::instance(true, $this->user_agents['MSIE']['9.0']['Windows 7']); | |
533 | $this->assertTrue(core_useragent::supports_svg()); | |
534 | ||
535 | core_useragent::instance(true, $this->user_agents['MSIE']['9.0i']['Windows 7']); | |
536 | $this->assertFalse(core_useragent::supports_svg()); | |
537 | ||
538 | core_useragent::instance(true, $this->user_agents['MSIE']['10.0']['Windows 8']); | |
539 | $this->assertTrue(core_useragent::supports_svg()); | |
540 | ||
541 | core_useragent::instance(true, $this->user_agents['MSIE']['10.0i']['Windows 8']); | |
542 | $this->assertTrue(core_useragent::supports_svg()); | |
543 | ||
544 | core_useragent::instance(true, $this->user_agents['MSIE']['11.0']['Windows 8.1']); | |
545 | $this->assertTrue(core_useragent::supports_svg()); | |
546 | ||
547 | core_useragent::instance(true, $this->user_agents['MSIE']['11.0i']['Windows 8.1']); | |
548 | $this->assertTrue(core_useragent::supports_svg()); | |
549 | ||
550 | core_useragent::instance(true, $this->user_agents['WebKit Android']['525']['G1 Phone']); | |
551 | $this->assertFalse(core_useragent::supports_svg()); | |
552 | ||
553 | core_useragent::instance(true, $this->user_agents['WebKit Android']['530']['Nexus']); | |
554 | $this->assertFalse(core_useragent::supports_svg()); | |
555 | ||
556 | core_useragent::instance(true, $this->user_agents['WebKit Android']['537']['Samsung GT-9505']); | |
557 | $this->assertTrue(core_useragent::supports_svg()); | |
558 | ||
559 | core_useragent::instance(true, $this->user_agents['Opera']['9.0']['Windows XP']); | |
560 | $this->assertFalse(core_useragent::supports_svg()); | |
561 | ||
562 | core_useragent::instance(true, $this->user_agents['Chrome']['8']['Mac OS X']); | |
563 | $this->assertTrue(core_useragent::supports_svg()); | |
564 | ||
565 | core_useragent::instance(true, $this->user_agents['Firefox']['18.0']['Mac OS X']); | |
566 | $this->assertTrue(core_useragent::supports_svg()); | |
567 | } | |
568 | ||
c3d2fbf9 SH |
569 | /** |
570 | * Test browser version classes functionality. | |
571 | */ | |
572 | public function test_get_browser_version_classes() { | |
573 | core_useragent::instance(true, $this->user_agents['Safari']['412']['Mac OS X']); | |
574 | $this->assertEquals(array('safari'), core_useragent::get_browser_version_classes()); | |
575 | ||
576 | core_useragent::instance(true, $this->user_agents['Chrome']['8']['Mac OS X']); | |
577 | $this->assertEquals(array('safari'), core_useragent::get_browser_version_classes()); | |
578 | ||
579 | core_useragent::instance(true, $this->user_agents['Safari iOS']['528']['iPhone']); | |
580 | $this->assertEquals(array('safari', 'ios'), core_useragent::get_browser_version_classes()); | |
581 | ||
582 | core_useragent::instance(true, $this->user_agents['WebKit Android']['530']['Nexus']); | |
583 | $this->assertEquals(array('safari', 'android'), core_useragent::get_browser_version_classes()); | |
584 | ||
585 | core_useragent::instance(true, $this->user_agents['Chrome']['8']['Mac OS X']); | |
586 | $this->assertEquals(array('safari'), core_useragent::get_browser_version_classes()); | |
587 | ||
588 | core_useragent::instance(true, $this->user_agents['Opera']['9.0']['Windows XP']); | |
589 | $this->assertEquals(array('opera'), core_useragent::get_browser_version_classes()); | |
590 | ||
591 | core_useragent::instance(true, $this->user_agents['MSIE']['6.0']['Windows XP SP2']); | |
592 | $this->assertEquals(array('ie', 'ie6'), core_useragent::get_browser_version_classes()); | |
593 | ||
594 | core_useragent::instance(true, $this->user_agents['MSIE']['7.0']['Windows XP SP2']); | |
595 | $this->assertEquals(array('ie', 'ie7'), core_useragent::get_browser_version_classes()); | |
596 | ||
597 | core_useragent::instance(true, $this->user_agents['MSIE']['8.0']['Windows Vista']); | |
598 | $this->assertEquals(array('ie', 'ie8'), core_useragent::get_browser_version_classes()); | |
599 | ||
600 | core_useragent::instance(true, $this->user_agents['MSIE']['9.0']['Windows 7']); | |
601 | $this->assertEquals(array('ie', 'ie9'), core_useragent::get_browser_version_classes()); | |
602 | ||
603 | core_useragent::instance(true, $this->user_agents['MSIE']['9.0i']['Windows 7']); | |
604 | $this->assertEquals(array('ie', 'ie9'), core_useragent::get_browser_version_classes()); | |
605 | ||
606 | core_useragent::instance(true, $this->user_agents['MSIE']['10.0']['Windows 8']); | |
607 | $this->assertEquals(array('ie', 'ie10'), core_useragent::get_browser_version_classes()); | |
608 | ||
609 | core_useragent::instance(true, $this->user_agents['MSIE']['10.0i']['Windows 8']); | |
610 | $this->assertEquals(array('ie', 'ie10'), core_useragent::get_browser_version_classes()); | |
611 | ||
612 | core_useragent::instance(true, $this->user_agents['Firefox']['2.0']['Windows XP']); | |
613 | $this->assertEquals(array('gecko', 'gecko18'), core_useragent::get_browser_version_classes()); | |
614 | ||
615 | core_useragent::instance(true, $this->user_agents['Firefox']['3.0.6']['SUSE']); | |
616 | $this->assertEquals(array('gecko', 'gecko19'), core_useragent::get_browser_version_classes()); | |
617 | } | |
618 | ||
619 | /** | |
620 | * Test device type detection. | |
621 | */ | |
622 | public function test_get_device_type() { | |
623 | // IE8 (common pattern ~1.5% of IE7/8 users have embedded IE6 agent). | |
624 | $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)'; | |
625 | core_useragent::instance(true, $ie8); | |
626 | $this->assertEquals('default', core_useragent::get_device_type()); | |
627 | // Genuine IE6. | |
628 | $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)'; | |
629 | core_useragent::instance(true, $ie6); | |
630 | $this->assertEquals('legacy', core_useragent::get_device_type()); | |
631 | ||
632 | core_useragent::instance(true); | |
633 | } | |
378b3eac | 634 | } |