webfontloader 1.5.8 → 1.5.9
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.
- checksums.yaml +4 -4
- data/CHANGELOG +5 -0
- data/README.md +18 -0
- data/lib/webfontloader.rb +1 -1
- data/spec/core/eventdispatcher_spec.js +47 -17
- data/spec/core/useragentparser_spec.js +212 -470
- data/spec/modules/monotype_spec.js +0 -3
- data/spec/modules/typekit_spec.js +14 -38
- data/src/core/eventdispatcher.js +71 -57
- data/src/core/fontruler.js +1 -1
- data/src/core/fontwatcher.js +27 -15
- data/src/core/useragent.js +3 -39
- data/src/core/useragentparser.js +15 -58
- data/src/core/webfont.js +20 -5
- data/src/modules/typekit.js +24 -27
- data/webfontloader.gemspec +3 -2
- data/webfontloader.js +31 -0
- metadata +3 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 70bf8c6b61ccb3b4e26328fa29c51aff7fc9c3bc
         | 
| 4 | 
            +
              data.tar.gz: ed30c08fd73534ba6bc6ceff1b3f3d78f458c1ba
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: a42b3eeea5586f49ea43dc92f32a14c20e1ed5139cdddd2a06963b66f317c5d71e5cf51d87d67562dbe67f4c8565e478e779f7055e0ad4d653eb57089abb3d4a
         | 
