diff --git a/src/ol/expression/lexer.js b/src/ol/expression/lexer.js index 5ced440e0a..fab87330e9 100644 --- a/src/ol/expression/lexer.js +++ b/src/ol/expression/lexer.js @@ -721,6 +721,7 @@ ol.expression.Lexer.prototype.scanPunctuator_ = function(code) { if (code === ol.expression.Char.GREATER || code === ol.expression.Char.LESS) { + this.increment_(2); return { type: ol.expression.TokenType.PUNCTUATOR, value: String.fromCharCode(code) + '=' diff --git a/test/spec/ol/expression/lexer.test.js b/test/spec/ol/expression/lexer.test.js index 435d421d37..370b48ae2a 100644 --- a/test/spec/ol/expression/lexer.test.js +++ b/test/spec/ol/expression/lexer.test.js @@ -93,9 +93,13 @@ describe('ol.expression.Lexer', function() { describe('#scanIdentifier_()', function() { - function scan(source) { + function scan(source, part) { var lexer = new ol.expression.Lexer(source); - return lexer.scanIdentifier_(lexer.getCurrentCharCode_()); + var token = lexer.scanIdentifier_(lexer.getCurrentCharCode_()); + if (!part) { + expect(lexer.peek().type).to.be(ol.expression.TokenType.EOF); + } + return token; } it('works for short identifiers', function() { @@ -171,7 +175,7 @@ describe('ol.expression.Lexer', function() { }); it('only scans valid identifier part', function() { - var token = scan('foo>bar'); + var token = scan('foo>bar', true); expect(token.value).to.be('foo'); expect(token.type).to.be(ol.expression.TokenType.IDENTIFIER); }); @@ -182,7 +186,9 @@ describe('ol.expression.Lexer', function() { function scan(source) { var lexer = new ol.expression.Lexer(source); - return lexer.scanNumericLiteral_(lexer.getCurrentCharCode_()); + var token = lexer.scanNumericLiteral_(lexer.getCurrentCharCode_()); + expect(lexer.peek().type).to.be(ol.expression.TokenType.EOF); + return token; } it('works for integers', function() { @@ -233,7 +239,9 @@ describe('ol.expression.Lexer', function() { function scan(source) { var lexer = new ol.expression.Lexer(source); - return lexer.scanPunctuator_(lexer.getCurrentCharCode_()); + var token = lexer.scanPunctuator_(lexer.getCurrentCharCode_()); + expect(lexer.peek().type).to.be(ol.expression.TokenType.EOF); + return token; } it('works for dot', function() { @@ -320,7 +328,9 @@ describe('ol.expression.Lexer', function() { function scan(source) { var lexer = new ol.expression.Lexer(source); - return lexer.scanStringLiteral_(lexer.getCurrentCharCode_()); + var token = lexer.scanStringLiteral_(lexer.getCurrentCharCode_()); + expect(lexer.peek().type).to.be(ol.expression.TokenType.EOF); + return token; } it('parses double quoted string', function() {