browser 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.hound.yml +90 -0
- data/.travis.yml +2 -1
- data/README.md +18 -0
- data/Rakefile +6 -7
- data/bots.yml +2 -0
- data/browser.gemspec +1 -2
- data/languages.yml +114 -0
- data/lib/browser.rb +47 -46
- data/lib/browser/action_controller.rb +1 -0
- data/lib/browser/meta/generic_browser.rb +7 -1
- data/lib/browser/methods/bots.rb +1 -1
- data/lib/browser/methods/devices.rb +1 -1
- data/lib/browser/methods/ie.rb +3 -1
- data/lib/browser/methods/language.rb +2 -117
- data/lib/browser/methods/mobile.rb +1 -0
- data/lib/browser/middleware.rb +2 -2
- data/lib/browser/version.rb +2 -2
- data/test/{browser_test.rb → browser_spec.rb} +171 -239
- data/test/{middleware_test.rb → middleware_spec.rb} +8 -8
- data/test/spec_helper.rb +8 -0
- data/test/ua.yml +67 -0
- metadata +15 -21
- data/test/test_helper.rb +0 -9
@@ -2,7 +2,13 @@ class Browser
|
|
2
2
|
module Meta
|
3
3
|
class GenericBrowser < Base
|
4
4
|
def meta
|
5
|
-
"#{browser.id} #{browser.id}#{browser.version}"
|
5
|
+
"#{browser.id} #{browser.id}#{browser.version}" if generic?
|
6
|
+
end
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def generic?
|
11
|
+
!browser.safari? && !browser.chrome?
|
6
12
|
end
|
7
13
|
end
|
8
14
|
end
|
data/lib/browser/methods/bots.rb
CHANGED
data/lib/browser/methods/ie.rb
CHANGED
@@ -40,10 +40,12 @@ class Browser
|
|
40
40
|
|
41
41
|
# Detect if IE is running in compatibility mode.
|
42
42
|
def compatibility_view?
|
43
|
-
|
43
|
+
match = ua.match(TRIDENT_VERSION_REGEX)
|
44
|
+
ie? && match && version.to_i < (match[1].to_i + 4)
|
44
45
|
end
|
45
46
|
|
46
47
|
private
|
48
|
+
|
47
49
|
def msie?
|
48
50
|
!!(ua =~ /MSIE/ && ua !~ /Opera/)
|
49
51
|
end
|
@@ -1,121 +1,6 @@
|
|
1
1
|
class Browser
|
2
2
|
module Language
|
3
|
-
LANGUAGES =
|
4
|
-
"af" => "Afrikaans",
|
5
|
-
"sq" => "Albanian",
|
6
|
-
"eu" => "Basque",
|
7
|
-
"bg" => "Bulgarian",
|
8
|
-
"be" => "Byelorussian",
|
9
|
-
"ca" => "Catalan",
|
10
|
-
"zh" => "Chinese",
|
11
|
-
"zh-cn" => "Chinese/China",
|
12
|
-
"zh-tw" => "Chinese/Taiwan",
|
13
|
-
"zh-hk" => "Chinese/Hong Kong",
|
14
|
-
"zh-sg" => "Chinese/singapore",
|
15
|
-
"hr" => "Croatian",
|
16
|
-
"cs" => "Czech",
|
17
|
-
"da" => "Danish",
|
18
|
-
"nl" => "Dutch",
|
19
|
-
"nl-nl" => "Dutch/Netherlands",
|
20
|
-
"nl-be" => "Dutch/Belgium",
|
21
|
-
"en" => "English",
|
22
|
-
"en-gb" => "English/United Kingdom",
|
23
|
-
"en-us" => "English/United States",
|
24
|
-
"en-au" => "English/Australian",
|
25
|
-
"en-ca" => "English/Canada",
|
26
|
-
"en-nz" => "English/New Zealand",
|
27
|
-
"en-ie" => "English/Ireland",
|
28
|
-
"en-za" => "English/South Africa",
|
29
|
-
"en-jm" => "English/Jamaica",
|
30
|
-
"en-bz" => "English/Belize",
|
31
|
-
"en-tt" => "English/Trinidad",
|
32
|
-
"et" => "Estonian",
|
33
|
-
"fo" => "Faeroese",
|
34
|
-
"fa" => "Farsi",
|
35
|
-
"fi" => "Finnish",
|
36
|
-
"fr" => "French",
|
37
|
-
"fr-be" => "French/Belgium",
|
38
|
-
"fr-fr" => "French/France",
|
39
|
-
"fr-ch" => "French/Switzerland",
|
40
|
-
"fr-ca" => "French/Canada",
|
41
|
-
"fr-lu" => "French/Luxembourg",
|
42
|
-
"gd" => "Gaelic",
|
43
|
-
"gl" => "Galician",
|
44
|
-
"de" => "German",
|
45
|
-
"de-at" => "German/Austria",
|
46
|
-
"de-de" => "German/Germany",
|
47
|
-
"de-ch" => "German/Switzerland",
|
48
|
-
"de-lu" => "German/Luxembourg",
|
49
|
-
"de-li" => "German/Liechtenstein",
|
50
|
-
"el" => "Greek",
|
51
|
-
"he" => "Hebrew",
|
52
|
-
"he-il" => "Hebrew/Israel",
|
53
|
-
"hi" => "Hindi",
|
54
|
-
"hu" => "Hungarian",
|
55
|
-
"ie-ee" => "Internet Explorer/Easter Egg",
|
56
|
-
"is" => "Icelandic",
|
57
|
-
"id" => "Indonesian",
|
58
|
-
"in" => "Indonesian",
|
59
|
-
"ga" => "Irish",
|
60
|
-
"it" => "Italian",
|
61
|
-
"it-ch" => "Italian/ Switzerland",
|
62
|
-
"ja" => "Japanese",
|
63
|
-
"km" => "Khmer",
|
64
|
-
"km-kh" => "Khmer/Cambodia",
|
65
|
-
"ko" => "Korean",
|
66
|
-
"lv" => "Latvian",
|
67
|
-
"lt" => "Lithuanian",
|
68
|
-
"mk" => "Macedonian",
|
69
|
-
"ms" => "Malaysian",
|
70
|
-
"mt" => "Maltese",
|
71
|
-
"no" => "Norwegian",
|
72
|
-
"pl" => "Polish",
|
73
|
-
"pt" => "Portuguese",
|
74
|
-
"pt-br" => "Portuguese/Brazil",
|
75
|
-
"rm" => "Rhaeto-Romanic",
|
76
|
-
"ro" => "Romanian",
|
77
|
-
"ro-mo" => "Romanian/Moldavia",
|
78
|
-
"ru" => "Russian",
|
79
|
-
"ru-mo" => "Russian /Moldavia",
|
80
|
-
"gd" => "Scots Gaelic",
|
81
|
-
"sr" => "Serbian",
|
82
|
-
"sk" => "Slovack",
|
83
|
-
"sl" => "Slovenian",
|
84
|
-
"sb" => "Sorbian",
|
85
|
-
"es" => "Spanish",
|
86
|
-
"es-do" => "Spanish",
|
87
|
-
"es-ar" => "Spanish/Argentina",
|
88
|
-
"es-co" => "Spanish/Colombia",
|
89
|
-
"es-mx" => "Spanish/Mexico",
|
90
|
-
"es-es" => "Spanish/Spain",
|
91
|
-
"es-gt" => "Spanish/Guatemala",
|
92
|
-
"es-cr" => "Spanish/Costa Rica",
|
93
|
-
"es-pa" => "Spanish/Panama",
|
94
|
-
"es-ve" => "Spanish/Venezuela",
|
95
|
-
"es-pe" => "Spanish/Peru",
|
96
|
-
"es-ec" => "Spanish/Ecuador",
|
97
|
-
"es-cl" => "Spanish/Chile",
|
98
|
-
"es-uy" => "Spanish/Uruguay",
|
99
|
-
"es-py" => "Spanish/Paraguay",
|
100
|
-
"es-bo" => "Spanish/Bolivia",
|
101
|
-
"es-sv" => "Spanish/El salvador",
|
102
|
-
"es-hn" => "Spanish/Honduras",
|
103
|
-
"es-ni" => "Spanish/Nicaragua",
|
104
|
-
"es-pr" => "Spanish/Puerto Rico",
|
105
|
-
"sx" => "Sutu",
|
106
|
-
"sv" => "Swedish",
|
107
|
-
"sv-se" => "Swedish/Sweden",
|
108
|
-
"sv-fi" => "Swedish/Finland",
|
109
|
-
"ts" => "Thai",
|
110
|
-
"tn" => "Tswana",
|
111
|
-
"tr" => "Turkish",
|
112
|
-
"uk" => "Ukrainian",
|
113
|
-
"ur" => "Urdu",
|
114
|
-
"vi" => "Vietnamese",
|
115
|
-
"xh" => "Xshosa",
|
116
|
-
"ji" => "Yiddish",
|
117
|
-
"zu" => "Zulu"
|
118
|
-
}
|
3
|
+
LANGUAGES = YAML.load_file(File.expand_path("../../../../languages.yml", __FILE__))
|
119
4
|
|
120
5
|
# Set browser's preferred language
|
121
6
|
attr_writer :accept_language
|
@@ -125,7 +10,7 @@ class Browser
|
|
125
10
|
@accept_language
|
126
11
|
.gsub(/;q=[\d.]+/, "")
|
127
12
|
.split(",")
|
128
|
-
.
|
13
|
+
.map {|l| l.downcase.gsub(/\s/m, "") }
|
129
14
|
end
|
130
15
|
end
|
131
16
|
end
|
data/lib/browser/middleware.rb
CHANGED
@@ -3,13 +3,13 @@ require "uri"
|
|
3
3
|
class Browser
|
4
4
|
class Middleware
|
5
5
|
# Detect the most common assets.
|
6
|
-
ASSETS_REGEX =
|
6
|
+
ASSETS_REGEX = /\.(css|png|jpe?g|gif|js|svg|ico|flv|mov|m4v|ogg|swf)\z/i
|
7
7
|
|
8
8
|
# Detect the ACCEPT header. IE8 send */*.
|
9
9
|
ACCEPT_REGEX = %r[(text/html|\*/\*)]
|
10
10
|
|
11
11
|
def initialize(app, &block)
|
12
|
-
|
12
|
+
fail ArgumentError, "Browser::Middleware requires a block" unless block
|
13
13
|
|
14
14
|
@app = app
|
15
15
|
@block = block
|
data/lib/browser/version.rb
CHANGED
@@ -1,91 +1,23 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
require "
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
IPOD = "Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A100a Safari/419.3"
|
7
|
-
IPAD = "Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10"
|
8
|
-
SAFARI = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-us) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8"
|
9
|
-
IE6 = "Mozilla/5.0 (Windows; U; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
|
10
|
-
IE7 = "Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)"
|
11
|
-
IE8 = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.2; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)"
|
12
|
-
IE8_COMPAT = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; Media Center PC 5.0; .NET CLR 3.5.21022)"
|
13
|
-
IE9 = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
|
14
|
-
IE9_COMPAT = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0)"
|
15
|
-
IE10 = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0; EIE10;ENUSMSN)"
|
16
|
-
IE10_COMPAT = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; EIE10;ENUSMSN)"
|
17
|
-
IE10_X64_WINX64 = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)"
|
18
|
-
IE11 = "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko"
|
19
|
-
IE11_TOUCH_SCREEN = "Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; Touch; rv:11.0) like Gecko"
|
20
|
-
OPERA = "Opera/9.80 (Macintosh; Intel Mac OS X 10.7.4; U; en) Presto/2.10.229 Version/11.64"
|
21
|
-
OPERA_NEXT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.37 Safari/537.36 OPR/15.0.1147.44 (Edition Next)"
|
22
|
-
FIREFOX = "Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8"
|
23
|
-
FIREFOX_MODERN = "Mozilla/5.0 (X11; Ubuntu; Linux armv7l; rv:17.0) Gecko/20100101 Firefox/17.0"
|
24
|
-
FIREFOX_TABLET = "Mozilla/5.0 (Android; Tablet; rv:14.0) Gecko/14.0 Firefox/14.0"
|
25
|
-
CHROME = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4"
|
26
|
-
MOBILE_CHROME = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3"
|
27
|
-
CHROME_OS = "Mozilla/5.0 (X11; CrOS x86_64 3701.81.0) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.57 Safari/537.31."
|
28
|
-
ANDROID = "Android SDK 1.5r3: Mozilla/5.0 (Linux; U; Android 1.5; de-; sdk Build/CUPCAKE) AppleWebkit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1"
|
29
|
-
TABLOID = "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13"
|
30
|
-
BLACKBERRY = "BlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103"
|
31
|
-
BLACKBERRY4 = "BlackBerry8100/4.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103"
|
32
|
-
BLACKBERRY5 = "BlackBerry9000/5.0.0.93 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/179"
|
33
|
-
BLACKBERRY6 = "Mozilla/5.0 (BlackBerry; U; BlackBerry AAAA; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/6.0.0.141 Mobile Safari/534.11+"
|
34
|
-
BLACKBERRY7 = "Mozilla/5.0 (BlackBerry; U; BlackBerry AAAA; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.1 Mobile Safari/534.11+"
|
35
|
-
BLACKBERRY10 = "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.1675 Mobile Safari/537.10+"
|
36
|
-
PSP = "Mozilla/4.0 (PSP (PlayStation Portable); 2.00)"
|
37
|
-
PSP_VITA = "Mozilla/5.0 (Playstation Vita 1.61) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2"
|
38
|
-
QUICKTIME = "QuickTime/7.6.8 (qtver=7.6.8;os=Windows NT 5.1Service Pack 3)"
|
39
|
-
COREMEDIA = "Apple Mac OS X v10.6.4 CoreMedia v1.0.0.10F569"
|
40
|
-
XOOM = "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13"
|
41
|
-
NEXUS_TABLET = "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19"
|
42
|
-
NOOK = "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; NOOK BNTV250A Build/GINGERBREAD 1.4.3) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1"
|
43
|
-
SAMSUNG = "Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; SAMSUNG-SGH-I497 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30"
|
44
|
-
OPERA_MINI = "Opera/9.80 (Android; Opera Mini/7.029952/28.2359;u; fr) Presto/2.8.119 Version/11.10"
|
45
|
-
OPERA_MOBI = "Opera/9.8 (Android 2.3.5; Linux; Opera Mobi/ADR-1205181138; U; en) Presto/2.10.254 Version/12.00"
|
46
|
-
WINDOWS_PHONE = "Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; DELL; Venue Pro)"
|
47
|
-
WINDOWS_PHONE8 = "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)"
|
48
|
-
WINDOWS_MOBILE = "Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12)"
|
49
|
-
WINDOWS8 = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)"
|
50
|
-
WINDOWS81 = "Mozilla/5.0 (IE 11.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C; rv:11.0) like Gecko"
|
51
|
-
SURFACE = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)"
|
52
|
-
KINDLE = "Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600×800; rotate)"
|
53
|
-
KINDLE_FIRE = "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
|
54
|
-
KINDLE_FIRE_HD = "Mozilla/5.0 (Linux; U; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Safari/535.19 Silk-Accelerated=true"
|
55
|
-
KINDLE_FIRE_HD_MOBILE = "Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Mobile Safari/535.19 Silk-Accelerated=true"
|
56
|
-
PHANTOM_JS = "Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.0 Safari/534.34"
|
57
|
-
IOS4 = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7"
|
58
|
-
IOS5 = "Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3"
|
59
|
-
IOS6 = "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"
|
60
|
-
IOS7 = "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53"
|
61
|
-
PLAYBOOK = "Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML, like Gecko) Version/7.2.1.0 Safari/536.2+"
|
62
|
-
NINTENDO_WII = "Opera/9.00 (Nintendo Wii; U; ; 1309-9; en)"
|
63
|
-
NINTENDO_WIIU = "Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.52 (KHTML, like Gecko) NX/2.1.0.8.23 NintendoBrowser/1.1.0.7579.EU"
|
64
|
-
PLAYSTATION3 = "Mozilla/5.0 (PLAYSTATION 3; 3.55)"
|
65
|
-
PLAYSTATION4 = "Mozilla/5.0 (PlayStation 4 1.020) AppleWebKit/536.26 (KHTML, like Gecko)"
|
66
|
-
XBOX360 = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox), or Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Xbox)"
|
67
|
-
XBOXONE = "Mozilla/5.0 (Compatible; MSIE 10.0; Windows NT 6.2; Trident /6.0; Xbox; Xbox One)"
|
68
|
-
GOOGLE_BOT = "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
|
69
|
-
MSN_BOT = "msnbot-media/1.1 (+http://search.msn.com/msnbot.htm)"
|
70
|
-
FACEBOOK_BOT = "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
|
71
|
-
SMART_TV = "Mozilla/5.0 (SmartHub; SMART-TV; U; Linux/SmartTV) AppleWebKit/531.2+ (KHTML, like Gecko) WebBrowser/1.0 SmartTV Safari/531.2+"
|
72
|
-
|
73
|
-
def setup
|
2
|
+
require "spec_helper"
|
3
|
+
|
4
|
+
describe Browser do
|
5
|
+
before do
|
74
6
|
@browser = Browser.new
|
75
7
|
end
|
76
8
|
|
77
|
-
|
9
|
+
it "yields self when block is given" do
|
78
10
|
browser = nil
|
79
11
|
Browser.new {|b| browser = b }
|
80
12
|
assert_kind_of Browser, browser
|
81
13
|
end
|
82
14
|
|
83
|
-
|
15
|
+
it "responds to ua methods" do
|
84
16
|
assert @browser.respond_to?(:ua)
|
85
17
|
assert @browser.respond_to?(:ua=)
|
86
18
|
end
|
87
19
|
|
88
|
-
|
20
|
+
it "delegates ua methods" do
|
89
21
|
@browser.user_agent = "Safari"
|
90
22
|
assert_equal "Safari", @browser.ua
|
91
23
|
|
@@ -93,12 +25,12 @@ class BrowserTest < Test::Unit::TestCase
|
|
93
25
|
assert_equal "Mozilla", @browser.user_agent
|
94
26
|
end
|
95
27
|
|
96
|
-
|
28
|
+
it "sets accept language while instantiating object" do
|
97
29
|
@browser = Browser.new(:accept_language => "pt-br")
|
98
30
|
assert_equal ["pt-br"], @browser.accept_language
|
99
31
|
end
|
100
32
|
|
101
|
-
|
33
|
+
it "sets user agent while instantianting object" do
|
102
34
|
@browser = Browser.new(:ua => "Safari")
|
103
35
|
assert_equal "Safari", @browser.ua
|
104
36
|
|
@@ -106,8 +38,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
106
38
|
assert_equal "Chrome", @browser.ua
|
107
39
|
end
|
108
40
|
|
109
|
-
|
110
|
-
@browser.ua = IPHONE
|
41
|
+
it "detects iphone" do
|
42
|
+
@browser.ua = $ua["IPHONE"]
|
111
43
|
|
112
44
|
assert_equal "iPhone", @browser.name
|
113
45
|
assert @browser.iphone?
|
@@ -121,8 +53,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
121
53
|
assert_equal "3", @browser.version
|
122
54
|
end
|
123
55
|
|
124
|
-
|
125
|
-
@browser.ua = SAFARI
|
56
|
+
it "detects safari" do
|
57
|
+
@browser.ua = $ua["SAFARI"]
|
126
58
|
|
127
59
|
assert_equal "Safari", @browser.name
|
128
60
|
assert @browser.safari?
|
@@ -132,8 +64,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
132
64
|
assert_equal "5", @browser.version
|
133
65
|
end
|
134
66
|
|
135
|
-
|
136
|
-
@browser.ua = IPOD
|
67
|
+
it "detects ipod" do
|
68
|
+
@browser.ua = $ua["IPOD"]
|
137
69
|
|
138
70
|
assert_equal "iPod Touch", @browser.name
|
139
71
|
assert @browser.ipod?
|
@@ -147,8 +79,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
147
79
|
assert_equal "3", @browser.version
|
148
80
|
end
|
149
81
|
|
150
|
-
|
151
|
-
@browser.ua = IPAD
|
82
|
+
it "detects ipad" do
|
83
|
+
@browser.ua = $ua["IPAD"]
|
152
84
|
|
153
85
|
assert_equal "iPad", @browser.name
|
154
86
|
assert @browser.ipad?
|
@@ -162,33 +94,33 @@ class BrowserTest < Test::Unit::TestCase
|
|
162
94
|
assert_equal "4", @browser.version
|
163
95
|
end
|
164
96
|
|
165
|
-
|
166
|
-
@browser.ua = IOS4
|
97
|
+
it "detects ios4" do
|
98
|
+
@browser.ua = $ua["IOS4"]
|
167
99
|
assert @browser.ios?
|
168
100
|
assert @browser.ios4?
|
169
101
|
end
|
170
102
|
|
171
103
|
|
172
|
-
|
173
|
-
@browser.ua = IOS5
|
104
|
+
it "detects ios5" do
|
105
|
+
@browser.ua = $ua["IOS5"]
|
174
106
|
assert @browser.ios?
|
175
107
|
assert @browser.ios5?
|
176
108
|
end
|
177
109
|
|
178
|
-
|
179
|
-
@browser.ua = IOS6
|
110
|
+
it "detects ios6" do
|
111
|
+
@browser.ua = $ua["IOS6"]
|
180
112
|
assert @browser.ios?
|
181
113
|
assert @browser.ios6?
|
182
114
|
end
|
183
115
|
|
184
|
-
|
185
|
-
@browser.ua = IOS7
|
116
|
+
it "detects ios7" do
|
117
|
+
@browser.ua = $ua["IOS7"]
|
186
118
|
assert @browser.ios?
|
187
119
|
assert @browser.ios7?
|
188
120
|
end
|
189
121
|
|
190
|
-
|
191
|
-
@browser.ua = IE6
|
122
|
+
it "detects ie6" do
|
123
|
+
@browser.ua = $ua["IE6"]
|
192
124
|
|
193
125
|
assert_equal "Internet Explorer", @browser.name
|
194
126
|
assert @browser.ie?
|
@@ -198,8 +130,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
198
130
|
assert_equal "6", @browser.version
|
199
131
|
end
|
200
132
|
|
201
|
-
|
202
|
-
@browser.ua = IE7
|
133
|
+
it "detects ie7" do
|
134
|
+
@browser.ua = $ua["IE7"]
|
203
135
|
|
204
136
|
assert_equal "Internet Explorer", @browser.name
|
205
137
|
assert @browser.ie?
|
@@ -209,8 +141,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
209
141
|
assert_equal "7", @browser.version
|
210
142
|
end
|
211
143
|
|
212
|
-
|
213
|
-
@browser.ua = IE8
|
144
|
+
it "detects ie8" do
|
145
|
+
@browser.ua = $ua["IE8"]
|
214
146
|
|
215
147
|
assert_equal "Internet Explorer", @browser.name
|
216
148
|
assert @browser.ie?
|
@@ -221,8 +153,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
221
153
|
assert_equal "8", @browser.version
|
222
154
|
end
|
223
155
|
|
224
|
-
|
225
|
-
@browser.ua = IE8_COMPAT
|
156
|
+
it "detects ie8 in compatibility view" do
|
157
|
+
@browser.ua = $ua["IE8_COMPAT"]
|
226
158
|
|
227
159
|
assert_equal "Internet Explorer", @browser.name
|
228
160
|
assert @browser.ie?
|
@@ -234,8 +166,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
234
166
|
assert_equal "7", @browser.version
|
235
167
|
end
|
236
168
|
|
237
|
-
|
238
|
-
@browser.ua = IE9
|
169
|
+
it "detects ie9" do
|
170
|
+
@browser.ua = $ua["IE9"]
|
239
171
|
|
240
172
|
assert_equal "Internet Explorer", @browser.name
|
241
173
|
assert @browser.ie?
|
@@ -246,8 +178,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
246
178
|
assert_equal "9", @browser.version
|
247
179
|
end
|
248
180
|
|
249
|
-
|
250
|
-
@browser.ua = IE9_COMPAT
|
181
|
+
it "detects ie9 in compatibility view" do
|
182
|
+
@browser.ua = $ua["IE9_COMPAT"]
|
251
183
|
|
252
184
|
assert_equal "Internet Explorer", @browser.name
|
253
185
|
assert @browser.ie?
|
@@ -259,8 +191,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
259
191
|
assert_equal "7", @browser.version
|
260
192
|
end
|
261
193
|
|
262
|
-
|
263
|
-
@browser.ua = IE10
|
194
|
+
it "detects ie10" do
|
195
|
+
@browser.ua = $ua["IE10"]
|
264
196
|
|
265
197
|
assert_equal "Internet Explorer", @browser.name
|
266
198
|
assert @browser.ie?
|
@@ -271,8 +203,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
271
203
|
assert_equal "10", @browser.version
|
272
204
|
end
|
273
205
|
|
274
|
-
|
275
|
-
@browser.ua = IE10_COMPAT
|
206
|
+
it "detects ie10 in compatibility view" do
|
207
|
+
@browser.ua = $ua["IE10_COMPAT"]
|
276
208
|
|
277
209
|
assert_equal "Internet Explorer", @browser.name
|
278
210
|
assert @browser.ie?
|
@@ -284,8 +216,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
284
216
|
assert_equal "7", @browser.version
|
285
217
|
end
|
286
218
|
|
287
|
-
|
288
|
-
@browser.ua = IE11
|
219
|
+
it "detects ie11" do
|
220
|
+
@browser.ua = $ua["IE11"]
|
289
221
|
|
290
222
|
assert_equal "Internet Explorer", @browser.name
|
291
223
|
assert @browser.ie?
|
@@ -296,8 +228,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
296
228
|
assert_equal "11", @browser.version
|
297
229
|
end
|
298
230
|
|
299
|
-
|
300
|
-
@browser.ua = OPERA
|
231
|
+
it "detects opera" do
|
232
|
+
@browser.ua = $ua["OPERA"]
|
301
233
|
|
302
234
|
assert_equal "Opera", @browser.name
|
303
235
|
assert @browser.opera?
|
@@ -306,8 +238,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
306
238
|
assert_equal "11", @browser.version
|
307
239
|
end
|
308
240
|
|
309
|
-
|
310
|
-
@browser.ua = OPERA_NEXT
|
241
|
+
it "detects opera next" do
|
242
|
+
@browser.ua = $ua["OPERA_NEXT"]
|
311
243
|
|
312
244
|
assert_equal "Opera", @browser.name
|
313
245
|
assert_equal :opera, @browser.id
|
@@ -319,8 +251,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
319
251
|
assert_equal "28", @browser.version
|
320
252
|
end
|
321
253
|
|
322
|
-
|
323
|
-
@browser.ua = FIREFOX
|
254
|
+
it "detects firefox" do
|
255
|
+
@browser.ua = $ua["FIREFOX"]
|
324
256
|
|
325
257
|
assert_equal "Firefox", @browser.name
|
326
258
|
assert @browser.firefox?
|
@@ -329,8 +261,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
329
261
|
assert_equal "3", @browser.version
|
330
262
|
end
|
331
263
|
|
332
|
-
|
333
|
-
@browser.ua = FIREFOX_MODERN
|
264
|
+
it "detects modern firefox" do
|
265
|
+
@browser.ua = $ua["FIREFOX_MODERN"]
|
334
266
|
|
335
267
|
assert_equal "Firefox", @browser.name
|
336
268
|
assert @browser.firefox?
|
@@ -339,8 +271,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
339
271
|
assert_equal "17", @browser.version
|
340
272
|
end
|
341
273
|
|
342
|
-
|
343
|
-
@browser.ua = FIREFOX_TABLET
|
274
|
+
it "detects firefox android tablet" do
|
275
|
+
@browser.ua = $ua["FIREFOX_TABLET"]
|
344
276
|
|
345
277
|
assert_equal "Android", @browser.name
|
346
278
|
assert @browser.firefox?
|
@@ -351,8 +283,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
351
283
|
assert_equal "14", @browser.version
|
352
284
|
end
|
353
285
|
|
354
|
-
|
355
|
-
@browser.ua = CHROME
|
286
|
+
it "detects chrome" do
|
287
|
+
@browser.ua = $ua["CHROME"]
|
356
288
|
|
357
289
|
assert_equal "Chrome", @browser.name
|
358
290
|
assert @browser.chrome?
|
@@ -363,8 +295,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
363
295
|
assert_equal "5", @browser.version
|
364
296
|
end
|
365
297
|
|
366
|
-
|
367
|
-
@browser.ua = MOBILE_CHROME
|
298
|
+
it "detects mobile chrome" do
|
299
|
+
@browser.ua = $ua["MOBILE_CHROME"]
|
368
300
|
|
369
301
|
assert_equal "Chrome", @browser.name
|
370
302
|
assert @browser.chrome?
|
@@ -375,8 +307,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
375
307
|
assert_equal "19", @browser.version
|
376
308
|
end
|
377
309
|
|
378
|
-
|
379
|
-
@browser.ua = ANDROID
|
310
|
+
it "detects android" do
|
311
|
+
@browser.ua = $ua["ANDROID"]
|
380
312
|
|
381
313
|
assert_equal "Android", @browser.name
|
382
314
|
assert @browser.android?
|
@@ -389,8 +321,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
389
321
|
assert_equal "3", @browser.version
|
390
322
|
end
|
391
323
|
|
392
|
-
|
393
|
-
@browser.ua = TABLOID
|
324
|
+
it "detects android tablet" do
|
325
|
+
@browser.ua = $ua["TABLOID"]
|
394
326
|
|
395
327
|
assert_equal "Android", @browser.name
|
396
328
|
assert @browser.android?
|
@@ -403,8 +335,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
403
335
|
assert_equal "4", @browser.version
|
404
336
|
end
|
405
337
|
|
406
|
-
|
407
|
-
@browser.ua = SURFACE
|
338
|
+
it "detects surface tablet" do
|
339
|
+
@browser.ua = $ua["SURFACE"]
|
408
340
|
|
409
341
|
assert_equal "Internet Explorer", @browser.name
|
410
342
|
assert @browser.surface?
|
@@ -416,8 +348,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
416
348
|
assert_equal "10", @browser.version
|
417
349
|
end
|
418
350
|
|
419
|
-
|
420
|
-
@browser.ua = BLACKBERRY
|
351
|
+
it "detects blackberry" do
|
352
|
+
@browser.ua = $ua["BLACKBERRY"]
|
421
353
|
|
422
354
|
assert_equal "BlackBerry", @browser.name
|
423
355
|
assert @browser.blackberry?
|
@@ -428,8 +360,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
428
360
|
assert_equal "4", @browser.version
|
429
361
|
end
|
430
362
|
|
431
|
-
|
432
|
-
@browser.ua = BLACKBERRY4
|
363
|
+
it "detects blackberry4" do
|
364
|
+
@browser.ua = $ua["BLACKBERRY4"]
|
433
365
|
|
434
366
|
assert_equal "BlackBerry", @browser.name
|
435
367
|
assert @browser.blackberry4?
|
@@ -440,8 +372,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
440
372
|
assert_equal "4", @browser.version
|
441
373
|
end
|
442
374
|
|
443
|
-
|
444
|
-
@browser.ua = BLACKBERRY5
|
375
|
+
it "detects blackberry5" do
|
376
|
+
@browser.ua = $ua["BLACKBERRY5"]
|
445
377
|
|
446
378
|
assert_equal "BlackBerry", @browser.name
|
447
379
|
assert @browser.blackberry5?
|
@@ -452,8 +384,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
452
384
|
assert_equal "5", @browser.version
|
453
385
|
end
|
454
386
|
|
455
|
-
|
456
|
-
@browser.ua = BLACKBERRY6
|
387
|
+
it "detects blackberry6" do
|
388
|
+
@browser.ua = $ua["BLACKBERRY6"]
|
457
389
|
|
458
390
|
assert_equal "BlackBerry", @browser.name
|
459
391
|
assert @browser.blackberry6?
|
@@ -464,8 +396,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
464
396
|
assert_equal "534", @browser.version
|
465
397
|
end
|
466
398
|
|
467
|
-
|
468
|
-
@browser.ua = BLACKBERRY7
|
399
|
+
it "detects blackberry7" do
|
400
|
+
@browser.ua = $ua["BLACKBERRY7"]
|
469
401
|
|
470
402
|
assert_equal "BlackBerry", @browser.name
|
471
403
|
assert @browser.blackberry7?
|
@@ -476,8 +408,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
476
408
|
assert_equal "534", @browser.version
|
477
409
|
end
|
478
410
|
|
479
|
-
|
480
|
-
@browser.ua = BLACKBERRY10
|
411
|
+
it "detects blackberry10" do
|
412
|
+
@browser.ua = $ua["BLACKBERRY10"]
|
481
413
|
|
482
414
|
assert_equal "Safari", @browser.name
|
483
415
|
assert @browser.blackberry10?
|
@@ -488,8 +420,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
488
420
|
assert_equal "10", @browser.version
|
489
421
|
end
|
490
422
|
|
491
|
-
|
492
|
-
@browser.ua = QUICKTIME
|
423
|
+
it "detects quicktime" do
|
424
|
+
@browser.ua = $ua["QUICKTIME"]
|
493
425
|
|
494
426
|
assert_equal "QuickTime", @browser.name
|
495
427
|
assert @browser.quicktime?
|
@@ -497,8 +429,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
497
429
|
assert_equal "7", @browser.version
|
498
430
|
end
|
499
431
|
|
500
|
-
|
501
|
-
@browser.ua = COREMEDIA
|
432
|
+
it "detects core media" do
|
433
|
+
@browser.ua = $ua["COREMEDIA"]
|
502
434
|
|
503
435
|
assert_equal "Apple CoreMedia", @browser.name
|
504
436
|
assert @browser.core_media?
|
@@ -506,8 +438,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
506
438
|
assert_equal "1", @browser.version
|
507
439
|
end
|
508
440
|
|
509
|
-
|
510
|
-
@browser.ua = PHANTOM_JS
|
441
|
+
it "detects phantom.js" do
|
442
|
+
@browser.ua = $ua["PHANTOM_JS"]
|
511
443
|
|
512
444
|
assert_equal "PhantomJS", @browser.name
|
513
445
|
assert @browser.phantom_js?
|
@@ -518,23 +450,23 @@ class BrowserTest < Test::Unit::TestCase
|
|
518
450
|
assert_equal "1", @browser.version
|
519
451
|
end
|
520
452
|
|
521
|
-
|
522
|
-
@browser.ua = PSP
|
453
|
+
it "detects psp" do
|
454
|
+
@browser.ua = $ua["PSP"]
|
523
455
|
|
524
456
|
assert_equal "PlayStation Portable", @browser.name
|
525
457
|
assert @browser.psp?
|
526
458
|
assert @browser.mobile?
|
527
459
|
end
|
528
460
|
|
529
|
-
|
530
|
-
@browser.ua = PSP_VITA
|
461
|
+
it "detects psp vita" do
|
462
|
+
@browser.ua = $ua["PSP_VITA"]
|
531
463
|
|
532
464
|
assert_equal "PlayStation Portable", @browser.name
|
533
465
|
assert @browser.psp?
|
534
466
|
assert @browser.mobile?
|
535
467
|
end
|
536
468
|
|
537
|
-
|
469
|
+
it "detects other mobiles" do
|
538
470
|
@browser.ua = "Symbian OS"
|
539
471
|
assert @browser.mobile?
|
540
472
|
assert ! @browser.tablet?
|
@@ -544,8 +476,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
544
476
|
assert ! @browser.tablet?
|
545
477
|
end
|
546
478
|
|
547
|
-
|
548
|
-
@browser.ua = WINDOWS_MOBILE
|
479
|
+
it "detects windows mobile" do
|
480
|
+
@browser.ua = $ua["WINDOWS_MOBILE"]
|
549
481
|
|
550
482
|
assert @browser.mobile?
|
551
483
|
assert @browser.windows?
|
@@ -554,19 +486,19 @@ class BrowserTest < Test::Unit::TestCase
|
|
554
486
|
assert ! @browser.tablet?
|
555
487
|
end
|
556
488
|
|
557
|
-
|
489
|
+
it "returns a zero version" do
|
558
490
|
@browser.ua = "Bot"
|
559
491
|
assert_equal "0.0", @browser.full_version
|
560
492
|
assert_equal "0", @browser.version
|
561
493
|
end
|
562
494
|
|
563
|
-
|
564
|
-
@browser.ua = CHROME
|
495
|
+
it "sets meta" do
|
496
|
+
@browser.ua = $ua["CHROME"]
|
565
497
|
assert_kind_of Array, @browser.meta
|
566
498
|
end
|
567
499
|
|
568
|
-
|
569
|
-
@browser.ua = CHROME
|
500
|
+
it "returns string representation" do
|
501
|
+
@browser.ua = $ua["CHROME"]
|
570
502
|
meta = @browser.to_s
|
571
503
|
|
572
504
|
assert meta.include?("chrome")
|
@@ -575,8 +507,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
575
507
|
assert meta.include?("modern")
|
576
508
|
end
|
577
509
|
|
578
|
-
|
579
|
-
@browser.ua = IPHONE
|
510
|
+
it "returns string representation for ios" do
|
511
|
+
@browser.ua = $ua["IPHONE"]
|
580
512
|
meta = @browser.to_s
|
581
513
|
|
582
514
|
assert meta.include?("iphone")
|
@@ -589,8 +521,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
589
521
|
assert meta.include?("mobile")
|
590
522
|
end
|
591
523
|
|
592
|
-
|
593
|
-
@browser.ua = BLACKBERRY
|
524
|
+
it "returns string representation for mobile" do
|
525
|
+
@browser.ua = $ua["BLACKBERRY"]
|
594
526
|
meta = @browser.to_s
|
595
527
|
|
596
528
|
assert meta.include?("blackberry")
|
@@ -599,8 +531,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
599
531
|
assert meta.include?("mobile")
|
600
532
|
end
|
601
533
|
|
602
|
-
|
603
|
-
@browser.ua = IE6
|
534
|
+
it "returns string representation for ie6" do
|
535
|
+
@browser.ua = $ua["IE6"]
|
604
536
|
meta = @browser.meta
|
605
537
|
|
606
538
|
assert meta.include?("ie")
|
@@ -611,8 +543,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
611
543
|
assert meta.include?("windows")
|
612
544
|
end
|
613
545
|
|
614
|
-
|
615
|
-
@browser.ua = IE7
|
546
|
+
it "returns string representation for ie7" do
|
547
|
+
@browser.ua = $ua["IE7"]
|
616
548
|
meta = @browser.meta
|
617
549
|
|
618
550
|
assert meta.include?("ie")
|
@@ -623,8 +555,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
623
555
|
assert meta.include?("windows")
|
624
556
|
end
|
625
557
|
|
626
|
-
|
627
|
-
@browser.ua = IE8
|
558
|
+
it "returns string representation for ie8" do
|
559
|
+
@browser.ua = $ua["IE8"]
|
628
560
|
meta = @browser.meta
|
629
561
|
|
630
562
|
assert meta.include?("ie")
|
@@ -633,76 +565,76 @@ class BrowserTest < Test::Unit::TestCase
|
|
633
565
|
assert meta.include?("windows")
|
634
566
|
end
|
635
567
|
|
636
|
-
|
568
|
+
it "detects unknown id" do
|
637
569
|
@browser.ua = "Unknown"
|
638
570
|
assert_equal :other, @browser.id
|
639
571
|
end
|
640
572
|
|
641
|
-
|
573
|
+
it "detects unknown name" do
|
642
574
|
@browser.ua = "Unknown"
|
643
575
|
assert_equal "Other", @browser.name
|
644
576
|
end
|
645
577
|
|
646
|
-
|
578
|
+
it "detects mac platform" do
|
647
579
|
@browser.ua = "Mac OS X"
|
648
580
|
assert_equal :mac, @browser.platform
|
649
581
|
assert @browser.mac?
|
650
582
|
end
|
651
583
|
|
652
|
-
|
584
|
+
it "detects windows platform" do
|
653
585
|
@browser.ua = "Windows"
|
654
586
|
assert_equal :windows, @browser.platform
|
655
587
|
assert @browser.windows?
|
656
588
|
end
|
657
589
|
|
658
|
-
|
659
|
-
@browser.ua = WINDOWS8
|
590
|
+
it "detects windows8" do
|
591
|
+
@browser.ua = $ua["WINDOWS8"]
|
660
592
|
|
661
593
|
assert @browser.windows?
|
662
594
|
assert @browser.windows8?
|
663
595
|
end
|
664
596
|
|
665
|
-
|
666
|
-
@browser.ua = WINDOWS81
|
597
|
+
it "detects windows8.1" do
|
598
|
+
@browser.ua = $ua["WINDOWS81"]
|
667
599
|
|
668
600
|
assert @browser.windows?
|
669
601
|
assert @browser.windows8?
|
670
602
|
end
|
671
603
|
|
672
|
-
|
604
|
+
it "detects linux platform" do
|
673
605
|
@browser.ua = "Linux"
|
674
606
|
assert_equal :linux, @browser.platform
|
675
607
|
assert @browser.linux?
|
676
608
|
end
|
677
609
|
|
678
|
-
|
610
|
+
it "detects unknown platform" do
|
679
611
|
@browser.ua = "Unknown"
|
680
612
|
assert_equal :other, @browser.platform
|
681
613
|
end
|
682
614
|
|
683
|
-
|
615
|
+
it "returns all known languages" do
|
684
616
|
@browser.accept_language = "en-us,en;q=0.8,pt-br;q=0.5,pt;q=0.3"
|
685
617
|
assert_equal ["en-us", "en", "pt-br", "pt"], @browser.accept_language
|
686
618
|
end
|
687
619
|
|
688
|
-
|
689
|
-
@browser.ua = XOOM
|
620
|
+
it "detects xoom" do
|
621
|
+
@browser.ua = $ua["XOOM"]
|
690
622
|
|
691
623
|
assert @browser.android?
|
692
624
|
assert @browser.tablet?
|
693
625
|
assert ! @browser.mobile?
|
694
626
|
end
|
695
627
|
|
696
|
-
|
697
|
-
@browser.ua = NEXUS_TABLET
|
628
|
+
it "detects nexus tablet" do
|
629
|
+
@browser.ua = $ua["NEXUS_TABLET"]
|
698
630
|
|
699
631
|
assert @browser.android?
|
700
632
|
assert @browser.tablet?
|
701
633
|
assert ! @browser.mobile?
|
702
634
|
end
|
703
635
|
|
704
|
-
|
705
|
-
@browser.ua = PLAYBOOK
|
636
|
+
it "detects blackberry playbook tablet" do
|
637
|
+
@browser.ua = $ua["PLAYBOOK"]
|
706
638
|
|
707
639
|
assert ! @browser.android?
|
708
640
|
assert @browser.tablet?
|
@@ -712,24 +644,24 @@ class BrowserTest < Test::Unit::TestCase
|
|
712
644
|
assert_equal "7", @browser.version
|
713
645
|
end
|
714
646
|
|
715
|
-
|
716
|
-
@browser.ua = OPERA_MINI
|
647
|
+
it "detects opera mini" do
|
648
|
+
@browser.ua = $ua["OPERA_MINI"]
|
717
649
|
|
718
650
|
assert @browser.opera_mini?
|
719
651
|
assert ! @browser.tablet?
|
720
652
|
assert @browser.mobile?
|
721
653
|
end
|
722
654
|
|
723
|
-
|
724
|
-
@browser.ua = OPERA_MOBI
|
655
|
+
it "detects opera mobi" do
|
656
|
+
@browser.ua = $ua["OPERA_MOBI"]
|
725
657
|
|
726
658
|
assert @browser.opera?
|
727
659
|
assert ! @browser.tablet?
|
728
660
|
assert @browser.mobile?
|
729
661
|
end
|
730
662
|
|
731
|
-
|
732
|
-
@browser.ua = WINDOWS_PHONE
|
663
|
+
it "detects windows phone" do
|
664
|
+
@browser.ua = $ua["WINDOWS_PHONE"]
|
733
665
|
|
734
666
|
assert @browser.ie?
|
735
667
|
assert_equal "7", @browser.version
|
@@ -739,8 +671,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
739
671
|
assert ! @browser.tablet?
|
740
672
|
end
|
741
673
|
|
742
|
-
|
743
|
-
@browser.ua = WINDOWS_PHONE8
|
674
|
+
it "detects windows phone 8" do
|
675
|
+
@browser.ua = $ua["WINDOWS_PHONE8"]
|
744
676
|
|
745
677
|
assert @browser.ie?
|
746
678
|
assert_equal "10", @browser.version
|
@@ -750,8 +682,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
750
682
|
assert ! @browser.tablet?
|
751
683
|
end
|
752
684
|
|
753
|
-
|
754
|
-
@browser.ua = WINDOWS_PHONE8
|
685
|
+
it "detects windows mobile" do
|
686
|
+
@browser.ua = $ua["WINDOWS_PHONE8"]
|
755
687
|
|
756
688
|
assert @browser.ie?
|
757
689
|
assert_equal "10", @browser.version
|
@@ -761,13 +693,13 @@ class BrowserTest < Test::Unit::TestCase
|
|
761
693
|
assert ! @browser.tablet?
|
762
694
|
end
|
763
695
|
|
764
|
-
|
765
|
-
@browser.ua = IE10_X64_WINX64
|
696
|
+
it "detects windows x64" do
|
697
|
+
@browser.ua = $ua["IE10_X64_WINX64"]
|
766
698
|
assert @browser.windows_x64?
|
767
699
|
end
|
768
700
|
|
769
|
-
|
770
|
-
@browser.ua = IE11_TOUCH_SCREEN
|
701
|
+
it "detects ie11 touch desktop pc" do
|
702
|
+
@browser.ua = $ua["IE11_TOUCH_SCREEN"]
|
771
703
|
|
772
704
|
assert_equal "Internet Explorer", @browser.name
|
773
705
|
assert @browser.ie?
|
@@ -781,22 +713,22 @@ class BrowserTest < Test::Unit::TestCase
|
|
781
713
|
assert_equal "11", @browser.version
|
782
714
|
end
|
783
715
|
|
784
|
-
|
785
|
-
@browser.ua = KINDLE
|
716
|
+
it "detects kindle monochrome" do
|
717
|
+
@browser.ua = $ua["KINDLE"]
|
786
718
|
|
787
719
|
assert @browser.kindle?
|
788
720
|
assert @browser.webkit?
|
789
721
|
end
|
790
722
|
|
791
|
-
|
792
|
-
@browser.ua = KINDLE_FIRE
|
723
|
+
it "detects kindle fire" do
|
724
|
+
@browser.ua = $ua["KINDLE_FIRE"]
|
793
725
|
|
794
726
|
assert @browser.kindle?
|
795
727
|
assert @browser.webkit?
|
796
728
|
end
|
797
729
|
|
798
|
-
|
799
|
-
@browser.ua = KINDLE_FIRE_HD
|
730
|
+
it "detects kindle fire hd" do
|
731
|
+
@browser.ua = $ua["KINDLE_FIRE_HD"]
|
800
732
|
|
801
733
|
assert @browser.silk?
|
802
734
|
assert @browser.kindle?
|
@@ -805,8 +737,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
805
737
|
assert ! @browser.mobile?
|
806
738
|
end
|
807
739
|
|
808
|
-
|
809
|
-
@browser.ua = KINDLE_FIRE_HD_MOBILE
|
740
|
+
it "detects kindle fire hd mobile" do
|
741
|
+
@browser.ua = $ua["KINDLE_FIRE_HD_MOBILE"]
|
810
742
|
|
811
743
|
assert @browser.silk?
|
812
744
|
assert @browser.kindle?
|
@@ -815,97 +747,97 @@ class BrowserTest < Test::Unit::TestCase
|
|
815
747
|
assert @browser.mobile?
|
816
748
|
end
|
817
749
|
|
818
|
-
|
819
|
-
@browser.ua = NOOK
|
750
|
+
it "detects nook" do
|
751
|
+
@browser.ua = $ua["NOOK"]
|
820
752
|
|
821
753
|
assert @browser.tablet?
|
822
754
|
assert ! @browser.mobile?
|
823
755
|
end
|
824
756
|
|
825
|
-
|
826
|
-
@browser.ua = SAMSUNG
|
757
|
+
it "detects samsung" do
|
758
|
+
@browser.ua = $ua["SAMSUNG"]
|
827
759
|
|
828
760
|
assert @browser.tablet?
|
829
761
|
assert ! @browser.mobile?
|
830
762
|
end
|
831
763
|
|
832
|
-
|
833
|
-
@browser.ua = NINTENDO_WII
|
764
|
+
it "detects nintendo wii" do
|
765
|
+
@browser.ua = $ua["NINTENDO_WII"]
|
834
766
|
|
835
767
|
assert @browser.console?
|
836
768
|
assert @browser.nintendo?
|
837
769
|
end
|
838
770
|
|
839
|
-
|
840
|
-
@browser.ua = NINTENDO_WIIU
|
771
|
+
it "detects nintendo wii u" do
|
772
|
+
@browser.ua = $ua["NINTENDO_WIIU"]
|
841
773
|
|
842
774
|
assert @browser.console?
|
843
775
|
assert @browser.nintendo?
|
844
776
|
end
|
845
777
|
|
846
|
-
|
847
|
-
@browser.ua = PLAYSTATION3
|
778
|
+
it "detects playstation 3" do
|
779
|
+
@browser.ua = $ua["PLAYSTATION3"]
|
848
780
|
|
849
781
|
assert @browser.console?
|
850
782
|
assert @browser.playstation?
|
851
783
|
end
|
852
784
|
|
853
|
-
|
854
|
-
@browser.ua = PLAYSTATION4
|
785
|
+
it "detects playstation 4" do
|
786
|
+
@browser.ua = $ua["PLAYSTATION4"]
|
855
787
|
|
856
788
|
assert @browser.console?
|
857
789
|
assert @browser.playstation?
|
858
790
|
end
|
859
791
|
|
860
|
-
|
861
|
-
@browser.ua = XBOX360
|
792
|
+
it "detects xbox 360" do
|
793
|
+
@browser.ua = $ua["XBOX360"]
|
862
794
|
|
863
795
|
assert @browser.console?
|
864
796
|
assert @browser.xbox?
|
865
797
|
end
|
866
798
|
|
867
|
-
|
868
|
-
@browser.ua = XBOXONE
|
799
|
+
it "detects xbox one" do
|
800
|
+
@browser.ua = $ua["XBOXONE"]
|
869
801
|
|
870
802
|
assert @browser.console?
|
871
803
|
assert @browser.xbox?
|
872
804
|
end
|
873
805
|
|
874
|
-
|
875
|
-
@browser.ua = SAFARI
|
806
|
+
it "removes duplicate items" do
|
807
|
+
@browser.ua = $ua["SAFARI"]
|
876
808
|
assert_equal ["safari"], @browser.meta.select {|item| item == "safari" }
|
877
809
|
end
|
878
810
|
|
879
|
-
|
880
|
-
@browser.ua = SAFARI
|
811
|
+
it "detects meta aliased as to_a" do
|
812
|
+
@browser.ua = $ua["SAFARI"]
|
881
813
|
assert_equal @browser.meta, @browser.to_a
|
882
814
|
end
|
883
815
|
|
884
|
-
|
885
|
-
@browser.ua = GOOGLE_BOT
|
816
|
+
it "detects bots" do
|
817
|
+
@browser.ua = $ua["GOOGLE_BOT"]
|
886
818
|
assert @browser.bot?
|
887
819
|
|
888
|
-
@browser.ua = MSN_BOT
|
820
|
+
@browser.ua = $ua["MSN_BOT"]
|
889
821
|
assert @browser.bot?
|
890
822
|
|
891
|
-
@browser.ua = FACEBOOK_BOT
|
823
|
+
@browser.ua = $ua["FACEBOOK_BOT"]
|
892
824
|
assert @browser.bot?
|
893
825
|
|
894
826
|
# Many bots actually report empty ua strings.
|
895
827
|
@browser.ua = ''
|
896
828
|
assert @browser.bot?
|
897
829
|
|
898
|
-
@browser.ua = CHROME
|
830
|
+
@browser.ua = $ua["CHROME"]
|
899
831
|
assert ! @browser.bot?
|
900
832
|
end
|
901
833
|
|
902
|
-
|
903
|
-
@browser.ua = CHROME_OS
|
834
|
+
it "detects chrome os" do
|
835
|
+
@browser.ua = $ua["CHROME_OS"]
|
904
836
|
assert @browser.chrome_os?
|
905
837
|
end
|
906
838
|
|
907
|
-
|
908
|
-
@browser.ua = SMART_TV
|
839
|
+
it "detects tv" do
|
840
|
+
@browser.ua = $ua["SMART_TV"]
|
909
841
|
assert @browser.tv?
|
910
842
|
end
|
911
843
|
end
|