diff --git a/src/parser.js b/src/parser.js index a296977..4893ef0 100644 --- a/src/parser.js +++ b/src/parser.js @@ -272,6 +272,19 @@ class Parser { return this.parseEngine(); } + /** + * Get engines's name + * @return {String} Engines's name or an empty string + * + * @public + */ + getEngineName(toLowerCase) { + if (toLowerCase) { + return String(this.getEngine().name).toLowerCase() || ''; + } + return this.getEngine().name || ''; + } + /** * Get parsed platform * @return {{}} @@ -437,6 +450,10 @@ class Parser { return this.getPlatformType(true) === String(platformType).toLowerCase(); } + isEngine(engineName) { + return this.getEngineName(true) === String(engineName).toLowerCase(); + } + /** * Is anything? Check if the browser is called "anything", * the OS called "anything" or the platform called "anything" diff --git a/test/unit/parser.js b/test/unit/parser.js index 309aa72..17a020f 100644 --- a/test/unit/parser.js +++ b/test/unit/parser.js @@ -53,6 +53,21 @@ test('Parser.getOSVersion returns a correct result', (t) => { t.is(parser.getOSVersion(), '10.12.4'); }); +test('Parser.parseEngine is being called when getEngine() called', (t) => { + const spy = sinon.spy(parser, 'parseEngine'); + parser.getEngine(); + t.truthy(spy.called); + parser.parseEngine.restore(); +}); + +test('Parser.getEngineName gives a name of the engine', (t) => { + t.is(parser.getEngineName(), 'Blink'); +}); + +test('Parser.getEngineName gives a lower-cased name of the engine', (t) => { + t.is(parser.getEngineName(true), 'blink'); +}); + test('Skip parsing shouldn\'t parse', (t) => { t.deepEqual((new Parser(UA, true)).getResult(), {}); });