From 2492515e8f3dbe93804d71bc590e1e854fb1e304 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Tue, 11 Jun 2013 16:10:18 -0600 Subject: [PATCH] Integration testing for unary operators Only supporting ! at the moment. --- test/spec/ol/expression/expression.test.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/test/spec/ol/expression/expression.test.js b/test/spec/ol/expression/expression.test.js index 196b34c3dd..39c9ac5b43 100644 --- a/test/spec/ol/expression/expression.test.js +++ b/test/spec/ol/expression/expression.test.js @@ -111,6 +111,26 @@ describe('ol.expression.parse', function() { }); + describe('unary operators', function() { + // http://www.ecma-international.org/ecma-262/5.1/#sec-11.4 + + it('parses logical not operator', function() { + var expr = ol.expression.parse('!foo'); + expect(expr).to.be.a(ol.expression.Not); + expect(expr.evaluate({foo: true})).to.be(false); + expect(expr.evaluate({foo: false})).to.be(true); + expect(expr.evaluate({foo: ''})).to.be(true); + expect(expr.evaluate({foo: 'foo'})).to.be(false); + }); + + it('consumes whitespace as expected', function() { + var expr = ol.expression.parse(' ! foo'); + expect(expr).to.be.a(ol.expression.Not); + expect(expr.evaluate({foo: true})).to.be(false); + expect(expr.evaluate({foo: false})).to.be(true); + }); + + }); }); @@ -119,3 +139,4 @@ goog.require('ol.expression'); goog.require('ol.expression.Expression'); goog.require('ol.expression.Identifier'); goog.require('ol.expression.Literal'); +goog.require('ol.expression.Not');