| 7 | 
            +
              data.tar.gz: 9999410a47c058f6d7d4e23bae27fd1296d69e2be8e5b6709ce886d7a6a0ee4f6230303fe6d8788c4880b0e2d88442c166151665d4d18dedeaaf7c68a71b24fb
         | 
    
        data/CHANGELOG
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -116,6 +116,24 @@ WebFontConfig = { | |
| 116 116 |  | 
| 117 117 | 
             
            The `fontloading`, `fontactive` and `fontinactive` callbacks are passed the family name and font variation description of the font that concerns the event.
         | 
| 118 118 |  | 
| 119 | 
            +
            It is possible to disable setting classes on the HTML element by setting the `classes` configuration parameter to `false` (defaults to `true`).
         | 
| 120 | 
            +
             | 
| 121 | 
            +
            ```javascript
         | 
| 122 | 
            +
            WebFontConfig = {
         | 
| 123 | 
            +
              classes: false
         | 
| 124 | 
            +
            };
         | 
| 125 | 
            +
            ```
         | 
| 126 | 
            +
             | 
| 127 | 
            +
            You can also disable font events (callbacks) by setting the `events` parameter to `false` (defaults to `true`).
         | 
| 128 | 
            +
             | 
| 129 | 
            +
            ```javascript
         | 
| 130 | 
            +
            WebFontConfig = {
         | 
| 131 | 
            +
              events: false
         | 
| 132 | 
            +
            };
         | 
| 133 | 
            +
            ```
         | 
| 134 | 
            +
             | 
| 135 | 
            +
            If both events and classes are disabled, the Web Font Loader does not perform font watching and only acts as a way to insert @font-face rules in the document.
         | 
| 136 | 
            +
             | 
| 119 137 | 
             
            ### Timeouts
         | 
| 120 138 |  | 
| 121 139 | 
             
            Since the Internet is not 100% reliable, it's possible that a font will fail to load. The `fontinactive` event will be triggered after 5 seconds if the font fails to render. If *at least* one font succesfully renders, the `active` event will be triggered, else the `inactive` event will be triggered.
         | 
    
        data/lib/webfontloader.rb
    CHANGED
    
    
| @@ -6,29 +6,22 @@ describe('EventDispatcher', function () { | |
| 6 6 | 
             
                  element = null
         | 
| 7 7 | 
             
                  eventDispatcher = null,
         | 
| 8 8 | 
             
                  namespace = 'ns',
         | 
| 9 | 
            -
                  font = null | 
| 10 | 
            -
                  nullFn = function () {},
         | 
| 11 | 
            -
                  callbacks = {
         | 
| 12 | 
            -
                    loading: nullFn,
         | 
| 13 | 
            -
                    active: nullFn,
         | 
| 14 | 
            -
                    inactive: nullFn,
         | 
| 15 | 
            -
                    fontloading: nullFn,
         | 
| 16 | 
            -
                    fontactive: nullFn,
         | 
| 17 | 
            -
                    fontinactive: nullFn
         | 
| 18 | 
            -
                  };
         | 
| 9 | 
            +
                  font = null;
         | 
| 19 10 |  | 
| 20 11 | 
             
              beforeEach(function () {
         | 
| 21 12 | 
             
                element = domHelper.createElement();
         | 
| 13 | 
            +
                callbacks = {
         | 
| 14 | 
            +
                  loading: jasmine.createSpy('loading'),
         | 
| 15 | 
            +
                  active: jasmine.createSpy('active'),
         | 
| 16 | 
            +
                  inactive: jasmine.createSpy('inactive'),
         | 
| 17 | 
            +
                  fontloading: jasmine.createSpy('fontloading'),
         | 
| 18 | 
            +
                  fontactive: jasmine.createSpy('fontactive'),
         | 
| 19 | 
            +
                  fontinactive: jasmine.createSpy('fontinactive')
         | 
| 20 | 
            +
                };
         | 
| 21 | 
            +
             | 
| 22 22 | 
             
                eventDispatcher = new EventDispatcher(domHelper, element, callbacks, namespace);
         | 
| 23 23 |  | 
| 24 24 | 
             
                font = new Font('My Family', 'n4');
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                spyOn(callbacks, 'loading');
         | 
| 27 | 
            -
                spyOn(callbacks, 'active');
         | 
| 28 | 
            -
                spyOn(callbacks, 'inactive');
         | 
| 29 | 
            -
                spyOn(callbacks, 'fontloading');
         | 
| 30 | 
            -
                spyOn(callbacks, 'fontactive');
         | 
| 31 | 
            -
                spyOn(callbacks, 'fontinactive');
         | 
| 32 25 | 
             
              });
         | 
| 33 26 |  | 
| 34 27 | 
             
              describe('#dispatchLoading', function () {
         | 
| @@ -210,4 +203,41 @@ describe('EventDispatcher', function () { | |
| 210 203 | 
             
                  expect(element.className).toEqual('ns-active');
         | 
| 211 204 | 
             
                });
         | 
| 212 205 | 
             
              });
         | 
| 206 | 
            +
             | 
| 207 | 
            +
              describe('disable callbacks', function () {
         | 
| 208 | 
            +
                beforeEach(function () {
         | 
| 209 | 
            +
                  eventDispatcher = new EventDispatcher(domHelper, element, callbacks, namespace, false);
         | 
| 210 | 
            +
                  eventDispatcher.dispatchInactive();
         | 
| 211 | 
            +
                  eventDispatcher.dispatchActive();
         | 
| 212 | 
            +
                  eventDispatcher.dispatchLoading();
         | 
| 213 | 
            +
                  eventDispatcher.dispatchFontInactive(font);
         | 
| 214 | 
            +
                  eventDispatcher.dispatchFontActive(font);
         | 
| 215 | 
            +
                  eventDispatcher.dispatchFontLoading(font);
         | 
| 216 | 
            +
                });
         | 
| 217 | 
            +
             | 
| 218 | 
            +
                it('should not fire any events', function () {
         | 
| 219 | 
            +
                  expect(callbacks.inactive).not.toHaveBeenCalled();
         | 
| 220 | 
            +
                  expect(callbacks.active).not.toHaveBeenCalled();
         | 
| 221 | 
            +
                  expect(callbacks.loading).not.toHaveBeenCalled();
         | 
| 222 | 
            +
                  expect(callbacks.fontinactive).not.toHaveBeenCalled();
         | 
| 223 | 
            +
                  expect(callbacks.fontactive).not.toHaveBeenCalled();
         | 
| 224 | 
            +
                  expect(callbacks.fontloading).not.toHaveBeenCalled();
         | 
| 225 | 
            +
                });
         | 
| 226 | 
            +
              });
         | 
| 227 | 
            +
             | 
| 228 | 
            +
              describe('disable classes', function () {
         | 
| 229 | 
            +
                beforeEach(function () {
         | 
| 230 | 
            +
                  eventDispatcher = new EventDispatcher(domHelper, element, callbacks, namespace, true, false);
         | 
| 231 | 
            +
                  eventDispatcher.dispatchInactive();
         | 
| 232 | 
            +
                  eventDispatcher.dispatchActive();
         | 
| 233 | 
            +
                  eventDispatcher.dispatchLoading();
         | 
| 234 | 
            +
                  eventDispatcher.dispatchFontInactive(font);
         | 
| 235 | 
            +
                  eventDispatcher.dispatchFontActive(font);
         | 
| 236 | 
            +
                  eventDispatcher.dispatchFontLoading(font);
         | 
| 237 | 
            +
                });
         | 
| 238 | 
            +
             | 
| 239 | 
            +
                it('should not fire any events', function () {
         | 
| 240 | 
            +
                  expect(element.className).toEqual('');
         | 
| 241 | 
            +
                });
         | 
| 242 | 
            +
              });
         | 
| 213 243 | 
             
            });
         | 
| @@ -19,13 +19,8 @@ describe('UserAgentParser', function () { | |
| 19 19 | 
             
                      return false;
         | 
| 20 20 | 
             
                    }
         | 
| 21 21 |  | 
| 22 | 
            -
                    if (actual. | 
| 23 | 
            -
                      this.message = msg('parsed version', actual. | 
| 24 | 
            -
                      return false;
         | 
| 25 | 
            -
                    }
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                    if (actual.getVersion() !== expected.version) {
         | 
| 28 | 
            -
                      this.message = msg('version', actual.getVersion(), expected.version);
         | 
| 22 | 
            +
                    if (actual.getVersion().ne(expected.version)) {
         | 
| 23 | 
            +
                      this.message = msg('parsed version', actual.getVersion(), expected.version);
         | 
| 29 24 | 
             
                      return false;
         | 
| 30 25 | 
             
                    }
         | 
| 31 26 |  | 
| @@ -34,13 +29,8 @@ describe('UserAgentParser', function () { | |
| 34 29 | 
             
                      return false;
         | 
| 35 30 | 
             
                    }
         | 
| 36 31 |  | 
| 37 | 
            -
                    if (actual. | 
| 38 | 
            -
                      this.message = msg('platform parsed version', actual. | 
| 39 | 
            -
                      return false;
         | 
| 40 | 
            -
                    }
         | 
| 41 | 
            -
             | 
| 42 | 
            -
                    if (actual.getPlatformVersion() !== expected.platformVersion) {
         | 
| 43 | 
            -
                      this.message = msg('platform version', actual.getPlatformVersion(), expected.platformVersion);
         | 
| 32 | 
            +
                    if (actual.getPlatformVersion().ne(expected.platformVersion)) {
         | 
| 33 | 
            +
                      this.message = msg('platform parsed version', actual.gePlatformVersion(), expected.platformVersion);
         | 
| 44 34 | 
             
                      return false;
         | 
| 45 35 | 
             
                    }
         | 
| 46 36 |  | 
| @@ -49,13 +39,8 @@ describe('UserAgentParser', function () { | |
| 49 39 | 
             
                      return false;
         | 
| 50 40 | 
             
                    }
         | 
| 51 41 |  | 
| 52 | 
            -
                    if (actual. | 
| 53 | 
            -
                      this.message = msg('engine parsed version', actual. | 
| 54 | 
            -
                      return false;
         | 
| 55 | 
            -
                    }
         | 
| 56 | 
            -
             | 
| 57 | 
            -
                    if (actual.getEngineVersion() !== expected.engineVersion) {
         | 
| 58 | 
            -
                      this.message = msg('engine version', actual.getEngineVersion(), expected.engineVersion);
         | 
| 42 | 
            +
                    if (actual.getEngineVersion().ne(expected.engineVersion)) {
         | 
| 43 | 
            +
                      this.message = msg('engine parsed version', actual.getEngineVersion(), expected.engineVersion);
         | 
| 59 44 | 
             
                      return false;
         | 
| 60 45 | 
             
                    }
         | 
| 61 46 |  | 
| @@ -89,7 +74,7 @@ describe('UserAgentParser', function () { | |
| 89 74 | 
             
                  return new UserAgentParser(str, {}).getPlatformVersionString_();
         | 
| 90 75 | 
             
                }
         | 
| 91 76 |  | 
| 92 | 
            -
                it('should parse Linux  | 
| 77 | 
            +
                it('should parse Linux versions correctly', function () {
         | 
| 93 78 | 
             
                  expect(parsePlatformVersion('(Linux; U; en-us; KFJWI Build/IML74K)')).toEqual('Unknown');
         | 
| 94 79 | 
             
                  expect(parsePlatformVersion('(Linux i686; U; en)')).toEqual('Unknown');
         | 
| 95 80 | 
             
                  expect(parsePlatformVersion('(X11; Linux i686; U; Linux Mint; nb)')).toEqual('Unknown');
         | 
| @@ -99,7 +84,7 @@ describe('UserAgentParser', function () { | |
| 99 84 | 
             
                  expect(parsePlatformVersion('(X11; Linux 10.1; U; en-US)')).toEqual('10.1');
         | 
| 100 85 | 
             
                });
         | 
| 101 86 |  | 
| 102 | 
            -
                it('should parse ChromeOS  | 
| 87 | 
            +
                it('should parse ChromeOS versions correctly', function () {
         | 
| 103 88 | 
             
                  expect(parsePlatformVersion('(X11; CrOS i686 1660.57.0)')).toEqual('1660.57.0');
         | 
| 104 89 | 
             
                });
         | 
| 105 90 | 
             
              });
         | 
| @@ -114,14 +99,11 @@ describe('UserAgentParser', function () { | |
| 114 99 | 
             
                    expect(parse('Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/531.9 (KHTML, like Gecko) AdobeAIR/2.5'))
         | 
| 115 100 | 
             
                    .toMatchUserAgent({
         | 
| 116 101 | 
             
                      name: 'AdobeAIR',
         | 
| 117 | 
            -
                       | 
| 118 | 
            -
                      version: '2.5',
         | 
| 102 | 
            +
                      version: new Version(2, 5),
         | 
| 119 103 | 
             
                      platform: 'Macintosh',
         | 
| 120 | 
            -
                       | 
| 121 | 
            -
                      platformVersion: 'Unknown',
         | 
| 104 | 
            +
                      platformVersion: new Version(),
         | 
| 122 105 | 
             
                      engine: 'AppleWebKit',
         | 
| 123 | 
            -
                       | 
| 124 | 
            -
                      engineVersion: '531.9',
         | 
| 106 | 
            +
                      engineVersion: new Version(531, 9),
         | 
| 125 107 | 
             
                      documentMode: undefined,
         | 
| 126 108 | 
             
                      browserInfo: {
         | 
| 127 109 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -135,14 +117,11 @@ describe('UserAgentParser', function () { | |
| 135 117 | 
             
                    expect(parse('Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/531.9 (KHTML, like Gecko) AdobeAIR/2.0'))
         | 
| 136 118 | 
             
                    .toMatchUserAgent({
         | 
| 137 119 | 
             
                      name: 'AdobeAIR',
         | 
| 138 | 
            -
                       | 
| 139 | 
            -
                      version: '2.0',
         | 
| 120 | 
            +
                      version: new Version(2, 0),
         | 
| 140 121 | 
             
                      platform: 'Macintosh',
         | 
| 141 | 
            -
                       | 
| 142 | 
            -
                      platformVersion: 'Unknown',
         | 
| 122 | 
            +
                      platformVersion: new Version(),
         | 
| 143 123 | 
             
                      engine: 'AppleWebKit',
         | 
| 144 | 
            -
                       | 
| 145 | 
            -
                      engineVersion: '531.9',
         | 
| 124 | 
            +
                      engineVersion: new Version(531, 9),
         | 
| 146 125 | 
             
                      documentMode: undefined,
         | 
| 147 126 | 
             
                      browserInfo: {
         | 
| 148 127 | 
             
                        hasWebFontSupport: false,
         | 
| @@ -158,14 +137,11 @@ describe('UserAgentParser', function () { | |
| 158 137 | 
             
                    expect(parse('Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.1'))
         | 
| 159 138 | 
             
                    .toMatchUserAgent({
         | 
| 160 139 | 
             
                      name: 'Firefox',
         | 
| 161 | 
            -
                       | 
| 162 | 
            -
                      version: '3.6.3',
         | 
| 140 | 
            +
                      version: new Version(3, 6, 3),
         | 
| 163 141 | 
             
                      platform: 'Macintosh',
         | 
| 164 | 
            -
                       | 
| 165 | 
            -
                      platformVersion: '10.5',
         | 
| 142 | 
            +
                      platformVersion: new Version(10, 5),
         | 
| 166 143 | 
             
                      engine: 'Gecko',
         | 
| 167 | 
            -
                       | 
| 168 | 
            -
                      engineVersion: '1.9.2.3',
         | 
| 144 | 
            +
                      engineVersion: new Version(1, 9, 2, 3),
         | 
| 169 145 | 
             
                      documentMode: undefined,
         | 
| 170 146 | 
             
                      browserInfo: {
         | 
| 171 147 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -177,14 +153,11 @@ describe('UserAgentParser', function () { | |
| 177 153 | 
             
                    expect(parse('Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.9.2a1pre) Gecko/20090405 Ubuntu/9.04 (jaunty) Firefox/3.6a1pre'))
         | 
| 178 154 | 
             
                    .toMatchUserAgent({
         | 
| 179 155 | 
             
                      name: 'Firefox',
         | 
| 180 | 
            -
                       | 
| 181 | 
            -
                      version: '3.6a1pre',
         | 
| 156 | 
            +
                      version: new Version(3, 6, null, 'a1pre'),
         | 
| 182 157 | 
             
                      platform: 'Linux',
         | 
| 183 | 
            -
                       | 
| 184 | 
            -
                      platformVersion: 'Unknown',
         | 
| 158 | 
            +
                      platformVersion: new Version(), //'i686'
         | 
| 185 159 | 
             
                      engine: 'Gecko',
         | 
| 186 | 
            -
                       | 
| 187 | 
            -
                      engineVersion: '1.9.2a1pre',
         | 
| 160 | 
            +
                      engineVersion: new Version(1, 9, 2, 'a1pre'),
         | 
| 188 161 | 
             
                      documentMode: undefined,
         | 
| 189 162 | 
             
                      browserInfo: {
         | 
| 190 163 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -198,14 +171,11 @@ describe('UserAgentParser', function () { | |
| 198 171 | 
             
                    expect(parse('Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:2.0b1) Gecko/20100630 Firefox/4.0b1'))
         | 
| 199 172 | 
             
                    .toMatchUserAgent({
         | 
| 200 173 | 
             
                      name: 'Firefox',
         | 
| 201 | 
            -
                       | 
| 202 | 
            -
                      version: '4.0b1',
         | 
| 174 | 
            +
                      version: new Version(4, 0, null, 'b1'),
         | 
| 203 175 | 
             
                      platform: 'Macintosh',
         | 
| 204 | 
            -
                       | 
| 205 | 
            -
                      platformVersion: '10.6',
         | 
| 176 | 
            +
                      platformVersion: new Version(10, 6),
         | 
| 206 177 | 
             
                      engine: 'Gecko',
         | 
| 207 | 
            -
                       | 
| 208 | 
            -
                      engineVersion: '2.0b1',
         | 
| 178 | 
            +
                      engineVersion: new Version(2, 0, 'b1'),
         | 
| 209 179 | 
             
                      documentMode: undefined,
         | 
| 210 180 | 
             
                      browserInfo: {
         | 
| 211 181 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -216,19 +186,16 @@ describe('UserAgentParser', function () { | |
| 216 186 | 
             
                  });
         | 
| 217 187 |  | 
| 218 188 | 
             
                  it('should detect Firefox on Android', function () {
         | 
| 219 | 
            -
                    // This useragent has been slightly doctored with  | 
| 189 | 
            +
                    // This useragent has been slightly doctored with versions to ensure the right
         | 
| 220 190 | 
             
                    // info is coming from the right places.
         | 
| 221 191 | 
             
                    expect(parse('Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/15.0 Firefox/14.0'))
         | 
| 222 192 | 
             
                    .toMatchUserAgent({
         | 
| 223 193 | 
             
                      name: 'Firefox',
         | 
| 224 | 
            -
                       | 
| 225 | 
            -
                      version: '14.0',
         | 
| 194 | 
            +
                      version: new Version(14, 0),
         | 
| 226 195 | 
             
                      platform: 'Android',
         | 
| 227 | 
            -
                       | 
| 228 | 
            -
                      platformVersion: 'Unknown',
         | 
| 196 | 
            +
                      platformVersion: new Version(),
         | 
| 229 197 | 
             
                      engine: 'Gecko',
         | 
| 230 | 
            -
                       | 
| 231 | 
            -
                      engineVersion: '13.0',
         | 
| 198 | 
            +
                      engineVersion: new Version(13, 0),
         | 
| 232 199 | 
             
                      documentMode: undefined,
         | 
| 233 200 | 
             
                      browserInfo: {
         | 
| 234 201 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -242,14 +209,11 @@ describe('UserAgentParser', function () { | |
| 242 209 | 
             
                    expect(parse('Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081202 Firefox (Debian-2.0.0.19-0etch1)'))
         | 
| 243 210 | 
             
                    .toMatchUserAgent({
         | 
| 244 211 | 
             
                      name: 'Firefox',
         | 
| 245 | 
            -
                       | 
| 246 | 
            -
                      version: '',
         | 
| 212 | 
            +
                      version: new Version(),
         | 
| 247 213 | 
             
                      platform: 'Linux',
         | 
| 248 | 
            -
                       | 
| 249 | 
            -
                      platformVersion: 'Unknown',
         | 
| 214 | 
            +
                      platformVersion: new Version(), //'i686'
         | 
| 250 215 | 
             
                      engine: 'Gecko',
         | 
| 251 | 
            -
                       | 
| 252 | 
            -
                      engineVersion: '1.8.1.19',
         | 
| 216 | 
            +
                      engineVersion: new Version(1, 8, 1, 19),
         | 
| 253 217 | 
             
                      documentMode: undefined,
         | 
| 254 218 | 
             
                      browserInfo: {
         | 
| 255 219 | 
             
                        hasWebFontSupport: false,
         | 
| @@ -265,14 +229,11 @@ describe('UserAgentParser', function () { | |
| 265 229 | 
             
                    expect(parse('Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.9 Safari/533.2'))
         | 
| 266 230 | 
             
                    .toMatchUserAgent({
         | 
| 267 231 | 
             
                      name: 'Chrome',
         | 
| 268 | 
            -
                       | 
| 269 | 
            -
                      version: '5.0.342.9',
         | 
| 232 | 
            +
                      version: new Version(5, 0, 342, 9),
         | 
| 270 233 | 
             
                      platform: 'Macintosh',
         | 
| 271 | 
            -
                       | 
| 272 | 
            -
                      platformVersion: '10_5_8',
         | 
| 234 | 
            +
                      platformVersion: new Version(10, 5, 8),
         | 
| 273 235 | 
             
                      engine: 'AppleWebKit',
         | 
| 274 | 
            -
                       | 
| 275 | 
            -
                      engineVersion: '533.2',
         | 
| 236 | 
            +
                      engineVersion: new Version(533, 2),
         | 
| 276 237 | 
             
                      documentMode: undefined,
         | 
| 277 238 | 
             
                      browserInfo: {
         | 
| 278 239 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -286,14 +247,11 @@ describe('UserAgentParser', function () { | |
| 286 247 | 
             
                    expect(parse('Mozilla/5.0 (X11; CrOS i686 1660.57.0) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.46 Safari/535.19'))
         | 
| 287 248 | 
             
                    .toMatchUserAgent({
         | 
| 288 249 | 
             
                      name: 'Chrome',
         | 
| 289 | 
            -
                       | 
| 290 | 
            -
                      version: '18.0.1025.46',
         | 
| 250 | 
            +
                      version: new Version(18, 0, 1025, 46),
         | 
| 291 251 | 
             
                      platform: 'CrOS',
         | 
| 292 | 
            -
                       | 
| 293 | 
            -
                      platformVersion: '1660.57.0',
         | 
| 252 | 
            +
                      platformVersion: new Version(1660, 57, 0),
         | 
| 294 253 | 
             
                      engine: 'AppleWebKit',
         | 
| 295 | 
            -
                       | 
| 296 | 
            -
                      engineVersion: '535.19',
         | 
| 254 | 
            +
                      engineVersion: new Version(535, 19),
         | 
| 297 255 | 
             
                      documentMode: undefined,
         | 
| 298 256 | 
             
                      browserInfo: {
         | 
| 299 257 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -307,14 +265,11 @@ describe('UserAgentParser', function () { | |
| 307 265 | 
             
                    expect(parse('Mozilla/5.0 (CrKey armv71 1.6.16664) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.0 Safari/537.36'))
         | 
| 308 266 | 
             
                    .toMatchUserAgent({
         | 
| 309 267 | 
             
                      name: 'Chrome',
         | 
| 310 | 
            -
                       | 
| 311 | 
            -
                      version: '31.0.1650.0',
         | 
| 268 | 
            +
                      version: new Version(31, 0, 1650, 0),
         | 
| 312 269 | 
             
                      platform: 'CrKey',
         | 
| 313 | 
            -
                       | 
| 314 | 
            -
                      platformVersion: '1.6.16664',
         | 
| 270 | 
            +
                      platformVersion: new Version(1, 6, 16664),
         | 
| 315 271 | 
             
                      engine: 'AppleWebKit',
         | 
| 316 | 
            -
                       | 
| 317 | 
            -
                      engineVersion: '537.36',
         | 
| 272 | 
            +
                      engineVersion: new Version(537, 36),
         | 
| 318 273 | 
             
                      documentMode: undefined,
         | 
| 319 274 | 
             
                      browserInfo: {
         | 
| 320 275 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -328,14 +283,11 @@ describe('UserAgentParser', function () { | |
| 328 283 | 
             
                    expect(parse('Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; Nexus S Build/IML74K) AppleWebKit/535.7 (KHTML, like Gecko) CrMo/16.0.912.75 Mobile Safari/535.7'))
         | 
| 329 284 | 
             
                    .toMatchUserAgent({
         | 
| 330 285 | 
             
                      name: 'Chrome',
         | 
| 331 | 
            -
                       | 
| 332 | 
            -
                      version: '16.0.912.75',
         | 
| 286 | 
            +
                      version: new Version(16, 0, 912, 75),
         | 
| 333 287 | 
             
                      platform: 'Android',
         | 
| 334 | 
            -
                       | 
| 335 | 
            -
                      platformVersion: '4.0.3',
         | 
| 288 | 
            +
                      platformVersion: new Version(4, 0, 3),
         | 
| 336 289 | 
             
                      engine: 'AppleWebKit',
         | 
| 337 | 
            -
                       | 
| 338 | 
            -
                      engineVersion: '535.7',
         | 
| 290 | 
            +
                      engineVersion: new Version(535, 7),
         | 
| 339 291 | 
             
                      documentMode: undefined,
         | 
| 340 292 | 
             
                      browserInfo: {
         | 
| 341 293 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -347,14 +299,11 @@ describe('UserAgentParser', function () { | |
| 347 299 | 
             
                    expect(parse('Mozilla/5.0 (Linux; Android 4.2.2; SGH-M919 Build/JDQ39) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22'))
         | 
| 348 300 | 
             
                    .toMatchUserAgent({
         | 
| 349 301 | 
             
                      name: 'Chrome',
         | 
| 350 | 
            -
                       | 
| 351 | 
            -
                      version: '25.0.1364.169',
         | 
| 302 | 
            +
                      version: new Version(25, 0, 1364, 169),
         | 
| 352 303 | 
             
                      platform: 'Android',
         | 
| 353 | 
            -
                       | 
| 354 | 
            -
                      platformVersion: '4.2.2',
         | 
| 304 | 
            +
                      platformVersion: new Version(4, 2, 2),
         | 
| 355 305 | 
             
                      engine: 'AppleWebKit',
         | 
| 356 | 
            -
                       | 
| 357 | 
            -
                      engineVersion: '537.22',
         | 
| 306 | 
            +
                      engineVersion: new Version(537, 22),
         | 
| 358 307 | 
             
                      documentMode: undefined,
         | 
| 359 308 | 
             
                      browserInfo: {
         | 
| 360 309 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -368,14 +317,11 @@ describe('UserAgentParser', function () { | |
| 368 317 | 
             
                    expect(parse('Mozilla/5.0 (iPad; U; CPU OS 5_1_1 like Mac OS X; en-us) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3'))
         | 
| 369 318 | 
             
                    .toMatchUserAgent({
         | 
| 370 319 | 
             
                      name: 'Chrome',
         | 
| 371 | 
            -
                       | 
| 372 | 
            -
                      version: '19.0.1084.60',
         | 
| 320 | 
            +
                      version: new Version(19, 0, 1084, 60),
         | 
| 373 321 | 
             
                      platform: 'iPad',
         | 
| 374 | 
            -
                       | 
| 375 | 
            -
                      platformVersion: '5_1_1',
         | 
| 322 | 
            +
                      platformVersion: new Version(5, 1, 1),
         | 
| 376 323 | 
             
                      engine: 'AppleWebKit',
         | 
| 377 | 
            -
                       | 
| 378 | 
            -
                      engineVersion: '534.46.0',
         | 
| 324 | 
            +
                      engineVersion: new Version(534, 46, 0),
         | 
| 379 325 | 
             
                      documentMode: undefined,
         | 
| 380 326 | 
             
                      browserInfo: {
         | 
| 381 327 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -389,14 +335,11 @@ describe('UserAgentParser', function () { | |
| 389 335 | 
             
                    expect(parse('Mozilla/5.0 (iPod; U; CPU iPhone OS 5_1_1 like Mac OS X; en-us) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3'))
         | 
| 390 336 | 
             
                    .toMatchUserAgent({
         | 
| 391 337 | 
             
                      name: 'Chrome',
         | 
| 392 | 
            -
                       | 
| 393 | 
            -
                      version: '19.0.1084.60',
         | 
| 338 | 
            +
                      version: new Version(19, 0, 1084, 60),
         | 
| 394 339 | 
             
                      platform: 'iPod',
         | 
| 395 | 
            -
                       | 
| 396 | 
            -
                      platformVersion: '5_1_1',
         | 
| 340 | 
            +
                      platformVersion: new Version(5, 1, 1),
         | 
| 397 341 | 
             
                      engine: 'AppleWebKit',
         | 
| 398 | 
            -
                       | 
| 399 | 
            -
                      engineVersion: '534.46.0',
         | 
| 342 | 
            +
                      engineVersion: new Version(534, 46, 0),
         | 
| 400 343 | 
             
                      documentMode: undefined,
         | 
| 401 344 | 
             
                      browserInfo: {
         | 
| 402 345 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -412,14 +355,11 @@ describe('UserAgentParser', function () { | |
| 412 355 | 
             
                    expect(parse('Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10'))
         | 
| 413 356 | 
             
                    .toMatchUserAgent({
         | 
| 414 357 | 
             
                      name: 'Safari',
         | 
| 415 | 
            -
                       | 
| 416 | 
            -
                      version: '4.0.4',
         | 
| 358 | 
            +
                      version: new Version(4, 0, 4),
         | 
| 417 359 | 
             
                      platform: 'Macintosh',
         | 
| 418 | 
            -
                       | 
| 419 | 
            -
                      platformVersion: '10_5_8',
         | 
| 360 | 
            +
                      platformVersion: new Version(10, 5, 8),
         | 
| 420 361 | 
             
                      engine: 'AppleWebKit',
         | 
| 421 | 
            -
                       | 
| 422 | 
            -
                      engineVersion: '531.21.8',
         | 
| 362 | 
            +
                      engineVersion: new Version(531, 21, 8),
         | 
| 423 363 | 
             
                      documentMode: undefined,
         | 
| 424 364 | 
             
                      browserInfo: {
         | 
| 425 365 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -431,14 +371,11 @@ describe('UserAgentParser', function () { | |
| 431 371 | 
             
                    expect(parse('Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; tr) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2'))
         | 
| 432 372 | 
             
                    .toMatchUserAgent({
         | 
| 433 373 | 
             
                      name: 'Safari',
         | 
| 434 | 
            -
                       | 
| 435 | 
            -
                      version: '4.0dp1',
         | 
| 374 | 
            +
                      version: new Version(4, 0, null, 'dp1'),
         | 
| 436 375 | 
             
                      platform: 'Macintosh',
         | 
| 437 | 
            -
                       | 
| 438 | 
            -
                      platformVersion: '10_4_11',
         | 
| 376 | 
            +
                      platformVersion: new Version(10, 4, 11),
         | 
| 439 377 | 
             
                      engine: 'AppleWebKit',
         | 
| 440 | 
            -
                       | 
| 441 | 
            -
                      engineVersion: '528.4+',
         | 
| 378 | 
            +
                      engineVersion: new Version(528, 4),
         | 
| 442 379 | 
             
                      documentMode: undefined,
         | 
| 443 380 | 
             
                      browserInfo: {
         | 
| 444 381 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -452,14 +389,11 @@ describe('UserAgentParser', function () { | |
| 452 389 | 
             
                    expect(parse('Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7D11 Safari/528.16'))
         | 
| 453 390 | 
             
                    .toMatchUserAgent({
         | 
| 454 391 | 
             
                      name: 'Safari',
         | 
| 455 | 
            -
                       | 
| 456 | 
            -
                      version: '4.0',
         | 
| 392 | 
            +
                      version: new Version(4, 0),
         | 
| 457 393 | 
             
                      platform: 'iPhone',
         | 
| 458 | 
            -
                       | 
| 459 | 
            -
                      platformVersion: '3_1_2',
         | 
| 394 | 
            +
                      platformVersion: new Version(3, 1, 2),
         | 
| 460 395 | 
             
                      engine: 'AppleWebKit',
         | 
| 461 | 
            -
                       | 
| 462 | 
            -
                      engineVersion: '528.18',
         | 
| 396 | 
            +
                      engineVersion: new Version(528, 18),
         | 
| 463 397 | 
             
                      documentMode: undefined,
         | 
| 464 398 | 
             
                      browserInfo: {
         | 
| 465 399 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -473,14 +407,11 @@ describe('UserAgentParser', function () { | |
| 473 407 | 
             
                    expect(parse('Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10'))
         | 
| 474 408 | 
             
                    .toMatchUserAgent({
         | 
| 475 409 | 
             
                      name: 'Safari',
         | 
| 476 | 
            -
                       | 
| 477 | 
            -
                      version: '4.0.4',
         | 
| 410 | 
            +
                      version: new Version(4, 0, 4),
         | 
| 478 411 | 
             
                      platform: 'iPad',
         | 
| 479 | 
            -
                       | 
| 480 | 
            -
                      platformVersion: '3_2',
         | 
| 412 | 
            +
                      platformVersion: new Version(3, 2),
         | 
| 481 413 | 
             
                      engine: 'AppleWebKit',
         | 
| 482 | 
            -
                       | 
| 483 | 
            -
                      engineVersion: '531.21.10',
         | 
| 414 | 
            +
                      engineVersion: new Version(531, 21, 10),
         | 
| 484 415 | 
             
                      documentMode: undefined,
         | 
| 485 416 | 
             
                      browserInfo: {
         | 
| 486 417 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -492,14 +423,11 @@ describe('UserAgentParser', function () { | |
| 492 423 | 
             
                    expect(parse('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/7B360 Safari/531.21.10"'))
         | 
| 493 424 | 
             
                    .toMatchUserAgent({
         | 
| 494 425 | 
             
                      name: 'Safari',
         | 
| 495 | 
            -
                       | 
| 496 | 
            -
                      version: '4.0.4',
         | 
| 426 | 
            +
                      version: new Version(4, 0, 4),
         | 
| 497 427 | 
             
                      platform: 'iPad',
         | 
| 498 | 
            -
                       | 
| 499 | 
            -
                      platformVersion: '3_2',
         | 
| 428 | 
            +
                      platformVersion: new Version(3, 2),
         | 
| 500 429 | 
             
                      engine: 'AppleWebKit',
         | 
| 501 | 
            -
                       | 
| 502 | 
            -
                      engineVersion: '531.21.10',
         | 
| 430 | 
            +
                      engineVersion: new Version(531, 21, 10),
         | 
| 503 431 | 
             
                      documentMode: undefined,
         | 
| 504 432 | 
             
                      browserInfo: {
         | 
| 505 433 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -511,14 +439,11 @@ describe('UserAgentParser', function () { | |
| 511 439 | 
             
                    expect(parse('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/7B334b Safari/531.21.10'))
         | 
| 512 440 | 
             
                    .toMatchUserAgent({
         | 
| 513 441 | 
             
                      name: 'Safari',
         | 
| 514 | 
            -
                       | 
| 515 | 
            -
                      version: '4.0.4',
         | 
| 442 | 
            +
                      version: new Version(4, 0, 4),
         | 
| 516 443 | 
             
                      platform: 'iPad',
         | 
| 517 | 
            -
                       | 
| 518 | 
            -
                      platformVersion: '3_2',
         | 
| 444 | 
            +
                      platformVersion: new Version(3, 2),
         | 
| 519 445 | 
             
                      engine: 'AppleWebKit',
         | 
| 520 | 
            -
                       | 
| 521 | 
            -
                      engineVersion: '531.21.10',
         | 
| 446 | 
            +
                      engineVersion: new Version(531, 21, 10),
         | 
| 522 447 | 
             
                      documentMode: undefined,
         | 
| 523 448 | 
             
                      browserInfo: {
         | 
| 524 449 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -532,14 +457,11 @@ describe('UserAgentParser', function () { | |
| 532 457 | 
             
                    expect(parse('Mozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Mobile/5H11a'))
         | 
| 533 458 | 
             
                    .toMatchUserAgent({
         | 
| 534 459 | 
             
                      name: 'Unknown',
         | 
| 535 | 
            -
                       | 
| 536 | 
            -
                      version: 'Unknown',
         | 
| 460 | 
            +
                      version: new Version(),
         | 
| 537 461 | 
             
                      platform: 'iPod',
         | 
| 538 | 
            -
                       | 
| 539 | 
            -
                      platformVersion: '2_2_1',
         | 
| 462 | 
            +
                      platformVersion: new Version(2, 2, 1),
         | 
| 540 463 | 
             
                      engine: 'AppleWebKit',
         | 
| 541 | 
            -
                       | 
| 542 | 
            -
                      engineVersion: '525.18.1',
         | 
| 464 | 
            +
                      engineVersion: new Version(525, 18, 1),
         | 
| 543 465 | 
             
                      documentMode: undefined,
         | 
| 544 466 | 
             
                      browserInfo: {
         | 
| 545 467 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -551,14 +473,11 @@ describe('UserAgentParser', function () { | |
| 551 473 | 
             
                    expect(parse('Mozilla/5.0 (iPod; U; CPU iPhone OS 3_1 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7C144 Safari/528.16'))
         | 
| 552 474 | 
             
                    .toMatchUserAgent({
         | 
| 553 475 | 
             
                      name: 'Safari',
         | 
| 554 | 
            -
                       | 
| 555 | 
            -
                      version: '4.0',
         | 
| 476 | 
            +
                      version: new Version(4, 0),
         | 
| 556 477 | 
             
                      platform: 'iPod',
         | 
| 557 | 
            -
                       | 
| 558 | 
            -
                      platformVersion: '3_1',
         | 
| 478 | 
            +
                      platformVersion: new Version(3, 1),
         | 
| 559 479 | 
             
                      engine: 'AppleWebKit',
         | 
| 560 | 
            -
                       | 
| 561 | 
            -
                      engineVersion: '528.18',
         | 
| 480 | 
            +
                      engineVersion: new Version(528, 18),
         | 
| 562 481 | 
             
                      documentMode: undefined,
         | 
| 563 482 | 
             
                      browserInfo: {
         | 
| 564 483 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -574,14 +493,11 @@ describe('UserAgentParser', function () { | |
| 574 493 | 
             
                    expect(parse('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)'))
         | 
| 575 494 | 
             
                    .toMatchUserAgent({
         | 
| 576 495 | 
             
                      name: 'MSIE',
         | 
| 577 | 
            -
                       | 
| 578 | 
            -
                      version: '7.0',
         | 
| 496 | 
            +
                      version: new Version(7, 0),
         | 
| 579 497 | 
             
                      platform: 'Windows',
         | 
| 580 | 
            -
                       | 
| 581 | 
            -
                      platformVersion: '5.1',
         | 
| 498 | 
            +
                      platformVersion: new Version(5, 1),
         | 
| 582 499 | 
             
                      engine: 'Unknown',
         | 
| 583 | 
            -
                       | 
| 584 | 
            -
                      engineVersion: 'Unknown',
         | 
| 500 | 
            +
                      engineVersion: new Version(),
         | 
| 585 501 | 
             
                      documentMode: undefined,
         | 
| 586 502 | 
             
                      browserInfo: {
         | 
| 587 503 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -593,14 +509,11 @@ describe('UserAgentParser', function () { | |
| 593 509 | 
             
                    expect(parse('Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)'))
         | 
| 594 510 | 
             
                    .toMatchUserAgent({
         | 
| 595 511 | 
             
                      name: 'MSIE',
         | 
| 596 | 
            -
                       | 
| 597 | 
            -
                      version: '7.0b',
         | 
| 512 | 
            +
                      version: new Version(7, 0, null, 'b'),
         | 
| 598 513 | 
             
                      platform: 'Windows',
         | 
| 599 | 
            -
                       | 
| 600 | 
            -
                      platformVersion: '5.1',
         | 
| 514 | 
            +
                      platformVersion: new Version(5, 1),
         | 
| 601 515 | 
             
                      engine: 'Unknown',
         | 
| 602 | 
            -
                       | 
| 603 | 
            -
                      engineVersion: 'Unknown',
         | 
| 516 | 
            +
                      engineVersion: new Version(),
         | 
| 604 517 | 
             
                      documentMode: undefined,
         | 
| 605 518 | 
             
                      browserInfo: {
         | 
| 606 519 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -614,14 +527,11 @@ describe('UserAgentParser', function () { | |
| 614 527 | 
             
                    expect(parse('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'))
         | 
| 615 528 | 
             
                    .toMatchUserAgent({
         | 
| 616 529 | 
             
                      name: 'MSIE',
         | 
| 617 | 
            -
                       | 
| 618 | 
            -
                      version: '7.0',
         | 
| 530 | 
            +
                      version: new Version(7, 0),
         | 
| 619 531 | 
             
                      platform: 'Windows',
         | 
| 620 | 
            -
                       | 
| 621 | 
            -
                      platformVersion: '5.1',
         | 
| 532 | 
            +
                      platformVersion: new Version(5, 1),
         | 
| 622 533 | 
             
                      engine: 'Unknown',
         | 
| 623 | 
            -
                       | 
| 624 | 
            -
                      engineVersion: 'Unknown',
         | 
| 534 | 
            +
                      engineVersion: new Version(),
         | 
| 625 535 | 
             
                      documentMode: undefined,
         | 
| 626 536 | 
             
                      browserInfo: {
         | 
| 627 537 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -635,14 +545,11 @@ describe('UserAgentParser', function () { | |
| 635 545 | 
             
                    expect(parse('Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; ARM; Touch; IEMobile/10.0; <Manufacturer>; <Device>; <Operator>)'))
         | 
| 636 546 | 
             
                    .toMatchUserAgent({
         | 
| 637 547 | 
             
                      name: 'MSIE',
         | 
| 638 | 
            -
                       | 
| 639 | 
            -
                      version: '10.0',
         | 
| 548 | 
            +
                      version: new Version(10, 0),
         | 
| 640 549 | 
             
                      platform: 'Windows Phone',
         | 
| 641 | 
            -
                       | 
| 642 | 
            -
                      platformVersion: '8.0',
         | 
| 550 | 
            +
                      platformVersion: new Version(8, 0),
         | 
| 643 551 | 
             
                      engine: 'Trident',
         | 
| 644 | 
            -
                       | 
| 645 | 
            -
                      engineVersion: '6.0',
         | 
| 552 | 
            +
                      engineVersion: new Version(6, 0),
         | 
| 646 553 | 
             
                      documentMode: undefined,
         | 
| 647 554 | 
             
                      browserInfo: {
         | 
| 648 555 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -654,14 +561,11 @@ describe('UserAgentParser', function () { | |
| 654 561 | 
             
                    expect(parse('Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; id404) like Gecko'))
         | 
| 655 562 | 
             
                    .toMatchUserAgent({
         | 
| 656 563 | 
             
                      name: 'MSIE',
         | 
| 657 | 
            -
                       | 
| 658 | 
            -
                      version: '11.0',
         | 
| 564 | 
            +
                      version: new Version(11, 0),
         | 
| 659 565 | 
             
                      platform: 'Windows Phone',
         | 
| 660 | 
            -
                       | 
| 661 | 
            -
                      platformVersion: '8.1',
         | 
| 566 | 
            +
                      platformVersion: new Version(8, 1),
         | 
| 662 567 | 
             
                      engine: 'Trident',
         | 
| 663 | 
            -
                       | 
| 664 | 
            -
                      engineVersion: '7.0',
         | 
| 568 | 
            +
                      engineVersion: new Version(7, 0),
         | 
| 665 569 | 
             
                      documentMode: undefined,
         | 
| 666 570 | 
             
                      browserInfo: {
         | 
| 667 571 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -675,14 +579,11 @@ describe('UserAgentParser', function () { | |
| 675 579 | 
             
                    expect(parse('Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917)'))
         | 
| 676 580 | 
             
                    .toMatchUserAgent({
         | 
| 677 581 | 
             
                      name: 'MSIE',
         | 
| 678 | 
            -
                       | 
| 679 | 
            -
                      version: '9.0',
         | 
| 582 | 
            +
                      version: new Version(9, 0),
         | 
| 680 583 | 
             
                      platform: 'Windows Phone',
         | 
| 681 | 
            -
                       | 
| 682 | 
            -
                      platformVersion: '7.5',
         | 
| 584 | 
            +
                      platformVersion: new Version(7, 5),
         | 
| 683 585 | 
             
                      engine: 'Trident',
         | 
| 684 | 
            -
                       | 
| 685 | 
            -
                      engineVersion: '5.0',
         | 
| 586 | 
            +
                      engineVersion: new Version(5, 0),
         | 
| 686 587 | 
             
                      documentMode: undefined,
         | 
| 687 588 | 
             
                      browserInfo: {
         | 
| 688 589 | 
             
                        hasWebFontSupport: false,
         | 
| @@ -696,14 +597,11 @@ describe('UserAgentParser', function () { | |
| 696 597 | 
             
                    expect(parse('Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)'))
         | 
| 697 598 | 
             
                    .toMatchUserAgent({
         | 
| 698 599 | 
             
                      name: 'MSIE',
         | 
| 699 | 
            -
                       | 
| 700 | 
            -
                      version: '5.23',
         | 
| 600 | 
            +
                      version: new Version(5, 23),
         | 
| 701 601 | 
             
                      platform: 'Macintosh',
         | 
| 702 | 
            -
                       | 
| 703 | 
            -
                      platformVersion: 'Unknown',
         | 
| 602 | 
            +
                      platformVersion: new Version(),
         | 
| 704 603 | 
             
                      engine: 'Unknown',
         | 
| 705 | 
            -
                       | 
| 706 | 
            -
                      engineVersion: 'Unknown',
         | 
| 604 | 
            +
                      engineVersion: new Version(),
         | 
| 707 605 | 
             
                      documentMode: undefined,
         | 
| 708 606 | 
             
                      browserInfo: {
         | 
| 709 607 | 
             
                        hasWebFontSupport: false,
         | 
| @@ -717,14 +615,11 @@ describe('UserAgentParser', function () { | |
| 717 615 | 
             
                    expect(parse('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; InfoPath.2)', { documentMode: 8 }))
         | 
| 718 616 | 
             
                    .toMatchUserAgent({
         | 
| 719 617 | 
             
                      name: 'MSIE',
         | 
| 720 | 
            -
                       | 
| 721 | 
            -
                      version: '8.0',
         | 
| 618 | 
            +
                      version: new Version(8, 0),
         | 
| 722 619 | 
             
                      platform: 'Windows',
         | 
| 723 | 
            -
                       | 
| 724 | 
            -
                      platformVersion: '6.1',
         | 
| 620 | 
            +
                      platformVersion: new Version(6, 1),
         | 
| 725 621 | 
             
                      engine: 'Trident',
         | 
| 726 | 
            -
                       | 
| 727 | 
            -
                      engineVersion: '4.0',
         | 
| 622 | 
            +
                      engineVersion: new Version(4, 0),
         | 
| 728 623 | 
             
                      documentMode: 8,
         | 
| 729 624 | 
             
                      browserInfo: {
         | 
| 730 625 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -738,14 +633,11 @@ describe('UserAgentParser', function () { | |
| 738 633 | 
             
                    expect(parse('Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko', { documentMode: 11 }))
         | 
| 739 634 | 
             
                    .toMatchUserAgent({
         | 
| 740 635 | 
             
                      name: 'MSIE',
         | 
| 741 | 
            -
                       | 
| 742 | 
            -
                      version: '11.0',
         | 
| 636 | 
            +
                      version: new Version(11, 0),
         | 
| 743 637 | 
             
                      platform: 'Windows',
         | 
| 744 | 
            -
                       | 
| 745 | 
            -
                      platformVersion: '6.3',
         | 
| 638 | 
            +
                      platformVersion: new Version(6, 3),
         | 
| 746 639 | 
             
                      engine: 'Trident',
         | 
| 747 | 
            -
                       | 
| 748 | 
            -
                      engineVersion: '7.0',
         | 
| 640 | 
            +
                      engineVersion: new Version(7, 0),
         | 
| 749 641 | 
             
                      documentMode: 11,
         | 
| 750 642 | 
             
                      browserInfo: {
         | 
| 751 643 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -761,14 +653,11 @@ describe('UserAgentParser', function () { | |
| 761 653 | 
             
                    expect(parse('Mozilla/5.0 (Linux; U; Android 2.2.1; en-ca; LG-P505R Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'))
         | 
| 762 654 | 
             
                    .toMatchUserAgent({
         | 
| 763 655 | 
             
                      name: 'BuiltinBrowser',
         | 
| 764 | 
            -
                       | 
| 765 | 
            -
                      version: 'Unknown',
         | 
| 656 | 
            +
                      version: new Version(),
         | 
| 766 657 | 
             
                      platform: 'Android',
         | 
| 767 | 
            -
                       | 
| 768 | 
            -
                      platformVersion: '2.2.1',
         | 
| 658 | 
            +
                      platformVersion: new Version(2, 2, 1),
         | 
| 769 659 | 
             
                      engine: 'AppleWebKit',
         | 
| 770 | 
            -
                       | 
| 771 | 
            -
                      engineVersion: '533.1',
         | 
| 660 | 
            +
                      engineVersion: new Version(533, 1),
         | 
| 772 661 | 
             
                      documentMode: undefined,
         | 
| 773 662 | 
             
                      browserInfo: {
         | 
| 774 663 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -782,14 +671,11 @@ describe('UserAgentParser', function () { | |
| 782 671 | 
             
                    expect(parse('Mozilla/5.0 (Linux; U; Android 2.1-update1; en-us; Nexus One Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17'))
         | 
| 783 672 | 
             
                    .toMatchUserAgent({
         | 
| 784 673 | 
             
                      name: 'BuiltinBrowser',
         | 
| 785 | 
            -
                       | 
| 786 | 
            -
                      version: 'Unknown',
         | 
| 674 | 
            +
                      version: new Version(),
         | 
| 787 675 | 
             
                      platform: 'Android',
         | 
| 788 | 
            -
                       | 
| 789 | 
            -
                      platformVersion: '2.1-update1',
         | 
| 676 | 
            +
                      platformVersion: new Version(2, 1, null, 'update1'),
         | 
| 790 677 | 
             
                      engine: 'AppleWebKit',
         | 
| 791 | 
            -
                       | 
| 792 | 
            -
                      engineVersion: '530.17',
         | 
| 678 | 
            +
                      engineVersion: new Version(530, 17),
         | 
| 793 679 | 
             
                      documentMode: undefined,
         | 
| 794 680 | 
             
                      browserInfo: {
         | 
| 795 681 | 
             
                        hasWebFontSupport: false,
         | 
| @@ -803,14 +689,11 @@ describe('UserAgentParser', function () { | |
| 803 689 | 
             
                    expect(parse('Mozilla/5.0 (Linux; Android 4.2.2; sl-si; SAMSUNG GT-I9505 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19'))
         | 
| 804 690 | 
             
                    .toMatchUserAgent({
         | 
| 805 691 | 
             
                      name: 'Chrome',
         | 
| 806 | 
            -
                       | 
| 807 | 
            -
                      version: '18.0.1025.308',
         | 
| 692 | 
            +
                      version: new Version(18, 0, 1025, 308),
         | 
| 808 693 | 
             
                      platform: 'Android',
         | 
| 809 | 
            -
                       | 
| 810 | 
            -
                      platformVersion: '4.2.2',
         | 
| 694 | 
            +
                      platformVersion: new Version(4, 2, 2),
         | 
| 811 695 | 
             
                      engine: 'AppleWebKit',
         | 
| 812 | 
            -
                       | 
| 813 | 
            -
                      engineVersion: '535.19',
         | 
| 696 | 
            +
                      engineVersion: new Version(535, 19),
         | 
| 814 697 | 
             
                      documentMode: undefined,
         | 
| 815 698 | 
             
                      browserInfo: {
         | 
| 816 699 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -822,14 +705,11 @@ describe('UserAgentParser', function () { | |
| 822 705 | 
             
                    expect(parse('Mozilla/5.0 (Linux; Android 4.2.2; en-us; SAMSUNG SGH-M919 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19'))
         | 
| 823 706 | 
             
                    .toMatchUserAgent({
         | 
| 824 707 | 
             
                      name: 'Chrome',
         | 
| 825 | 
            -
                       | 
| 826 | 
            -
                      version: '18.0.1025.308',
         | 
| 708 | 
            +
                      version: new Version(18, 0, 1025, 308),
         | 
| 827 709 | 
             
                      platform: 'Android',
         | 
| 828 | 
            -
                       | 
| 829 | 
            -
                      platformVersion: '4.2.2',
         | 
| 710 | 
            +
                      platformVersion: new Version(4, 2, 2),
         | 
| 830 711 | 
             
                      engine: 'AppleWebKit',
         | 
| 831 | 
            -
                       | 
| 832 | 
            -
                      engineVersion: '535.19',
         | 
| 712 | 
            +
                      engineVersion: new Version(535, 19),
         | 
| 833 713 | 
             
                      documentMode: undefined,
         | 
| 834 714 | 
             
                      browserInfo: {
         | 
| 835 715 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -843,14 +723,11 @@ describe('UserAgentParser', function () { | |
| 843 723 | 
             
                    expect(parse('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24'))
         | 
| 844 724 | 
             
                    .toMatchUserAgent({
         | 
| 845 725 | 
             
                      name: 'Chrome',
         | 
| 846 | 
            -
                       | 
| 847 | 
            -
                      version: '11.0.696.34',
         | 
| 726 | 
            +
                      version: new Version(11, 0, 696, 34),
         | 
| 848 727 | 
             
                      platform: 'Linux',
         | 
| 849 | 
            -
                       | 
| 850 | 
            -
                      platformVersion: 'Unknown',
         | 
| 728 | 
            +
                      platformVersion: new Version(),
         | 
| 851 729 | 
             
                      engine: 'AppleWebKit',
         | 
| 852 | 
            -
                       | 
| 853 | 
            -
                      engineVersion: '534.24',
         | 
| 730 | 
            +
                      engineVersion: new Version(534, 24),
         | 
| 854 731 | 
             
                      documentMode: undefined,
         | 
| 855 732 | 
             
                      browserInfo: {
         | 
| 856 733 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -864,14 +741,11 @@ describe('UserAgentParser', function () { | |
| 864 741 | 
             
                    expect(parse('Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; sdk Build/MASTER) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30'))
         | 
| 865 742 | 
             
                    .toMatchUserAgent({
         | 
| 866 743 | 
             
                      name: 'BuiltinBrowser',
         | 
| 867 | 
            -
                       | 
| 868 | 
            -
                      version: 'Unknown',
         | 
| 744 | 
            +
                      version: new Version(),
         | 
| 869 745 | 
             
                      platform: 'Android',
         | 
| 870 | 
            -
                       | 
| 871 | 
            -
                      platformVersion: '4.1.2',
         | 
| 746 | 
            +
                      platformVersion: new Version(4, 1, 2),
         | 
| 872 747 | 
             
                      engine: 'AppleWebKit',
         | 
| 873 | 
            -
                       | 
| 874 | 
            -
                      engineVersion: '534.30',
         | 
| 748 | 
            +
                      engineVersion: new Version(534, 30),
         | 
| 875 749 | 
             
                      documentMode: undefined,
         | 
| 876 750 | 
             
                      browserInfo: {
         | 
| 877 751 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -885,14 +759,11 @@ describe('UserAgentParser', function () { | |
| 885 759 | 
             
                    expect(parse('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24'))
         | 
| 886 760 | 
             
                    .toMatchUserAgent({
         | 
| 887 761 | 
             
                      name: 'Chrome',
         | 
| 888 | 
            -
                       | 
| 889 | 
            -
                      version: '11.0.696.34',
         | 
| 762 | 
            +
                      version: new Version(11, 0, 696, 34),
         | 
| 890 763 | 
             
                      platform: 'Linux',
         | 
| 891 | 
            -
                       | 
| 892 | 
            -
                      platformVersion: 'Unknown',
         | 
| 764 | 
            +
                      platformVersion: new Version(),
         | 
| 893 765 | 
             
                      engine: 'AppleWebKit',
         | 
| 894 | 
            -
                       | 
| 895 | 
            -
                      engineVersion: '534.24',
         | 
| 766 | 
            +
                      engineVersion: new Version(534, 24),
         | 
| 896 767 | 
             
                      documentMode: undefined,
         | 
| 897 768 | 
             
                      browserInfo: {
         | 
| 898 769 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -906,14 +777,11 @@ describe('UserAgentParser', function () { | |
| 906 777 | 
             
                    expect(parse('Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; Nexus S Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'))
         | 
| 907 778 | 
             
                    .toMatchUserAgent({
         | 
| 908 779 | 
             
                      name: 'BuiltinBrowser',
         | 
| 909 | 
            -
                       | 
| 910 | 
            -
                      version: 'Unknown',
         | 
| 780 | 
            +
                      version: new Version(),
         | 
| 911 781 | 
             
                      platform: 'Android',
         | 
| 912 | 
            -
                       | 
| 913 | 
            -
                      platformVersion: '4.1.2',
         | 
| 782 | 
            +
                      platformVersion: new Version(4, 1, 2),
         | 
| 914 783 | 
             
                      engine: 'AppleWebKit',
         | 
| 915 | 
            -
                       | 
| 916 | 
            -
                      engineVersion: '534.30',
         | 
| 784 | 
            +
                      engineVersion: new Version(534, 30),
         | 
| 917 785 | 
             
                      documentMode: undefined,
         | 
| 918 786 | 
             
                      browserInfo: {
         | 
| 919 787 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -927,14 +795,11 @@ describe('UserAgentParser', function () { | |
| 927 795 | 
             
                    expect(parse('Mozilla/5.0 (BB10; Touch) AppleWebKit/537.3+ (KHTML, like Gecko) Version/10.0.9.388 Mobile Safari/537.3+'))
         | 
| 928 796 | 
             
                    .toMatchUserAgent({
         | 
| 929 797 | 
             
                      name: 'BuiltinBrowser',
         | 
| 930 | 
            -
                       | 
| 931 | 
            -
                      version: 'Unknown',
         | 
| 798 | 
            +
                      version: new Version(),
         | 
| 932 799 | 
             
                      platform: 'BlackBerry',
         | 
| 933 | 
            -
                       | 
| 934 | 
            -
                      platformVersion: '10.0.9.388',
         | 
| 800 | 
            +
                      platformVersion: new Version(10, 0, 9, 388),
         | 
| 935 801 | 
             
                      engine: 'AppleWebKit',
         | 
| 936 | 
            -
                       | 
| 937 | 
            -
                      engineVersion: '537.3+',
         | 
| 802 | 
            +
                      engineVersion: new Version(537, 3),
         | 
| 938 803 | 
             
                      documentMode: undefined,
         | 
| 939 804 | 
             
                      browserInfo: {
         | 
| 940 805 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -948,14 +813,11 @@ describe('UserAgentParser', function () { | |
| 948 813 | 
             
                    expect(parse('Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+'))
         | 
| 949 814 | 
             
                    .toMatchUserAgent({
         | 
| 950 815 | 
             
                      name: 'BuiltinBrowser',
         | 
| 951 | 
            -
                       | 
| 952 | 
            -
                      version: 'Unknown',
         | 
| 816 | 
            +
                      version: new Version(),
         | 
| 953 817 | 
             
                      platform: 'BlackBerry',
         | 
| 954 | 
            -
                       | 
| 955 | 
            -
                      platformVersion: '7.1.0.346',
         | 
| 818 | 
            +
                      platformVersion: new Version(7, 1, 0, 346),
         | 
| 956 819 | 
             
                      engine: 'AppleWebKit',
         | 
| 957 | 
            -
                       | 
| 958 | 
            -
                      engineVersion: '534.11+',
         | 
| 820 | 
            +
                      engineVersion: new Version(534, 11),
         | 
| 959 821 | 
             
                      documentMode: undefined,
         | 
| 960 822 | 
             
                      browserInfo: {
         | 
| 961 823 | 
             
                        hasWebFontSupport: false,
         | 
| @@ -969,14 +831,11 @@ describe('UserAgentParser', function () { | |
| 969 831 | 
             
                    expect(parse('Mozilla/5.0 (PlayStation 4 1.70) AppleWebKit/536.26 (KHTML, like Gecko)'))
         | 
| 970 832 | 
             
                    .toMatchUserAgent({
         | 
| 971 833 | 
             
                      name: 'BuiltinBrowser',
         | 
| 972 | 
            -
                       | 
| 973 | 
            -
                      version: 'Unknown',
         | 
| 834 | 
            +
                      version: new Version(),
         | 
| 974 835 | 
             
                      platform: 'Linux',
         | 
| 975 | 
            -
                       | 
| 976 | 
            -
                      platformVersion: 'Unknown',
         | 
| 836 | 
            +
                      platformVersion: new Version(),
         | 
| 977 837 | 
             
                      engine: 'AppleWebKit',
         | 
| 978 | 
            -
                       | 
| 979 | 
            -
                      engineVersion: '536.26',
         | 
| 838 | 
            +
                      engineVersion: new Version(536, 26),
         | 
| 980 839 | 
             
                      documentMode: undefined,
         | 
| 981 840 | 
             
                      browserInfo: {
         | 
| 982 841 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -992,14 +851,11 @@ describe('UserAgentParser', function () { | |
| 992 851 | 
             
                    expect(parse('Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFOT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/2.6 Mobile Safari/535.19 Silk-Accelerated=false'))
         | 
| 993 852 | 
             
                    .toMatchUserAgent({
         | 
| 994 853 | 
             
                      name: 'Silk',
         | 
| 995 | 
            -
                       | 
| 996 | 
            -
                      version: '2.6',
         | 
| 854 | 
            +
                      version: new Version(2, 6),
         | 
| 997 855 | 
             
                      platform: 'Android',
         | 
| 998 | 
            -
                       | 
| 999 | 
            -
                      platformVersion: '4.0.3',
         | 
| 856 | 
            +
                      platformVersion: new Version(4, 0, 3),
         | 
| 1000 857 | 
             
                      engine: 'AppleWebKit',
         | 
| 1001 | 
            -
                       | 
| 1002 | 
            -
                      engineVersion: '535.19',
         | 
| 858 | 
            +
                      engineVersion: new Version(535, 19),
         | 
| 1003 859 | 
             
                      documentMode: undefined,
         | 
| 1004 860 | 
             
                      browserInfo: {
         | 
| 1005 861 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -1013,14 +869,11 @@ describe('UserAgentParser', function () { | |
| 1013 869 | 
             
                    expect(parse('Mozilla/5.0 (Linux; U; en-us; KFOT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/2.6 Safari/535.19 Silk-Accelerated=false'))
         | 
| 1014 870 | 
             
                    .toMatchUserAgent({
         | 
| 1015 871 | 
             
                      name: 'Silk',
         | 
| 1016 | 
            -
                       | 
| 1017 | 
            -
                      version: '2.6',
         | 
| 872 | 
            +
                      version: new Version(2, 6),
         | 
| 1018 873 | 
             
                      platform: 'Linux',
         | 
| 1019 | 
            -
                       | 
| 1020 | 
            -
                      platformVersion: 'Unknown',
         | 
| 874 | 
            +
                      platformVersion: new Version(),
         | 
| 1021 875 | 
             
                      engine: 'AppleWebKit',
         | 
| 1022 | 
            -
                       | 
| 1023 | 
            -
                      engineVersion: '535.19',
         | 
| 876 | 
            +
                      engineVersion: new Version(535, 19),
         | 
| 1024 877 | 
             
                      documentMode: undefined,
         | 
| 1025 878 | 
             
                      browserInfo: {
         | 
| 1026 879 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -1034,14 +887,11 @@ describe('UserAgentParser', function () { | |
| 1034 887 | 
             
                    expect(parse('Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/2.6 Mobile Safari/535.19 Silk-Accelerated=false'))
         | 
| 1035 888 | 
             
                    .toMatchUserAgent({
         | 
| 1036 889 | 
             
                      name: 'Silk',
         | 
| 1037 | 
            -
                       | 
| 1038 | 
            -
                      version: '2.6',
         | 
| 890 | 
            +
                      version: new Version(2, 6),
         | 
| 1039 891 | 
             
                      platform: 'Android',
         | 
| 1040 | 
            -
                       | 
| 1041 | 
            -
                      platformVersion: '4.0.3',
         | 
| 892 | 
            +
                      platformVersion: new Version(4, 0, 3),
         | 
| 1042 893 | 
             
                      engine: 'AppleWebKit',
         | 
| 1043 | 
            -
                       | 
| 1044 | 
            -
                      engineVersion: '535.19',
         | 
| 894 | 
            +
                      engineVersion: new Version(535, 19),
         | 
| 1045 895 | 
             
                      documentMode: undefined,
         | 
| 1046 896 | 
             
                      browserInfo: {
         | 
| 1047 897 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -1055,14 +905,11 @@ describe('UserAgentParser', function () { | |
| 1055 905 | 
             
                    expect(parse('Mozilla/5.0 (Linux; U; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/2.6 Safari/535.19 Silk-Accelerated=false'))
         | 
| 1056 906 | 
             
                    .toMatchUserAgent({
         | 
| 1057 907 | 
             
                      name: 'Silk',
         | 
| 1058 | 
            -
                       | 
| 1059 | 
            -
                      version: '2.6',
         | 
| 908 | 
            +
                      version: new Version(2, 6),
         | 
| 1060 909 | 
             
                      platform: 'Linux',
         | 
| 1061 | 
            -
                       | 
| 1062 | 
            -
                      platformVersion: 'Unknown',
         | 
| 910 | 
            +
                      platformVersion: new Version(),
         | 
| 1063 911 | 
             
                      engine: 'AppleWebKit',
         | 
| 1064 | 
            -
                       | 
| 1065 | 
            -
                      engineVersion: '535.19',
         | 
| 912 | 
            +
                      engineVersion: new Version(535, 19),
         | 
| 1066 913 | 
             
                      documentMode: undefined,
         | 
| 1067 914 | 
             
                      browserInfo: {
         | 
| 1068 915 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -1076,14 +923,11 @@ describe('UserAgentParser', function () { | |
| 1076 923 | 
             
                    expect(parse('Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFJWI Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/2.6 Mobile Safari/535.19 Silk-Accelerated=false'))
         | 
| 1077 924 | 
             
                    .toMatchUserAgent({
         | 
| 1078 925 | 
             
                      name: 'Silk',
         | 
| 1079 | 
            -
                       | 
| 1080 | 
            -
                      version: '2.6',
         | 
| 926 | 
            +
                      version: new Version(2, 6),
         | 
| 1081 927 | 
             
                      platform: 'Android',
         | 
| 1082 | 
            -
                       | 
| 1083 | 
            -
                      platformVersion: '4.0.3',
         | 
| 928 | 
            +
                      platformVersion: new Version(4, 0, 3),
         | 
| 1084 929 | 
             
                      engine: 'AppleWebKit',
         | 
| 1085 | 
            -
                       | 
| 1086 | 
            -
                      engineVersion: '535.19',
         | 
| 930 | 
            +
                      engineVersion: new Version(535, 19),
         | 
| 1087 931 | 
             
                      documentMode: undefined,
         | 
| 1088 932 | 
             
                      browserInfo: {
         | 
| 1089 933 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -1097,14 +941,11 @@ describe('UserAgentParser', function () { | |
| 1097 941 | 
             
                    expect(parse('Mozilla/5.0 (Linux; U; en-us; KFJWI Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/2.6 Safari/535.19 Silk-Accelerated=false'))
         | 
| 1098 942 | 
             
                    .toMatchUserAgent({
         | 
| 1099 943 | 
             
                      name: 'Silk',
         | 
| 1100 | 
            -
                       | 
| 1101 | 
            -
                      version: '2.6',
         | 
| 944 | 
            +
                      version: new Version(2, 6),
         | 
| 1102 945 | 
             
                      platform: 'Linux',
         | 
| 1103 | 
            -
                       | 
| 1104 | 
            -
                      platformVersion: 'Unknown',
         | 
| 946 | 
            +
                      platformVersion: new Version(),
         | 
| 1105 947 | 
             
                      engine: 'AppleWebKit',
         | 
| 1106 | 
            -
                       | 
| 1107 | 
            -
                      engineVersion: '535.19',
         | 
| 948 | 
            +
                      engineVersion: new Version(535, 19),
         | 
| 1108 949 | 
             
                      documentMode: undefined,
         | 
| 1109 950 | 
             
                      browserInfo: {
         | 
| 1110 951 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -1118,14 +959,11 @@ describe('UserAgentParser', function () { | |
| 1118 959 | 
             
                    expect(parse('Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFJWA Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/2.6 Mobile Safari/535.19 Silk-Accelerated=false'))
         | 
| 1119 960 | 
             
                    .toMatchUserAgent({
         | 
| 1120 961 | 
             
                      name: 'Silk',
         | 
| 1121 | 
            -
                       | 
| 1122 | 
            -
                      version: '2.6',
         | 
| 962 | 
            +
                      version: new Version(2, 6),
         | 
| 1123 963 | 
             
                      platform: 'Android',
         | 
| 1124 | 
            -
                       | 
| 1125 | 
            -
                      platformVersion: '4.0.3',
         | 
| 964 | 
            +
                      platformVersion: new Version(4, 0, 3),
         | 
| 1126 965 | 
             
                      engine: 'AppleWebKit',
         | 
| 1127 | 
            -
                       | 
| 1128 | 
            -
                      engineVersion: '535.19',
         | 
| 966 | 
            +
                      engineVersion: new Version(535, 19),
         | 
| 1129 967 | 
             
                      documentMode: undefined,
         | 
| 1130 968 | 
             
                      browserInfo: {
         | 
| 1131 969 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -1139,14 +977,11 @@ describe('UserAgentParser', function () { | |
| 1139 977 | 
             
                    expect(parse('Mozilla/5.0 (Linux; U; en-us; KFJWA Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/2.6 Safari/535.19 Silk-Accelerated=false'))
         | 
| 1140 978 | 
             
                    .toMatchUserAgent({
         | 
| 1141 979 | 
             
                      name: 'Silk',
         | 
| 1142 | 
            -
                       | 
| 1143 | 
            -
                      version: '2.6',
         | 
| 980 | 
            +
                      version: new Version(2, 6),
         | 
| 1144 981 | 
             
                      platform: 'Linux',
         | 
| 1145 | 
            -
                       | 
| 1146 | 
            -
                      platformVersion: 'Unknown',
         | 
| 982 | 
            +
                      platformVersion: new Version(),
         | 
| 1147 983 | 
             
                      engine: 'AppleWebKit',
         | 
| 1148 | 
            -
                       | 
| 1149 | 
            -
                      engineVersion: '535.19',
         | 
| 984 | 
            +
                      engineVersion: new Version(535, 19),
         | 
| 1150 985 | 
             
                      documentMode: undefined,
         | 
| 1151 986 | 
             
                      browserInfo: {
         | 
| 1152 987 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -1160,14 +995,11 @@ describe('UserAgentParser', function () { | |
| 1160 995 | 
             
                    expect(parse('Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Silk/1.0.22.79_10013310) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Silk-Accelerated=false'))
         | 
| 1161 996 | 
             
                    .toMatchUserAgent({
         | 
| 1162 997 | 
             
                      name: 'Silk',
         | 
| 1163 | 
            -
                       | 
| 1164 | 
            -
                      version: '1.0.22.79_10013310',
         | 
| 998 | 
            +
                      version: new Version(1, 0, 22, '79_10013310'),
         | 
| 1165 999 | 
             
                      platform: 'Android',
         | 
| 1166 | 
            -
                       | 
| 1167 | 
            -
                      platformVersion: '2.3.4',
         | 
| 1000 | 
            +
                      platformVersion: new Version(2, 3, 4),
         | 
| 1168 1001 | 
             
                      engine: 'AppleWebKit',
         | 
| 1169 | 
            -
                       | 
| 1170 | 
            -
                      engineVersion: '533.1',
         | 
| 1002 | 
            +
                      engineVersion: new Version(533, 1),
         | 
| 1171 1003 | 
             
                      documentMode: undefined,
         | 
| 1172 1004 | 
             
                      browserInfo: {
         | 
| 1173 1005 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -1181,14 +1013,11 @@ describe('UserAgentParser', function () { | |
| 1181 1013 | 
             
                    expect(parse('Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.0.22.79_10013310) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=false'))
         | 
| 1182 1014 | 
             
                    .toMatchUserAgent({
         | 
| 1183 1015 | 
             
                      name: 'Silk',
         | 
| 1184 | 
            -
                       | 
| 1185 | 
            -
                      version: '1.0.22.79_10013310',
         | 
| 1016 | 
            +
                      version: new Version(1, 0, 22, '79_10013310'),
         | 
| 1186 1017 | 
             
                      platform: 'Macintosh',
         | 
| 1187 | 
            -
                       | 
| 1188 | 
            -
                      platformVersion: '10_6_3',
         | 
| 1018 | 
            +
                      platformVersion: new Version(10, 6, 3),
         | 
| 1189 1019 | 
             
                      engine: 'AppleWebKit',
         | 
| 1190 | 
            -
                       | 
| 1191 | 
            -
                      engineVersion: '533.16',
         | 
| 1020 | 
            +
                      engineVersion: new Version(533, 16),
         | 
| 1192 1021 | 
             
                      documentMode: undefined,
         | 
| 1193 1022 | 
             
                      browserInfo: {
         | 
| 1194 1023 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -1204,14 +1033,11 @@ describe('UserAgentParser', function () { | |
| 1204 1033 | 
             
                    expect(parse('Opera/9.80 (Linux i686; U; en) Presto/2.5.22 Version/10.51'))
         | 
| 1205 1034 | 
             
                    .toMatchUserAgent({
         | 
| 1206 1035 | 
             
                      name: 'Opera',
         | 
| 1207 | 
            -
                       | 
| 1208 | 
            -
                      version: '10.51',
         | 
| 1036 | 
            +
                      version: new Version(10, 51),
         | 
| 1209 1037 | 
             
                      platform: 'Linux',
         | 
| 1210 | 
            -
                       | 
| 1211 | 
            -
                      platformVersion: 'Unknown',
         | 
| 1038 | 
            +
                      platformVersion: new Version(), //'i686'
         | 
| 1212 1039 | 
             
                      engine: 'Presto',
         | 
| 1213 | 
            -
                       | 
| 1214 | 
            -
                      engineVersion: '2.5.22',
         | 
| 1040 | 
            +
                      engineVersion: new Version(2, 5, 22),
         | 
| 1215 1041 | 
             
                      documentMode: undefined,
         | 
| 1216 1042 | 
             
                      browserInfo: {
         | 
| 1217 1043 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -1225,14 +1051,11 @@ describe('UserAgentParser', function () { | |
| 1225 1051 | 
             
                    expect(parse('Mozilla/5.0 (Linux i686 ; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.70'))
         | 
| 1226 1052 | 
             
                    .toMatchUserAgent({
         | 
| 1227 1053 | 
             
                      name: 'Opera',
         | 
| 1228 | 
            -
                       | 
| 1229 | 
            -
                      version: '9.70',
         | 
| 1054 | 
            +
                      version: new Version(9, 70),
         | 
| 1230 1055 | 
             
                      platform: 'Linux',
         | 
| 1231 | 
            -
                       | 
| 1232 | 
            -
                      platformVersion: 'Unknown',
         | 
| 1056 | 
            +
                      platformVersion: new Version(), //'i686'
         | 
| 1233 1057 | 
             
                      engine: 'Gecko',
         | 
| 1234 | 
            -
                       | 
| 1235 | 
            -
                      engineVersion: '1.8.1',
         | 
| 1058 | 
            +
                      engineVersion: new Version(1, 8, 1),
         | 
| 1236 1059 | 
             
                      documentMode: undefined,
         | 
| 1237 1060 | 
             
                      browserInfo: {
         | 
| 1238 1061 | 
             
                        hasWebFontSupport: false,
         | 
| @@ -1246,14 +1069,11 @@ describe('UserAgentParser', function () { | |
| 1246 1069 | 
             
                    expect(parse('Opera/9.64 (X11; Linux i686; U; Linux Mint; nb) Presto/2.1.1'))
         | 
| 1247 1070 | 
             
                    .toMatchUserAgent({
         | 
| 1248 1071 | 
             
                      name: 'Opera',
         | 
| 1249 | 
            -
                       | 
| 1250 | 
            -
                      version: '9.64',
         | 
| 1072 | 
            +
                      version: new Version(9, 64),
         | 
| 1251 1073 | 
             
                      platform: 'Linux',
         | 
| 1252 | 
            -
                       | 
| 1253 | 
            -
                      platformVersion: 'Unknown',
         | 
| 1074 | 
            +
                      platformVersion: new Version(), //'i686'
         | 
| 1254 1075 | 
             
                      engine: 'Presto',
         | 
| 1255 | 
            -
                       | 
| 1256 | 
            -
                      engineVersion: '2.1.1',
         | 
| 1076 | 
            +
                      engineVersion: new Version(2, 1, 1),
         | 
| 1257 1077 | 
             
                      documentMode: undefined,
         | 
| 1258 1078 | 
             
                      browserInfo: {
         | 
| 1259 1079 | 
             
                        hasWebFontSupport: false,
         | 
| @@ -1267,14 +1087,11 @@ describe('UserAgentParser', function () { | |
| 1267 1087 | 
             
                    expect(parse('Opera/9.80 (Android 4.1.1; Linux; Opera Mobi/ADR-1207201819; U; en) Presto/2.10.254 Version/12.00'))
         | 
| 1268 1088 | 
             
                    .toMatchUserAgent({
         | 
| 1269 1089 | 
             
                      name: 'Opera',
         | 
| 1270 | 
            -
                       | 
| 1271 | 
            -
                      version: '12.00',
         | 
| 1090 | 
            +
                      version: new Version(12, 0),
         | 
| 1272 1091 | 
             
                      platform: 'Android',
         | 
| 1273 | 
            -
                       | 
| 1274 | 
            -
                      platformVersion: '4.1.1',
         | 
| 1092 | 
            +
                      platformVersion: new Version(4, 1, 1),
         | 
| 1275 1093 | 
             
                      engine: 'Presto',
         | 
| 1276 | 
            -
                       | 
| 1277 | 
            -
                      engineVersion: '2.10.254',
         | 
| 1094 | 
            +
                      engineVersion: new Version(2, 10, 254),
         | 
| 1278 1095 | 
             
                      documentMode: undefined,
         | 
| 1279 1096 | 
             
                      browserInfo: {
         | 
| 1280 1097 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -1288,14 +1105,11 @@ describe('UserAgentParser', function () { | |
| 1288 1105 | 
             
                    expect(parse('Opera/9.80 (Android; Opera Mini/7.0.29952/28.2144; U; en) Presto/2.8.119 Version/11.10'))
         | 
| 1289 1106 | 
             
                    .toMatchUserAgent({
         | 
| 1290 1107 | 
             
                      name: 'OperaMini',
         | 
| 1291 | 
            -
                       | 
| 1292 | 
            -
                      version: '7.0.29952',
         | 
| 1108 | 
            +
                      version: new Version(7, 0, 29952),
         | 
| 1293 1109 | 
             
                      platform: 'Android',
         | 
| 1294 | 
            -
                       | 
| 1295 | 
            -
                      platformVersion: 'Unknown',
         | 
| 1110 | 
            +
                      platformVersion: new Version(),
         | 
| 1296 1111 | 
             
                      engine: 'Presto',
         | 
| 1297 | 
            -
                       | 
| 1298 | 
            -
                      engineVersion: '2.8.119',
         | 
| 1112 | 
            +
                      engineVersion: new Version(2, 8, 119),
         | 
| 1299 1113 | 
             
                      documentMode: undefined,
         | 
| 1300 1114 | 
             
                      browserInfo: {
         | 
| 1301 1115 | 
             
                        hasWebFontSupport: false,
         | 
| @@ -1309,14 +1123,11 @@ describe('UserAgentParser', function () { | |
| 1309 1123 | 
             
                    expect(parse('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.20 Safari/537.36  OPR/15.0.1147.18 (Edition Next)'))
         | 
| 1310 1124 | 
             
                    .toMatchUserAgent({
         | 
| 1311 1125 | 
             
                      name: 'Opera',
         | 
| 1312 | 
            -
                       | 
| 1313 | 
            -
                      version: '15.0.1147.18',
         | 
| 1126 | 
            +
                      version: new Version(15, 0, 1147, 18),
         | 
| 1314 1127 | 
             
                      platform: 'Macintosh',
         | 
| 1315 | 
            -
                       | 
| 1316 | 
            -
                      platformVersion: '10_8_3',
         | 
| 1128 | 
            +
                      platformVersion: new Version(10, 8, 3),
         | 
| 1317 1129 | 
             
                      engine: 'AppleWebKit',
         | 
| 1318 | 
            -
                       | 
| 1319 | 
            -
                      engineVersion: '537.36',
         | 
| 1130 | 
            +
                      engineVersion: new Version(537, 36),
         | 
| 1320 1131 | 
             
                      documentMode: undefined,
         | 
| 1321 1132 | 
             
                      browserInfo: {
         | 
| 1322 1133 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -1332,14 +1143,11 @@ describe('UserAgentParser', function () { | |
| 1332 1143 | 
             
                    expect(parse('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5'))
         | 
| 1333 1144 | 
             
                    .toMatchUserAgent({
         | 
| 1334 1145 | 
             
                      name: 'Chrome',
         | 
| 1335 | 
            -
                       | 
| 1336 | 
            -
                      version: '19.0.1084.9',
         | 
| 1146 | 
            +
                      version: new Version(19, 0, 1084, 9),
         | 
| 1337 1147 | 
             
                      platform: 'Linux',
         | 
| 1338 | 
            -
                       | 
| 1339 | 
            -
                      platformVersion: 'Unknown',
         | 
| 1148 | 
            +
                      platformVersion: new Version(),
         | 
| 1340 1149 | 
             
                      engine: 'AppleWebKit',
         | 
| 1341 | 
            -
                       | 
| 1342 | 
            -
                      engineVersion: '536.5',
         | 
| 1150 | 
            +
                      engineVersion: new Version(536, 5),
         | 
| 1343 1151 | 
             
                      documentMode: undefined,
         | 
| 1344 1152 | 
             
                      browserInfo: {
         | 
| 1345 1153 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -1353,14 +1161,11 @@ describe('UserAgentParser', function () { | |
| 1353 1161 | 
             
                    expect(parse('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.814.2 Safari/536.11'))
         | 
| 1354 1162 | 
             
                    .toMatchUserAgent({
         | 
| 1355 1163 | 
             
                      name: 'Chrome',
         | 
| 1356 | 
            -
                       | 
| 1357 | 
            -
                      version: '20.0.814.2',
         | 
| 1164 | 
            +
                      version: new Version(20, 0, 814, 2),
         | 
| 1358 1165 | 
             
                      platform: 'Linux',
         | 
| 1359 | 
            -
                       | 
| 1360 | 
            -
                      platformVersion: 'Unknown',
         | 
| 1166 | 
            +
                      platformVersion: new Version(),
         | 
| 1361 1167 | 
             
                      engine: 'AppleWebKit',
         | 
| 1362 | 
            -
                       | 
| 1363 | 
            -
                      engineVersion: '536.11',
         | 
| 1168 | 
            +
                      engineVersion: new Version(536, 11),
         | 
| 1364 1169 | 
             
                      documentMode: undefined,
         | 
| 1365 1170 | 
             
                      browserInfo: {
         | 
| 1366 1171 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -1372,60 +1177,15 @@ describe('UserAgentParser', function () { | |
| 1372 1177 | 
             
                });
         | 
| 1373 1178 |  | 
| 1374 1179 | 
             
                describe('Invented user agents', function () {
         | 
| 1375 | 
            -
                  it('should detect Gecko as supporting web fonts', function () {
         | 
| 1376 | 
            -
                    expect(parse('Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.9.1.4) Gecko/20091016 (.NET CLR 3.5.30729)'))
         | 
| 1377 | 
            -
                    .toMatchUserAgent({
         | 
| 1378 | 
            -
                      name: 'Mozilla',
         | 
| 1379 | 
            -
                      parsedVersion: new Version(),
         | 
| 1380 | 
            -
                      version: 'Unknown',
         | 
| 1381 | 
            -
                      platform: 'Windows',
         | 
| 1382 | 
            -
                      parsedPlatformVersion: new Version(5, 1),
         | 
| 1383 | 
            -
                      platformVersion: '5.1',
         | 
| 1384 | 
            -
                      engine: 'Gecko',
         | 
| 1385 | 
            -
                      parsedEngineVersion: new Version(1, 9, 1, 4),
         | 
| 1386 | 
            -
                      engineVersion: '1.9.1.4',
         | 
| 1387 | 
            -
                      documentMode: undefined,
         | 
| 1388 | 
            -
                      browserInfo: {
         | 
| 1389 | 
            -
                        hasWebFontSupport: true,
         | 
| 1390 | 
            -
                        hasWebKitFallbackBug: false,
         | 
| 1391 | 
            -
                        hasWebKitMetricsBug: false
         | 
| 1392 | 
            -
                      }
         | 
| 1393 | 
            -
                    });
         | 
| 1394 | 
            -
                  });
         | 
| 1395 | 
            -
             | 
| 1396 | 
            -
                  it('should detect unknown parsedVersions of Gecko as supporting web fonts', function () {
         | 
| 1180 | 
            +
                  it('should detect unknown versions of Gecko as supporting web fonts', function () {
         | 
| 1397 1181 | 
             
                    expect(parse('Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:2.5.8) Gecko/20091016 (.NET CLR 3.5.30729)'))
         | 
| 1398 1182 | 
             
                    .toMatchUserAgent({
         | 
| 1399 1183 | 
             
                      name: 'Mozilla',
         | 
| 1400 | 
            -
                       | 
| 1401 | 
            -
                      version: 'Unknown',
         | 
| 1402 | 
            -
                      platform: 'Windows',
         | 
| 1403 | 
            -
                      parsedPlatformVersion: new Version(5, 1),
         | 
| 1404 | 
            -
                      platformVersion: '5.1',
         | 
| 1405 | 
            -
                      engine: 'Gecko',
         | 
| 1406 | 
            -
                      parsedEngineVersion: new Version(2, 5, 8),
         | 
| 1407 | 
            -
                      engineVersion: '2.5.8',
         | 
| 1408 | 
            -
                      documentMode: undefined,
         | 
| 1409 | 
            -
                      browserInfo: {
         | 
| 1410 | 
            -
                        hasWebFontSupport: true,
         | 
| 1411 | 
            -
                        hasWebKitFallbackBug: false,
         | 
| 1412 | 
            -
                        hasWebKitMetricsBug: false
         | 
| 1413 | 
            -
                      }
         | 
| 1414 | 
            -
                    });
         | 
| 1415 | 
            -
                  });
         | 
| 1416 | 
            -
             | 
| 1417 | 
            -
                  it('should detect Gecko v1.10 as supporting web fonts', function () {
         | 
| 1418 | 
            -
                    expect(parse('Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.10.1b) Gecko/20091016 (.NET CLR 3.5.30729)'))
         | 
| 1419 | 
            -
                    .toMatchUserAgent({
         | 
| 1420 | 
            -
                      name: 'Mozilla',
         | 
| 1421 | 
            -
                      parsedVersion: new Version(),
         | 
| 1422 | 
            -
                      version: 'Unknown',
         | 
| 1184 | 
            +
                      version: new Version(),
         | 
| 1423 1185 | 
             
                      platform: 'Windows',
         | 
| 1424 | 
            -
                       | 
| 1425 | 
            -
                      platformVersion: '5.1',
         | 
| 1186 | 
            +
                      platformVersion: new Version(5, 1),
         | 
| 1426 1187 | 
             
                      engine: 'Gecko',
         | 
| 1427 | 
            -
                       | 
| 1428 | 
            -
                      engineVersion: '1.10.1b',
         | 
| 1188 | 
            +
                      engineVersion: new Version(2, 5, 8),
         | 
| 1429 1189 | 
             
                      documentMode: undefined,
         | 
| 1430 1190 | 
             
                      browserInfo: {
         | 
| 1431 1191 | 
             
                        hasWebFontSupport: true,
         | 
| @@ -1435,18 +1195,15 @@ describe('UserAgentParser', function () { | |
| 1435 1195 | 
             
                    });
         | 
| 1436 1196 | 
             
                  });
         | 
| 1437 1197 |  | 
| 1438 | 
            -
                  it('should detect Gecko with an invalid  | 
| 1198 | 
            +
                  it('should detect Gecko with an invalid version number as not supporting web fonts', function () {
         | 
| 1439 1199 | 
             
                    expect(parse('Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.b) Gecko/20091016 (.NET CLR 3.5.30729)'))
         | 
| 1440 1200 | 
             
                    .toMatchUserAgent({
         | 
| 1441 1201 | 
             
                      name: 'Mozilla',
         | 
| 1442 | 
            -
                       | 
| 1443 | 
            -
                      version: 'Unknown',
         | 
| 1202 | 
            +
                      version: new Version(),
         | 
| 1444 1203 | 
             
                      platform: 'Windows',
         | 
| 1445 | 
            -
                       | 
| 1446 | 
            -
                      platformVersion: '5.1',
         | 
| 1204 | 
            +
                      platformVersion: new Version(5, 1),
         | 
| 1447 1205 | 
             
                      engine: 'Gecko',
         | 
| 1448 | 
            -
                       | 
| 1449 | 
            -
                      engineVersion: '1.b',
         | 
| 1206 | 
            +
                      engineVersion: new Version(1, null, null, 'b'),
         | 
| 1450 1207 | 
             
                      documentMode: undefined,
         | 
| 1451 1208 | 
             
                      browserInfo: {
         | 
| 1452 1209 | 
             
                        hasWebFontSupport: false,
         | 
| @@ -1458,14 +1215,11 @@ describe('UserAgentParser', function () { | |
| 1458 1215 | 
             
                    expect(parse('Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.b) Gecko/20091016 (.NET CLR 3.5.30729)'))
         | 
| 1459 1216 | 
             
                    .toMatchUserAgent({
         | 
| 1460 1217 | 
             
                      name: 'Mozilla',
         | 
| 1461 | 
            -
                       | 
| 1462 | 
            -
                      version: 'Unknown',
         | 
| 1218 | 
            +
                      version: new Version(),
         | 
| 1463 1219 | 
             
                      platform: 'Windows',
         | 
| 1464 | 
            -
                       | 
| 1465 | 
            -
                      platformVersion: '5.1',
         | 
| 1220 | 
            +
                      platformVersion: new Version(5, 1),
         | 
| 1466 1221 | 
             
                      engine: 'Gecko',
         | 
| 1467 | 
            -
                       | 
| 1468 | 
            -
                      engineVersion: '1.b',
         | 
| 1222 | 
            +
                      engineVersion: new Version(1, null, null, 'b'),
         | 
| 1469 1223 | 
             
                      documentMode: undefined,
         | 
| 1470 1224 | 
             
                      browserInfo: {
         | 
| 1471 1225 | 
             
                        hasWebFontSupport: false,
         | 
| @@ -1477,14 +1231,11 @@ describe('UserAgentParser', function () { | |
| 1477 1231 | 
             
                    expect(parse('Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.9) Gecko/20091016 (.NET CLR 3.5.30729)'))
         | 
| 1478 1232 | 
             
                    .toMatchUserAgent({
         | 
| 1479 1233 | 
             
                      name: 'Mozilla',
         | 
| 1480 | 
            -
                       | 
| 1481 | 
            -
                      version: 'Unknown',
         | 
| 1234 | 
            +
                      version: new Version(),
         | 
| 1482 1235 | 
             
                      platform: 'Windows',
         | 
| 1483 | 
            -
                       | 
| 1484 | 
            -
                      platformVersion: '5.1',
         | 
| 1236 | 
            +
                      platformVersion: new Version(5, 1),
         | 
| 1485 1237 | 
             
                      engine: 'Gecko',
         | 
| 1486 | 
            -
                       | 
| 1487 | 
            -
                      engineVersion: '1.9',
         | 
| 1238 | 
            +
                      engineVersion: new Version(1, 9),
         | 
| 1488 1239 | 
             
                      documentMode: undefined,
         | 
| 1489 1240 | 
             
                      browserInfo: {
         | 
| 1490 1241 | 
             
                        hasWebFontSupport: false,
         | 
| @@ -1496,14 +1247,11 @@ describe('UserAgentParser', function () { | |
| 1496 1247 | 
             
                    expect(parse('Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:0.10.1) Gecko/20091016 (.NET CLR 3.5.30729)'))
         | 
| 1497 1248 | 
             
                    .toMatchUserAgent({
         | 
| 1498 1249 | 
             
                      name: 'Mozilla',
         | 
| 1499 | 
            -
                       | 
| 1500 | 
            -
                      version: 'Unknown',
         | 
| 1250 | 
            +
                      version: new Version(),
         | 
| 1501 1251 | 
             
                      platform: 'Windows',
         | 
| 1502 | 
            -
                       | 
| 1503 | 
            -
                      platformVersion: '5.1',
         | 
| 1252 | 
            +
                      platformVersion: new Version(5, 1),
         | 
| 1504 1253 | 
             
                      engine: 'Gecko',
         | 
| 1505 | 
            -
                       | 
| 1506 | 
            -
                      engineVersion: '0.10.1',
         | 
| 1254 | 
            +
                      engineVersion: new Version(0, 10, 1),
         | 
| 1507 1255 | 
             
                      documentMode: undefined,
         | 
| 1508 1256 | 
             
                      browserInfo: {
         | 
| 1509 1257 | 
             
                        hasWebFontSupport: false,
         | 
| @@ -1515,14 +1263,11 @@ describe('UserAgentParser', function () { | |
| 1515 1263 | 
             
                    expect(parse('Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:0.3.42) Gecko/20091016 (.NET CLR 3.5.30729)'))
         | 
| 1516 1264 | 
             
                    .toMatchUserAgent({
         | 
| 1517 1265 | 
             
                      name: 'Mozilla',
         | 
| 1518 | 
            -
                       | 
| 1519 | 
            -
                      version: 'Unknown',
         | 
| 1266 | 
            +
                      version: new Version(),
         | 
| 1520 1267 | 
             
                      platform: 'Windows',
         | 
| 1521 | 
            -
                       | 
| 1522 | 
            -
                      platformVersion: '5.1',
         | 
| 1268 | 
            +
                      platformVersion: new Version(5, 1),
         | 
| 1523 1269 | 
             
                      engine: 'Gecko',
         | 
| 1524 | 
            -
                       | 
| 1525 | 
            -
                      engineVersion: '0.3.42',
         | 
| 1270 | 
            +
                      engineVersion: new Version(0, 3, 42),
         | 
| 1526 1271 | 
             
                      documentMode: undefined,
         | 
| 1527 1272 | 
             
                      browserInfo: {
         | 
| 1528 1273 | 
             
                        hasWebFontSupport: false,
         | 
| @@ -1538,14 +1283,11 @@ describe('UserAgentParser', function () { | |
| 1538 1283 | 
             
                    expect(parse('Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.0 (development) Safari/534.34'))
         | 
| 1539 1284 | 
             
                    .toMatchUserAgent({
         | 
| 1540 1285 | 
             
                      name: 'PhantomJS',
         | 
| 1541 | 
            -
                       | 
| 1542 | 
            -
                      version: '1.9.0',
         | 
| 1286 | 
            +
                      version: new Version(1, 9, 0),
         | 
| 1543 1287 | 
             
                      platform: 'Macintosh',
         | 
| 1544 | 
            -
                       | 
| 1545 | 
            -
                      platformVersion: 'Unknown',
         | 
| 1288 | 
            +
                      platformVersion: new Version(),
         | 
| 1546 1289 | 
             
                      engine: 'AppleWebKit',
         | 
| 1547 | 
            -
                       | 
| 1548 | 
            -
                      engineVersion: '534.34',
         | 
| 1290 | 
            +
                      engineVersion: new Version(534, 34),
         | 
| 1549 1291 | 
             
                      documentMode: undefined,
         | 
| 1550 1292 | 
             
                      browserInfo: {
         | 
| 1551 1293 | 
             
                        hasWebFontSupport: true,
         |