jquery.client: Component-wise version comparison in #test with strings
[lhc/web/wiklou.git] / tests / qunit / suites / resources / jquery / jquery.client.test.js
index b2a6fd5..6030206 100644 (file)
@@ -34,7 +34,7 @@
                                profile: {
                                        name: 'msie',
                                        layout: 'trident',
-                                       layoutVersion: 'unknown', // should be able to report 6?
+                                       layoutVersion: 6,
                                        platform: 'win',
                                        version: '10.0',
                                        versionBase: '10',
                                        rtl: true
                                }
                        },
+                       // Internet Explorer 11
+                       'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko': {
+                               title: 'Internet Explorer 11',
+                               platform: 'Win32',
+                               profile: {
+                                       name: 'msie',
+                                       layout: 'trident',
+                                       layoutVersion: 7,
+                                       platform: 'win',
+                                       version: '11.0',
+                                       versionBase: '11',
+                                       versionNumber: 11
+                               },
+                               wikiEditor: {
+                                       ltr: true,
+                                       rtl: true
+                               }
+                       },
+                       // Internet Explorer 11 - Windows 8.1 x64 Modern UI
+                       'Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; rv:11.0) like Gecko': {
+                               title: 'Internet Explorer 11',
+                               platform: 'Win64',
+                               profile: {
+                                       name: 'msie',
+                                       layout: 'trident',
+                                       layoutVersion: 7,
+                                       platform: 'win',
+                                       version: '11.0',
+                                       versionBase: '11',
+                                       versionNumber: 11
+                               },
+                               wikiEditor: {
+                                       ltr: true,
+                                       rtl: true
+                               }
+                       },
+                       // Internet Explorer 11 - Windows 8.1 x64 desktop UI
+                       'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko': {
+                               title: 'Internet Explorer 11',
+                               platform: 'WOW64',
+                               profile: {
+                                       name: 'msie',
+                                       layout: 'trident',
+                                       layoutVersion: 7,
+                                       platform: 'win',
+                                       version: '11.0',
+                                       versionBase: '11',
+                                       versionNumber: 11
+                               },
+                               wikiEditor: {
+                                       ltr: true,
+                                       rtl: true
+                               }
+                       },
                        // Firefox 2
                        // Firefox 3.5
                        'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.19) Gecko/20110420 Firefox/3.5.19': {
                                        rtl: true
                                }
                        },
+                       // Opera 15 (WebKit-based)
+                       'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36 OPR/15.0.1147.130': {
+                               title: 'Opera 15',
+                               platform: 'Win32',
+                               profile: {
+                                       name: 'opera',
+                                       layout: 'webkit',
+                                       layoutVersion: 537,
+                                       platform: 'win',
+                                       version: '15.0.1147.130',
+                                       versionBase: '15',
+                                       versionNumber: 15
+                               },
+                               wikiEditor: {
+                                       ltr: true,
+                                       rtl: true
+                               }
+                       },
                        // Chrome 5
                        // Chrome 6
                        // Chrome 7
                                        rtl: true
                                }
                        },
-                       // Bug #34924
+                       // Rekonq (bug 34924)
                        'Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) rekonq Safari/534.34': {
                                title: 'Rekonq',
                                platform: 'Linux i686',
                                        ltr: true,
                                        rtl: true
                                }
+                       },
+                       // Konqueror
+                       'Mozilla/5.0 (X11; Linux i686) KHTML/4.9.1 (like Gecko) Konqueror/4.9': {
+                               title: 'Konqueror',
+                               platform: 'Linux i686',
+                               profile: {
+                                       name: 'konqueror',
+                                       layout: 'khtml',
+                                       layoutVersion: 'unknown',
+                                       platform: 'linux',
+                                       version: '4.9.1',
+                                       versionBase: '4',
+                                       versionNumber: 4.9
+                               },
+                               wikiEditor: {
+                                       // '4.9' is less than '4.11'.
+                                       ltr: false,
+                                       rtl: false
+                               },
+                               wikiEditorLegacy: {
+                                       // The check is missing in legacyTestMap
+                                       ltr: true,
+                                       rtl: true
+                               }
                        }
                },
                testMap = {
-                       // Example from WikiEditor
-                       // Make sure to use raw numbers, a string like "7.0" would fail on a
-                       // version 10 browser since in string comparaison "10" is before "7.0" :)
+                       // Example from WikiEditor, modified to provide version identifiers as strings and with
+                       // Konqueror 4.11 check added.
+                       'ltr': {
+                               'msie': [['>=', '7.0']],
+                               'firefox': [['>=', '2']],
+                               'opera': [['>=', '9.6']],
+                               'safari': [['>=', '3']],
+                               'chrome': [['>=', '3']],
+                               'netscape': [['>=', '9']],
+                               'konqueror': [['>=', '4.11']],
+                               'blackberry': false,
+                               'ipod': false,
+                               'iphone': false
+                       },
+                       'rtl': {
+                               'msie': [['>=', '8']],
+                               'firefox': [['>=', '2']],
+                               'opera': [['>=', '9.6']],
+                               'safari': [['>=', '3']],
+                               'chrome': [['>=', '3']],
+                               'netscape': [['>=', '9']],
+                               'konqueror': [['>=', '4.11']],
+                               'blackberry': false,
+                               'ipod': false,
+                               'iphone': false
+                       }
+               },
+               legacyTestMap = {
+                       // Original example from WikiEditor.
+                       // This is using the old, but still supported way of providing version identifiers as numbers
+                       // instead of strings; with this method, 4.9 would be considered larger than 4.11.
                        'ltr': {
                                'msie': [['>=', 7.0]],
                                'firefox': [['>=', 2]],
                }, ie7Profile, true ), false, 'returns false if browser not found and exactMatchOnly is set' );
        } );
 
-       QUnit.test( 'test( testMap) - WikiEditor sample', uacount * 2, function ( assert ) {
+       QUnit.test( 'test( testMap ), test( legacyTestMap ) - WikiEditor sample', uacount * 2 * 2, function ( assert ) {
                var $body = $( 'body' ),
                        bodyClasses = $body.attr( 'class' );
 
                // Loop through and run tests
                $.each( uas, function ( agent, data ) {
                        $.each( ['ltr', 'rtl'], function ( i, dir ) {
-                               var profile, testMatch;
+                               var profile, testMatch, legacyTestMatch;
                                $body.removeClass( 'ltr rtl' ).addClass( dir );
                                profile = $.client.profile( {
                                        userAgent: agent,
                                        platform: data.platform
                                } );
                                testMatch = $.client.test( testMap, profile );
+                               legacyTestMatch = $.client.test( legacyTestMap, profile );
                                $body.removeClass( dir );
 
-                               assert.equal( testMatch, data.wikiEditor[dir], 'testing comparison based on ' + dir + ', ' + agent );
+                               assert.equal(
+                                       testMatch,
+                                       data.wikiEditor[dir],
+                                       'testing comparison based on ' + dir + ', ' + agent
+                               );
+                               assert.equal(
+                                       legacyTestMatch,
+                                       data.wikiEditorLegacy ? data.wikiEditorLegacy[dir] : data.wikiEditor[dir],
+                                       'testing comparison based on ' + dir + ', ' + agent + ' (legacyTestMap)'
+                               );
                        } );
                } );