iGEL-ua_parser 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +50 -0
- data/Rakefile +12 -0
- data/apache_log_tester.rb +138 -0
- data/lib/ua_parser/user_agent.rb +492 -0
- data/lib/ua_parser/version.rb +85 -0
- data/lib/ua_parser.rb +2 -0
- data/test/crawler_test.rb +620 -0
- data/test/gecko_test.rb +493 -0
- data/test/other_test.rb +146 -0
- data/test/presto_test.rb +169 -0
- data/test/trident_test.rb +146 -0
- data/test/version_test.rb +130 -0
- data/test/webkit_test.rb +242 -0
- data/ua_parser.gemspec +32 -0
- metadata +81 -0
data/test/gecko_test.rb
ADDED
@@ -0,0 +1,493 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'ua_parser'
|
5
|
+
|
6
|
+
class GeckoTest < Test::Unit::TestCase
|
7
|
+
include UaParser
|
8
|
+
|
9
|
+
def test_bon_echo_2_0_a3_win_xp
|
10
|
+
ua = UserAgent.new "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1a3) Gecko/20060526 BonEcho/2.0a3"
|
11
|
+
assert ua.known?
|
12
|
+
assert ua.browser?
|
13
|
+
assert !ua.bot?
|
14
|
+
assert !ua.feed_reader?
|
15
|
+
assert !ua.other?
|
16
|
+
assert_equal :gecko, ua.render_engine
|
17
|
+
assert_equal "1.8.1a3", ua.render_engine_version.full
|
18
|
+
assert_equal "1.8", ua.render_engine_version.major
|
19
|
+
assert_equal :bonecho, ua.name
|
20
|
+
assert_equal "2.0a3", ua.version.full
|
21
|
+
assert_equal "2.0a", ua.version.major
|
22
|
+
assert_equal [], ua.emails
|
23
|
+
assert_equal nil, ua.email
|
24
|
+
assert_equal [], ua.urls
|
25
|
+
assert_equal nil, ua.url
|
26
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
27
|
+
assert_raise NotImplementedError do
|
28
|
+
ua.method(method).call
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_bon_echo_2_0_0_4_linux_x86_64
|
34
|
+
ua = UserAgent.new "Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.4) Gecko/20080721 BonEcho/2.0.0.4"
|
35
|
+
assert ua.known?
|
36
|
+
assert ua.browser?
|
37
|
+
assert !ua.bot?
|
38
|
+
assert !ua.feed_reader?
|
39
|
+
assert !ua.other?
|
40
|
+
assert_equal :gecko, ua.render_engine
|
41
|
+
assert_equal "1.8.1.4", ua.render_engine_version.full
|
42
|
+
assert_equal :bonecho, ua.name
|
43
|
+
assert_equal "2.0.0.4", ua.version.full
|
44
|
+
assert_equal "2.0", ua.version.major
|
45
|
+
assert_equal [], ua.emails
|
46
|
+
assert_equal nil, ua.email
|
47
|
+
assert_equal [], ua.urls
|
48
|
+
assert_equal nil, ua.url
|
49
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
50
|
+
assert_raise NotImplementedError do
|
51
|
+
ua.method(method).call
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_camino_155_mac_ppc
|
57
|
+
ua = UserAgent.new "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en; rv:1.8.1.12) Gecko/20080206 Camino/1.5.5"
|
58
|
+
assert ua.known?
|
59
|
+
assert ua.browser?
|
60
|
+
assert !ua.bot?
|
61
|
+
assert !ua.feed_reader?
|
62
|
+
assert !ua.other?
|
63
|
+
assert_equal :gecko, ua.render_engine
|
64
|
+
assert_equal "1.8.1.12", ua.render_engine_version.full
|
65
|
+
assert_equal "1.8", ua.render_engine_version.major
|
66
|
+
assert_equal :camino, ua.name
|
67
|
+
assert_equal "1.5.5", ua.version.full
|
68
|
+
assert_equal "1.5", ua.version.major
|
69
|
+
assert_equal [], ua.emails
|
70
|
+
assert_equal nil, ua.email
|
71
|
+
assert_equal [], ua.urls
|
72
|
+
assert_equal nil, ua.url
|
73
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
74
|
+
assert_raise NotImplementedError do
|
75
|
+
ua.method(method).call
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_firefox_2006_linux_swiftfox
|
81
|
+
ua = UserAgent.new "Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.8.1.6) Gecko/20070803 Firefox/2.0.0.6 (Swiftfox)"
|
82
|
+
assert ua.known?
|
83
|
+
assert ua.browser?
|
84
|
+
assert !ua.bot?
|
85
|
+
assert !ua.feed_reader?
|
86
|
+
assert !ua.other?
|
87
|
+
assert_equal :gecko, ua.render_engine
|
88
|
+
assert_equal "1.8.1.6", ua.render_engine_version.full
|
89
|
+
assert_equal :firefox, ua.name
|
90
|
+
assert_equal "2.0.0.6", ua.version.full
|
91
|
+
assert_equal "2.0", ua.version.major
|
92
|
+
assert_equal [], ua.emails
|
93
|
+
assert_equal nil, ua.email
|
94
|
+
assert_equal [], ua.urls
|
95
|
+
assert_equal nil, ua.url
|
96
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
97
|
+
assert_raise NotImplementedError do
|
98
|
+
ua.method(method).call
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_firefox_302_mac_intel
|
104
|
+
ua = UserAgent.new "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5.7; it; rv:1.9) Gecko/20080920 Firefox/3.0.2"
|
105
|
+
assert ua.known?
|
106
|
+
assert ua.browser?
|
107
|
+
assert !ua.bot?
|
108
|
+
assert !ua.feed_reader?
|
109
|
+
assert !ua.other?
|
110
|
+
assert_equal :gecko, ua.render_engine
|
111
|
+
assert_equal "1.9", ua.render_engine_version.full
|
112
|
+
assert_equal :firefox, ua.name
|
113
|
+
assert_equal "3.0.2", ua.version.full
|
114
|
+
assert_equal "3.0", ua.version.major
|
115
|
+
assert_equal [], ua.emails
|
116
|
+
assert_equal nil, ua.email
|
117
|
+
assert_equal [], ua.urls
|
118
|
+
assert_equal nil, ua.url
|
119
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
120
|
+
assert_raise NotImplementedError do
|
121
|
+
ua.method(method).call
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_firefox_305_mac_ppc
|
127
|
+
ua = UserAgent.new "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; fr; rv:1.9.0.5) Gecko/2008120121 Firefox/3.0.5"
|
128
|
+
assert ua.known?
|
129
|
+
assert ua.browser?
|
130
|
+
assert !ua.bot?
|
131
|
+
assert !ua.feed_reader?
|
132
|
+
assert !ua.other?
|
133
|
+
assert_equal :gecko, ua.render_engine
|
134
|
+
assert_equal "1.9.0.5", ua.render_engine_version.full
|
135
|
+
assert_equal :firefox, ua.name
|
136
|
+
assert_equal "3.0.5", ua.version.full
|
137
|
+
assert_equal "3.0", ua.version.major
|
138
|
+
assert_equal [], ua.emails
|
139
|
+
assert_equal nil, ua.email
|
140
|
+
assert_equal [], ua.urls
|
141
|
+
assert_equal nil, ua.url
|
142
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
143
|
+
assert_raise NotImplementedError do
|
144
|
+
ua.method(method).call
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
def test_firefox_305_gentoo
|
150
|
+
ua = UserAgent.new "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008122406 Gentoo Firefox/3.0.5"
|
151
|
+
assert ua.known?
|
152
|
+
assert ua.browser?
|
153
|
+
assert !ua.bot?
|
154
|
+
assert !ua.feed_reader?
|
155
|
+
assert !ua.other?
|
156
|
+
assert_equal :gecko, ua.render_engine
|
157
|
+
assert_equal "1.9.0.5", ua.render_engine_version.full
|
158
|
+
assert_equal :firefox, ua.name
|
159
|
+
assert_equal "3.0.5", ua.version.full
|
160
|
+
assert_equal "3.0", ua.version.major
|
161
|
+
assert_equal [], ua.emails
|
162
|
+
assert_equal nil, ua.email
|
163
|
+
assert_equal [], ua.urls
|
164
|
+
assert_equal nil, ua.url
|
165
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
166
|
+
assert_raise NotImplementedError do
|
167
|
+
ua.method(method).call
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
def test_firefox_305_ubuntu
|
173
|
+
ua = UserAgent.new "Mozilla/5.0 (X11; U; Linux i686; sk; rv:1.9.0.5) Gecko/2008121621 Ubuntu/8.04 (hardy) Firefox/3.0.5"
|
174
|
+
assert ua.known?
|
175
|
+
assert ua.browser?
|
176
|
+
assert !ua.bot?
|
177
|
+
assert !ua.feed_reader?
|
178
|
+
assert !ua.other?
|
179
|
+
assert_equal :gecko, ua.render_engine
|
180
|
+
assert_equal "1.9.0.5", ua.render_engine_version.full
|
181
|
+
assert_equal :firefox, ua.name
|
182
|
+
assert_equal "3.0.5", ua.version.full
|
183
|
+
assert_equal "3.0", ua.version.major
|
184
|
+
assert_equal [], ua.emails
|
185
|
+
assert_equal nil, ua.email
|
186
|
+
assert_equal [], ua.urls
|
187
|
+
assert_equal nil, ua.url
|
188
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
189
|
+
assert_raise NotImplementedError do
|
190
|
+
ua.method(method).call
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
def test_firefox_305_win_vista
|
196
|
+
ua = UserAgent.new "Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5"
|
197
|
+
assert ua.known?
|
198
|
+
assert ua.browser?
|
199
|
+
assert !ua.bot?
|
200
|
+
assert !ua.feed_reader?
|
201
|
+
assert !ua.other?
|
202
|
+
assert_equal :gecko, ua.render_engine
|
203
|
+
assert_equal "1.9.0.5", ua.render_engine_version.full
|
204
|
+
assert_equal :firefox, ua.name
|
205
|
+
assert_equal "3.0.5", ua.version.full
|
206
|
+
assert_equal "3.0", ua.version.major
|
207
|
+
assert_equal [], ua.emails
|
208
|
+
assert_equal nil, ua.email
|
209
|
+
assert_equal [], ua.urls
|
210
|
+
assert_equal nil, ua.url
|
211
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
212
|
+
assert_raise NotImplementedError do
|
213
|
+
ua.method(method).call
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
def test_flock_126_win_xp
|
219
|
+
ua = UserAgent.new "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.17) Gecko/20080915 Firefox/2.0.0.17 Flock/1.2.6"
|
220
|
+
assert ua.known?
|
221
|
+
assert ua.browser?
|
222
|
+
assert !ua.bot?
|
223
|
+
assert !ua.feed_reader?
|
224
|
+
assert !ua.other?
|
225
|
+
assert_equal :gecko, ua.render_engine
|
226
|
+
assert_equal "1.8.1.17", ua.render_engine_version.full
|
227
|
+
assert_equal :flock, ua.name
|
228
|
+
assert_equal "1.2.6", ua.version.full
|
229
|
+
assert_equal "1.2", ua.version.major
|
230
|
+
assert_equal [], ua.emails
|
231
|
+
assert_equal nil, ua.email
|
232
|
+
assert_equal [], ua.urls
|
233
|
+
assert_equal nil, ua.url
|
234
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
235
|
+
assert_raise NotImplementedError do
|
236
|
+
ua.method(method).call
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
def test_flock_202_win_vista
|
242
|
+
ua = UserAgent.new "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.4) Gecko/2008112016 Firefox/3.0.4 Flock/2.0.2"
|
243
|
+
assert ua.known?
|
244
|
+
assert ua.browser?
|
245
|
+
assert !ua.bot?
|
246
|
+
assert !ua.feed_reader?
|
247
|
+
assert !ua.other?
|
248
|
+
assert_equal :gecko, ua.render_engine
|
249
|
+
assert_equal "1.9.0.4", ua.render_engine_version.full
|
250
|
+
assert_equal :flock, ua.name
|
251
|
+
assert_equal "2.0.2", ua.version.full
|
252
|
+
assert_equal "2.0", ua.version.major
|
253
|
+
assert_equal [], ua.emails
|
254
|
+
assert_equal nil, ua.email
|
255
|
+
assert_equal [], ua.urls
|
256
|
+
assert_equal nil, ua.url
|
257
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
258
|
+
assert_raise NotImplementedError do
|
259
|
+
ua.method(method).call
|
260
|
+
end
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
def test_gran_paradiso_30a7_win_xp
|
265
|
+
ua = UserAgent.new "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a7) Gecko/2007080210 GranParadiso/3.0a7"
|
266
|
+
assert ua.known?
|
267
|
+
assert ua.browser?
|
268
|
+
assert !ua.bot?
|
269
|
+
assert !ua.feed_reader?
|
270
|
+
assert !ua.other?
|
271
|
+
assert_equal :gecko, ua.render_engine
|
272
|
+
assert_equal "1.9a7", ua.render_engine_version.full
|
273
|
+
assert_equal :granparadiso, ua.name
|
274
|
+
assert_equal "3.0a7", ua.version.full
|
275
|
+
assert_equal "3.0a", ua.version.major
|
276
|
+
assert_equal [], ua.emails
|
277
|
+
assert_equal nil, ua.email
|
278
|
+
assert_equal [], ua.urls
|
279
|
+
assert_equal nil, ua.url
|
280
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
281
|
+
assert_raise NotImplementedError do
|
282
|
+
ua.method(method).call
|
283
|
+
end
|
284
|
+
end
|
285
|
+
end
|
286
|
+
|
287
|
+
def test_k_meleon_win2k
|
288
|
+
ua = UserAgent.new "Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.8.1.8) Gecko/20071013 K-Meleon/1.5"
|
289
|
+
assert ua.known?
|
290
|
+
assert ua.browser?
|
291
|
+
assert !ua.bot?
|
292
|
+
assert !ua.feed_reader?
|
293
|
+
assert !ua.other?
|
294
|
+
assert_equal :gecko, ua.render_engine
|
295
|
+
assert_equal "1.8.1.8", ua.render_engine_version.full
|
296
|
+
assert_equal :"k-meleon", ua.name
|
297
|
+
assert_equal "1.5", ua.version.full
|
298
|
+
assert_equal "1.5", ua.version.major
|
299
|
+
assert_equal [], ua.emails
|
300
|
+
assert_equal nil, ua.email
|
301
|
+
assert_equal [], ua.urls
|
302
|
+
assert_equal nil, ua.url
|
303
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
304
|
+
assert_raise NotImplementedError do
|
305
|
+
ua.method(method).call
|
306
|
+
end
|
307
|
+
end
|
308
|
+
end
|
309
|
+
|
310
|
+
def test_k_meleon_win2k
|
311
|
+
ua = UserAgent.new "Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.8.1.8) Gecko/20071013 K-Meleon/1.5"
|
312
|
+
assert ua.known?
|
313
|
+
assert ua.browser?
|
314
|
+
assert !ua.bot?
|
315
|
+
assert !ua.feed_reader?
|
316
|
+
assert !ua.other?
|
317
|
+
assert_equal :gecko, ua.render_engine
|
318
|
+
assert_equal "1.8.1.8", ua.render_engine_version.full
|
319
|
+
assert_equal :"k-meleon", ua.name
|
320
|
+
assert_equal "1.5", ua.version.full
|
321
|
+
assert_equal "1.5", ua.version.major
|
322
|
+
assert_equal [], ua.emails
|
323
|
+
assert_equal nil, ua.email
|
324
|
+
assert_equal [], ua.urls
|
325
|
+
assert_equal nil, ua.url
|
326
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
327
|
+
assert_raise NotImplementedError do
|
328
|
+
ua.method(method).call
|
329
|
+
end
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
333
|
+
def test_minefield_31b2pre_win_vista
|
334
|
+
ua = UserAgent.new "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b2pre) Gecko/20081011 Minefield/3.1b2pre"
|
335
|
+
assert ua.known?
|
336
|
+
assert ua.browser?
|
337
|
+
assert !ua.bot?
|
338
|
+
assert !ua.feed_reader?
|
339
|
+
assert !ua.other?
|
340
|
+
assert_equal :gecko, ua.render_engine
|
341
|
+
assert_equal "1.9.1b2pre", ua.render_engine_version.full
|
342
|
+
assert_equal :minefield, ua.name
|
343
|
+
assert_equal "3.1b2pre", ua.version.full
|
344
|
+
assert_equal "3.1b", ua.version.major
|
345
|
+
assert_equal [], ua.emails
|
346
|
+
assert_equal nil, ua.email
|
347
|
+
assert_equal [], ua.urls
|
348
|
+
assert_equal nil, ua.url
|
349
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
350
|
+
assert_raise NotImplementedError do
|
351
|
+
ua.method(method).call
|
352
|
+
end
|
353
|
+
end
|
354
|
+
end
|
355
|
+
|
356
|
+
def test_navigator_win98
|
357
|
+
ua = UserAgent.new "Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.8pre) Gecko/20071019 Firefox/2.0.0.8 Navigator/9.0.0.1"
|
358
|
+
assert ua.known?
|
359
|
+
assert ua.browser?
|
360
|
+
assert !ua.bot?
|
361
|
+
assert !ua.feed_reader?
|
362
|
+
assert !ua.other?
|
363
|
+
assert_equal :gecko, ua.render_engine
|
364
|
+
assert_equal "1.8.1.8pre", ua.render_engine_version.full
|
365
|
+
assert_equal :navigator, ua.name
|
366
|
+
assert_equal "9.0.0.1", ua.version.full
|
367
|
+
assert_equal "9", ua.version.major
|
368
|
+
assert_equal [], ua.emails
|
369
|
+
assert_equal nil, ua.email
|
370
|
+
assert_equal [], ua.urls
|
371
|
+
assert_equal nil, ua.url
|
372
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
373
|
+
assert_raise NotImplementedError do
|
374
|
+
ua.method(method).call
|
375
|
+
end
|
376
|
+
end
|
377
|
+
end
|
378
|
+
|
379
|
+
def test_netscape_61_mac_ppc
|
380
|
+
ua = UserAgent.new "Mozilla/5.0 (Macintosh; U; PPC; de-DE; rv:0.9.2) Gecko/20010726 Netscape6/6.1"
|
381
|
+
assert ua.known?
|
382
|
+
assert ua.browser?
|
383
|
+
assert !ua.bot?
|
384
|
+
assert !ua.feed_reader?
|
385
|
+
assert !ua.other?
|
386
|
+
assert_equal :gecko, ua.render_engine
|
387
|
+
assert_equal "0.9.2", ua.render_engine_version.full
|
388
|
+
assert_equal :netscape, ua.name
|
389
|
+
assert_equal "6.1", ua.version.full
|
390
|
+
assert_equal "6.1", ua.version.major
|
391
|
+
assert_equal [], ua.emails
|
392
|
+
assert_equal nil, ua.email
|
393
|
+
assert_equal [], ua.urls
|
394
|
+
assert_equal nil, ua.url
|
395
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
396
|
+
assert_raise NotImplementedError do
|
397
|
+
ua.method(method).call
|
398
|
+
end
|
399
|
+
end
|
400
|
+
end
|
401
|
+
|
402
|
+
def test_netscape_702_mac_ppc
|
403
|
+
ua = UserAgent.new "Mozilla/5.0 (Macintosh; U; PPC; de-DE; rv:1.0.2) Gecko/20030208 Netscape/7.02"
|
404
|
+
assert ua.known?
|
405
|
+
assert ua.browser?
|
406
|
+
assert !ua.bot?
|
407
|
+
assert !ua.feed_reader?
|
408
|
+
assert !ua.other?
|
409
|
+
assert_equal :gecko, ua.render_engine
|
410
|
+
assert_equal "1.0.2", ua.render_engine_version.full
|
411
|
+
assert_equal :netscape, ua.name
|
412
|
+
assert_equal "7.02", ua.version.full
|
413
|
+
assert_equal "7.0", ua.version.major
|
414
|
+
assert_equal [], ua.emails
|
415
|
+
assert_equal nil, ua.email
|
416
|
+
assert_equal [], ua.urls
|
417
|
+
assert_equal nil, ua.url
|
418
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
419
|
+
assert_raise NotImplementedError do
|
420
|
+
ua.method(method).call
|
421
|
+
end
|
422
|
+
end
|
423
|
+
end
|
424
|
+
|
425
|
+
def test_netscape_81_win98
|
426
|
+
ua = UserAgent.new "Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.5) Gecko/20060127 Netscape/8.1"
|
427
|
+
assert ua.known?
|
428
|
+
assert ua.browser?
|
429
|
+
assert !ua.bot?
|
430
|
+
assert !ua.feed_reader?
|
431
|
+
assert !ua.other?
|
432
|
+
assert_equal :gecko, ua.render_engine
|
433
|
+
assert_equal "1.7.5", ua.render_engine_version.full
|
434
|
+
assert_equal :netscape, ua.name
|
435
|
+
assert_equal "8.1", ua.version.full
|
436
|
+
assert_equal "8.1", ua.version.major
|
437
|
+
assert_equal [], ua.emails
|
438
|
+
assert_equal nil, ua.email
|
439
|
+
assert_equal [], ua.urls
|
440
|
+
assert_equal nil, ua.url
|
441
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
442
|
+
assert_raise NotImplementedError do
|
443
|
+
ua.method(method).call
|
444
|
+
end
|
445
|
+
end
|
446
|
+
end
|
447
|
+
|
448
|
+
def test_seamonkey_119_mac_intel
|
449
|
+
ua = UserAgent.new "Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.13) Gecko/20080313 SeaMonkey/1.1.9"
|
450
|
+
assert ua.known?
|
451
|
+
assert ua.browser?
|
452
|
+
assert !ua.bot?
|
453
|
+
assert !ua.feed_reader?
|
454
|
+
assert !ua.other?
|
455
|
+
assert_equal :gecko, ua.render_engine
|
456
|
+
assert_equal "1.8.1.13", ua.render_engine_version.full
|
457
|
+
assert_equal :seamonkey, ua.name
|
458
|
+
assert_equal "1.1.9", ua.version.full
|
459
|
+
assert_equal "1.1", ua.version.major
|
460
|
+
assert_equal [], ua.emails
|
461
|
+
assert_equal nil, ua.email
|
462
|
+
assert_equal [], ua.urls
|
463
|
+
assert_equal nil, ua.url
|
464
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
465
|
+
assert_raise NotImplementedError do
|
466
|
+
ua.method(method).call
|
467
|
+
end
|
468
|
+
end
|
469
|
+
end
|
470
|
+
|
471
|
+
def test_seamonkey_20a3pre_win_2k
|
472
|
+
ua = UserAgent.new "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.2a1pre) Gecko/20081228 SeaMonkey/2.0a3pre"
|
473
|
+
assert ua.known?
|
474
|
+
assert ua.browser?
|
475
|
+
assert !ua.bot?
|
476
|
+
assert !ua.feed_reader?
|
477
|
+
assert !ua.other?
|
478
|
+
assert_equal :gecko, ua.render_engine
|
479
|
+
assert_equal "1.9.2a1pre", ua.render_engine_version.full
|
480
|
+
assert_equal :seamonkey, ua.name
|
481
|
+
assert_equal "2.0a3pre", ua.version.full
|
482
|
+
assert_equal "2.0a", ua.version.major
|
483
|
+
assert_equal [], ua.emails
|
484
|
+
assert_equal nil, ua.email
|
485
|
+
assert_equal [], ua.urls
|
486
|
+
assert_equal nil, ua.url
|
487
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
488
|
+
assert_raise NotImplementedError do
|
489
|
+
ua.method(method).call
|
490
|
+
end
|
491
|
+
end
|
492
|
+
end
|
493
|
+
end
|
data/test/other_test.rb
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'ua_parser'
|
5
|
+
|
6
|
+
class OtherTest < Test::Unit::TestCase
|
7
|
+
include UaParser
|
8
|
+
|
9
|
+
def test_apache
|
10
|
+
ua = UserAgent.new "Apache/2.2.8 (Ubuntu) DAV/2 SVN/1.4.6 mod_python/3.3.1 Python/2.5.2 PHP/5.2.4-2ubuntu5.3 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g (internal dummy connection)"
|
11
|
+
assert ua.known?
|
12
|
+
assert !ua.browser?
|
13
|
+
assert !ua.bot?
|
14
|
+
assert !ua.feed_reader?
|
15
|
+
assert ua.other?
|
16
|
+
assert_equal nil, ua.render_engine
|
17
|
+
assert_equal nil, ua.render_engine_version
|
18
|
+
assert_equal :apache_httpd, ua.name
|
19
|
+
assert_equal "2.2.8", ua.version.full
|
20
|
+
assert_equal "2.2", ua.version.major
|
21
|
+
assert_equal [], ua.emails
|
22
|
+
assert_equal nil, ua.email
|
23
|
+
assert_equal [], ua.urls
|
24
|
+
assert_equal nil, ua.url
|
25
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
26
|
+
assert_raise NotImplementedError do
|
27
|
+
ua.method(method).call
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_jakarta_commons_httpclient_3_1
|
33
|
+
ua = UserAgent.new "Jakarta Commons-HttpClient/3.1"
|
34
|
+
assert ua.known?
|
35
|
+
assert !ua.browser?
|
36
|
+
assert !ua.bot?
|
37
|
+
assert !ua.feed_reader?
|
38
|
+
assert ua.other?
|
39
|
+
assert_equal nil, ua.render_engine
|
40
|
+
assert_equal nil, ua.render_engine_version
|
41
|
+
assert_equal :jakarta_commons_httpclient, ua.name
|
42
|
+
assert_equal "3.1", ua.version.full
|
43
|
+
assert_equal "3.1", ua.version.major
|
44
|
+
assert_equal [], ua.emails
|
45
|
+
assert_equal nil, ua.email
|
46
|
+
assert_equal [], ua.urls
|
47
|
+
assert_equal nil, ua.url
|
48
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
49
|
+
assert_raise NotImplementedError do
|
50
|
+
ua.method(method).call
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_java_1_6_0_03
|
56
|
+
ua = UserAgent.new "Java/1.6.0_03"
|
57
|
+
assert ua.known?
|
58
|
+
assert !ua.browser?
|
59
|
+
assert !ua.bot?
|
60
|
+
assert !ua.feed_reader?
|
61
|
+
assert ua.other?
|
62
|
+
assert_equal nil, ua.render_engine
|
63
|
+
assert_equal nil, ua.render_engine_version
|
64
|
+
assert_equal :java, ua.name
|
65
|
+
assert_equal "1.6.0_03", ua.version.full
|
66
|
+
assert_equal "1.6", ua.version.major
|
67
|
+
assert_equal [], ua.emails
|
68
|
+
assert_equal nil, ua.email
|
69
|
+
assert_equal [], ua.urls
|
70
|
+
assert_equal nil, ua.url
|
71
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
72
|
+
assert_raise NotImplementedError do
|
73
|
+
ua.method(method).call
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_libwww_perl_5_805
|
79
|
+
ua = UserAgent.new "libwww-perl/5.805"
|
80
|
+
assert ua.known?
|
81
|
+
assert !ua.browser?
|
82
|
+
assert !ua.bot?
|
83
|
+
assert !ua.feed_reader?
|
84
|
+
assert ua.other?
|
85
|
+
assert_equal nil, ua.render_engine
|
86
|
+
assert_equal nil, ua.render_engine_version
|
87
|
+
assert_equal :"libwww-perl", ua.name
|
88
|
+
assert_equal "5.805", ua.version.full
|
89
|
+
assert_equal "5.805", ua.version.major
|
90
|
+
assert_equal [], ua.emails
|
91
|
+
assert_equal nil, ua.email
|
92
|
+
assert_equal [], ua.urls
|
93
|
+
assert_equal nil, ua.url
|
94
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
95
|
+
assert_raise NotImplementedError do
|
96
|
+
ua.method(method).call
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_svn_151
|
102
|
+
ua = UserAgent.new "SVN/1.5.1 (r32289) neon/0.28.2"
|
103
|
+
assert ua.known?
|
104
|
+
assert !ua.browser?
|
105
|
+
assert !ua.bot?
|
106
|
+
assert !ua.feed_reader?
|
107
|
+
assert ua.other?
|
108
|
+
assert_equal nil, ua.render_engine
|
109
|
+
assert_equal nil, ua.render_engine_version
|
110
|
+
assert_equal :svn_client, ua.name
|
111
|
+
assert_equal "1.5.1", ua.version.full
|
112
|
+
assert_equal "1.5", ua.version.major
|
113
|
+
assert_equal [], ua.emails
|
114
|
+
assert_equal nil, ua.email
|
115
|
+
assert_equal [], ua.urls
|
116
|
+
assert_equal nil, ua.url
|
117
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
118
|
+
assert_raise NotImplementedError do
|
119
|
+
ua.method(method).call
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
def test_tortoise_svn_152
|
125
|
+
ua = UserAgent.new "SVN/1.5.2 (r32768)/TortoiseSVN-1.5.3.13783 neon/0.28.3"
|
126
|
+
assert ua.known?
|
127
|
+
assert !ua.browser?
|
128
|
+
assert !ua.bot?
|
129
|
+
assert !ua.feed_reader?
|
130
|
+
assert ua.other?
|
131
|
+
assert_equal nil, ua.render_engine
|
132
|
+
assert_equal nil, ua.render_engine_version
|
133
|
+
assert_equal :tortoisesvn, ua.name
|
134
|
+
assert_equal "1.5.3.13783", ua.version.full
|
135
|
+
assert_equal "1.5", ua.version.major
|
136
|
+
assert_equal [], ua.emails
|
137
|
+
assert_equal nil, ua.email
|
138
|
+
assert_equal [], ua.urls
|
139
|
+
assert_equal nil, ua.url
|
140
|
+
[:architecture, :dotnet_versions, :os, :os_type, :os_version, :ui_lang, :ui_lang_country, :vendor].each do |method|
|
141
|
+
assert_raise NotImplementedError do
|
142
|
+
ua.method(method).call
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|