1 module( 'jquery.client' );
3 test( '-- Initial check', function() {
5 ok( jQuery
.client
, 'jQuery.client defined' );
8 test( 'profile userAgent support', function() {
11 // Object keyed by userAgent. Value is an array (human-readable name, client-profile object, navigator.platform value)
12 // Info based on results from http://toolserver.org/~krinkle/testswarm/job/174/
14 // Internet Explorer 6
15 // Internet Explorer 7
16 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)': {
17 title
: 'Internet Explorer 7',
22 "layoutVersion": "unknown",
29 // Internet Explorer 8
30 // Internet Explorer 9
31 // Internet Explorer 10
34 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.19) Gecko/20110420 Firefox/3.5.19': {
40 "layoutVersion": 20110420,
48 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110422 Ubuntu/10.10 (maverick) Firefox/3.6.17': {
50 platform
: 'Linux i686',
54 "layoutVersion": 20110422,
62 'Mozilla/5.0 (Windows NT 6.0; rv:2.0.1) Gecko/20100101 Firefox/4.0.1': {
68 "layoutVersion": 20100101,
78 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; nl-nl) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7': {
91 'Mozilla/5.0 (Windows; U; Windows NT 6.0; cs-CZ) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7': {
114 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30': {
116 platform
: 'MacIntel',
120 "layoutVersion": 534,
122 "version": "12.0.742.112",
127 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.68 Safari/534.30': {
129 platform
: 'Linux i686',
133 "layoutVersion": 534,
135 "version": "12.0.742.68",
142 // Generate a client profile object and compare recursively
143 var uaTest = function( rawUserAgent
, data
) {
144 var ret
= $.client
.profile( {
145 userAgent
: rawUserAgent
,
146 platform
: data
.platform
148 deepEqual( ret
, data
.profile
, 'Client profile support check for ' + data
.title
+ ' (' + data
.platform
+ '): ' + rawUserAgent
);
151 // Loop through and run tests
152 $.each( uas
, uaTest
);
155 test( 'profile return validation for current user agent', function() {
157 var p
= $.client
.profile();
158 var unknownOrType = function( val
, type
, summary
) {
159 return ok( typeof val
=== type
|| val
=== 'unknown', summary
);
162 equal( typeof p
, 'object', 'profile returns an object' );
163 unknownOrType( p
.layout
, 'string', 'p.layout is a string (or "unknown")' );
164 unknownOrType( p
.layoutVersion
, 'number', 'p.layoutVersion is a number (or "unknown")' );
165 unknownOrType( p
.platform
, 'string', 'p.platform is a string (or "unknown")' );
166 unknownOrType( p
.version
, 'string', 'p.version is a string (or "unknown")' );
167 unknownOrType( p
.versionBase
, 'string', 'p.versionBase is a string (or "unknown")' );
168 equal( typeof p
.versionNumber
, 'number', 'p.versionNumber is a number' );
171 test( 'test', function() {
174 // Example from WikiEditor
178 'firefox': [['>=', 2]],
179 'opera': [['>=', 9.6]],
180 'safari': [['>=', 3]],
181 'chrome': [['>=', 3]],
182 'netscape': [['>=', 9]],
189 'firefox': [['>=', 2]],
190 'opera': [['>=', 9.6]],
191 'safari': [['>=', 3]],
192 'chrome': [['>=', 3]],
193 'netscape': [['>=', 9]],
199 // .test() uses eval, make sure no exceptions are thrown
200 // then do a basic return value type check
201 var testMatch
= $.client
.test( testMap
);
203 equal( typeof testMatch
, 'boolean', 'test returns a boolean value' );