address most of @tschaub's review comments, use dot notation where possible still needs to be done, and I have some questions on the _expression reader still
This commit is contained in:
@@ -11,12 +11,12 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
|
||||
afterLoadXml(url, function(xml) {
|
||||
var filter = parser.read(xml);
|
||||
expect(filter instanceof ol.expr.Call).to.be(true);
|
||||
expect(filter.getCallee().getName()).to.eql(
|
||||
expect(filter.getCallee().getName()).to.equal(
|
||||
ol.expr.functions.INTERSECTS);
|
||||
var args = filter.getArgs();
|
||||
var geom = args[0];
|
||||
expect(geom instanceof ol.geom.Polygon).to.be(true);
|
||||
expect(args[2]).to.eql('Geometry');
|
||||
expect(geom.getValue() instanceof ol.geom.Polygon).to.be(true);
|
||||
expect(args[2].getName()).to.equal('Geometry');
|
||||
var output = parser.write(filter);
|
||||
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
||||
done();
|
||||
@@ -28,11 +28,11 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
|
||||
afterLoadXml(url, function(xml) {
|
||||
var filter = parser.read(xml);
|
||||
expect(filter instanceof ol.expr.Call).to.be(true);
|
||||
expect(filter.getCallee().getName()).to.eql(ol.expr.functions.WITHIN);
|
||||
expect(filter.getCallee().getName()).to.equal(ol.expr.functions.WITHIN);
|
||||
var args = filter.getArgs();
|
||||
var geom = args[0];
|
||||
expect(geom instanceof ol.geom.Polygon).to.be(true);
|
||||
expect(args[2]).to.eql('Geometry');
|
||||
expect(geom.getValue() instanceof ol.geom.Polygon).to.be(true);
|
||||
expect(args[2].getName()).to.equal('Geometry');
|
||||
var output = parser.write(filter);
|
||||
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
||||
done();
|
||||
@@ -44,12 +44,12 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
|
||||
afterLoadXml(url, function(xml) {
|
||||
var filter = parser.read(xml);
|
||||
expect(filter instanceof ol.expr.Call).to.be(true);
|
||||
expect(filter.getCallee().getName()).to.eql(
|
||||
expect(filter.getCallee().getName()).to.equal(
|
||||
ol.expr.functions.CONTAINS);
|
||||
var args = filter.getArgs();
|
||||
var geom = args[0];
|
||||
expect(geom instanceof ol.geom.Polygon).to.be(true);
|
||||
expect(args[2]).to.eql('Geometry');
|
||||
expect(geom.getValue() instanceof ol.geom.Polygon).to.be(true);
|
||||
expect(args[2].getName()).to.equal('Geometry');
|
||||
var output = parser.write(filter);
|
||||
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
||||
done();
|
||||
@@ -61,16 +61,17 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
|
||||
afterLoadXml(url, function(xml) {
|
||||
var filter = parser.read(xml);
|
||||
expect(filter instanceof ol.expr.Logical).to.be.ok();
|
||||
expect(filter.getOperator()).to.eql(ol.expr.LogicalOp.AND);
|
||||
expect(filter.getOperator()).to.equal(ol.expr.LogicalOp.AND);
|
||||
expect(filter.getLeft() instanceof ol.expr.Comparison).to.be.ok();
|
||||
expect(filter.getLeft().getOperator()).to.eql(ol.expr.ComparisonOp.GTE);
|
||||
expect(filter.getLeft().getLeft()).to.eql('number');
|
||||
expect(filter.getLeft().getRight()).to.eql(0);
|
||||
expect(filter.getLeft().getOperator()).to.equal(
|
||||
ol.expr.ComparisonOp.GTE);
|
||||
expect(filter.getLeft().getLeft().getName()).to.equal('number');
|
||||
expect(filter.getLeft().getRight().getValue()).to.equal(0);
|
||||
expect(filter.getRight() instanceof ol.expr.Comparison).to.be.ok();
|
||||
expect(filter.getRight().getOperator()).to.eql(
|
||||
expect(filter.getRight().getOperator()).to.equal(
|
||||
ol.expr.ComparisonOp.LTE);
|
||||
expect(filter.getRight().getLeft()).to.eql('number');
|
||||
expect(filter.getRight().getRight()).to.eql(100);
|
||||
expect(filter.getRight().getLeft().getName()).to.equal('number');
|
||||
expect(filter.getRight().getRight().getValue()).to.equal(100);
|
||||
var output = parser.write(filter);
|
||||
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
||||
done();
|
||||
@@ -82,16 +83,17 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
|
||||
afterLoadXml(url, function(xml) {
|
||||
var filter = parser.read(xml);
|
||||
expect(filter instanceof ol.expr.Logical).to.be.ok();
|
||||
expect(filter.getOperator()).to.eql(ol.expr.LogicalOp.AND);
|
||||
expect(filter.getOperator()).to.equal(ol.expr.LogicalOp.AND);
|
||||
expect(filter.getLeft() instanceof ol.expr.Comparison).to.be.ok();
|
||||
expect(filter.getLeft().getOperator()).to.eql(ol.expr.ComparisonOp.GTE);
|
||||
expect(filter.getLeft().getLeft()).to.eql('number');
|
||||
expect(filter.getLeft().getRight()).to.eql(0);
|
||||
expect(filter.getLeft().getOperator()).to.equal(
|
||||
ol.expr.ComparisonOp.GTE);
|
||||
expect(filter.getLeft().getLeft().getName()).to.equal('number');
|
||||
expect(filter.getLeft().getRight().getValue()).to.equal(0);
|
||||
expect(filter.getRight() instanceof ol.expr.Comparison).to.be.ok();
|
||||
expect(filter.getRight().getOperator()).to.eql(
|
||||
expect(filter.getRight().getOperator()).to.equal(
|
||||
ol.expr.ComparisonOp.LTE);
|
||||
expect(filter.getRight().getLeft()).to.eql('number');
|
||||
expect(filter.getRight().getRight()).to.eql(100);
|
||||
expect(filter.getRight().getLeft().getName()).to.equal('number');
|
||||
expect(filter.getRight().getRight().getValue()).to.equal(100);
|
||||
done();
|
||||
});
|
||||
});
|
||||
@@ -101,8 +103,8 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
|
||||
afterLoadXml(url, function(xml) {
|
||||
var filter = parser.read(xml);
|
||||
expect(filter instanceof ol.expr.Comparison).to.be.ok();
|
||||
expect(filter.getLeft()).to.eql('prop');
|
||||
expect(filter.getRight()).to.eql(null);
|
||||
expect(filter.getLeft().getName()).to.equal('prop');
|
||||
expect(filter.getRight().getValue()).to.equal(null);
|
||||
var output = parser.write(filter);
|
||||
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
||||
done();
|
||||
@@ -114,7 +116,10 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
|
||||
afterLoadXml(url, function(xml) {
|
||||
var filter = new ol.expr.Call(
|
||||
new ol.expr.Identifier(ol.expr.functions.EXTENT),
|
||||
[-180, -90, 180, 90, 'EPSG:4326', 'the_geom']);
|
||||
[new ol.expr.Literal(-180), new ol.expr.Literal(-90),
|
||||
new ol.expr.Literal(180), new ol.expr.Literal(90),
|
||||
new ol.expr.Literal('EPSG:4326'),
|
||||
new ol.expr.Identifier('the_geom')]);
|
||||
var output = parser.write(filter);
|
||||
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
||||
done();
|
||||
@@ -126,7 +131,9 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
|
||||
afterLoadXml(url, function(xml) {
|
||||
var filter = new ol.expr.Call(
|
||||
new ol.expr.Identifier(ol.expr.functions.EXTENT),
|
||||
[-180, -90, 180, 90, 'EPSG:4326']);
|
||||
[new ol.expr.Literal(-180), new ol.expr.Literal(-90),
|
||||
new ol.expr.Literal(180), new ol.expr.Literal(90),
|
||||
new ol.expr.Literal('EPSG:4326')]);
|
||||
var output = parser.write(filter);
|
||||
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
||||
done();
|
||||
@@ -138,8 +145,9 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
|
||||
afterLoadXml(url, function(xml) {
|
||||
var filter = new ol.expr.Call(new ol.expr.Identifier(
|
||||
ol.expr.functions.DWITHIN),
|
||||
[new ol.geom.Point([2488789, 289552]), 1000, 'm', undefined,
|
||||
'Geometry']);
|
||||
[new ol.expr.Literal(new ol.geom.Point([2488789, 289552])),
|
||||
new ol.expr.Literal(1000), new ol.expr.Literal('m'),
|
||||
new ol.expr.Literal(null), new ol.expr.Identifier('Geometry')]);
|
||||
var output = parser.write(filter);
|
||||
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
||||
filter = parser.read(xml);
|
||||
@@ -160,9 +168,11 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
|
||||
afterLoadXml(url, function(xml) {
|
||||
var filter = new ol.expr.Logical(ol.expr.LogicalOp.OR,
|
||||
new ol.expr.Call(new ol.expr.Identifier(ol.expr.functions.LIKE),
|
||||
['person', 'me', '*', '.', '!']),
|
||||
[new ol.expr.Identifier('person'), new ol.expr.Literal('me'),
|
||||
new ol.expr.Literal('*'), new ol.expr.Literal('.'),
|
||||
new ol.expr.Literal('!')]),
|
||||
new ol.expr.Call(new ol.expr.Identifier(ol.expr.functions.FID),
|
||||
['foo.1', 'foo.2']));
|
||||
[new ol.expr.Literal('foo.1'), new ol.expr.Literal('foo.2')]));
|
||||
var output = parser.write(filter);
|
||||
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
||||
done();
|
||||
@@ -176,9 +186,11 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
|
||||
afterLoadXml(url, function(xml) {
|
||||
var filter = new ol.expr.Logical(ol.expr.LogicalOp.AND,
|
||||
new ol.expr.Call(new ol.expr.Identifier(ol.expr.functions.LIKE),
|
||||
['person', 'me', '*', '.', '!']),
|
||||
[new ol.expr.Identifier('person'), new ol.expr.Literal('me'),
|
||||
new ol.expr.Literal('*'), new ol.expr.Literal('.'),
|
||||
new ol.expr.Literal('!')]),
|
||||
new ol.expr.Call(new ol.expr.Identifier(ol.expr.functions.FID),
|
||||
['foo.1', 'foo.2']));
|
||||
[new ol.expr.Literal('foo.1'), new ol.expr.Literal('foo.2')]));
|
||||
var output = parser.write(filter);
|
||||
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
||||
done();
|
||||
@@ -192,7 +204,7 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
|
||||
afterLoadXml(url, function(xml) {
|
||||
var filter = new ol.expr.Not(
|
||||
new ol.expr.Call(new ol.expr.Identifier(ol.expr.functions.FID),
|
||||
['foo.2']));
|
||||
[new ol.expr.Literal('foo.2')]));
|
||||
var output = parser.write(filter);
|
||||
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
||||
done();
|
||||
@@ -211,8 +223,10 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
|
||||
// ISO 8601: 2011-12-27T18:19:15.123Z
|
||||
var end = new Date(Date.UTC(2011, 11, 27, 18, 19, 15, 123));
|
||||
var filter = new ol.expr.Logical(ol.expr.LogicalOp.AND,
|
||||
new ol.expr.Comparison(ol.expr.ComparisonOp.GTE, 'when', start),
|
||||
new ol.expr.Comparison(ol.expr.ComparisonOp.LTE, 'when', end));
|
||||
new ol.expr.Comparison(ol.expr.ComparisonOp.GTE,
|
||||
new ol.expr.Identifier('when'), new ol.expr.Literal(start)),
|
||||
new ol.expr.Comparison(ol.expr.ComparisonOp.LTE,
|
||||
new ol.expr.Identifier('when'), new ol.expr.Literal(end)));
|
||||
var output = parser.write(filter);
|
||||
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
||||
done();
|
||||
@@ -229,6 +243,7 @@ goog.require('ol.expr.Call');
|
||||
goog.require('ol.expr.Comparison');
|
||||
goog.require('ol.expr.ComparisonOp');
|
||||
goog.require('ol.expr.Identifier');
|
||||
goog.require('ol.expr.Literal');
|
||||
goog.require('ol.expr.Logical');
|
||||
goog.require('ol.expr.LogicalOp');
|
||||
goog.require('ol.expr.Not');
|
||||
|
||||
@@ -11,30 +11,36 @@ describe('ol.parser.ogc.Filter_v1_1_0', function() {
|
||||
afterLoadXml(url, function(xml) {
|
||||
var filter = parser.read(xml);
|
||||
expect(filter instanceof ol.expr.Logical).to.be(true);
|
||||
expect(filter.getOperator()).to.eql(ol.expr.LogicalOp.OR);
|
||||
expect(filter.getOperator()).to.equal(ol.expr.LogicalOp.OR);
|
||||
var filters = [];
|
||||
parser.getSubfiltersForLogical_(filter, filters);
|
||||
expect(filters.length).to.eql(5);
|
||||
expect(filters.length).to.equal(5);
|
||||
expect(filters[0]).to.eql(new ol.expr.Logical(ol.expr.LogicalOp.AND,
|
||||
new ol.expr.Comparison(
|
||||
ol.expr.ComparisonOp.GTE, 'number', 1064866676),
|
||||
ol.expr.ComparisonOp.GTE, new ol.expr.Identifier('number'),
|
||||
new ol.expr.Literal(1064866676)),
|
||||
new ol.expr.Comparison(
|
||||
ol.expr.ComparisonOp.LTE, 'number', 1065512599)));
|
||||
ol.expr.ComparisonOp.LTE, new ol.expr.Identifier('number'),
|
||||
new ol.expr.Literal(1065512599))));
|
||||
expect(filters[1]).to.eql(new ol.expr.Not(new ol.expr.Comparison(
|
||||
ol.expr.ComparisonOp.LTE, 'FOO', 5000)));
|
||||
ol.expr.ComparisonOp.LTE, new ol.expr.Identifier('FOO'),
|
||||
new ol.expr.Literal(5000))));
|
||||
expect(filters[2] instanceof ol.expr.Call).to.be(true);
|
||||
expect(filters[2].getCallee().getName()).to.eql(
|
||||
expect(filters[2].getCallee().getName()).to.equal(
|
||||
ol.expr.functions.LIKE);
|
||||
expect(filters[2].getArgs()).to.eql(['cat', '*dog.food!*good', '*',
|
||||
'.', '!', null]);
|
||||
expect(filters[2].getArgs()).to.eql([new ol.expr.Identifier('cat'),
|
||||
new ol.expr.Literal('*dog.food!*good'), new ol.expr.Literal('*'),
|
||||
new ol.expr.Literal('.'), new ol.expr.Literal('!'),
|
||||
new ol.expr.Literal(null)]);
|
||||
expect(filters[3] instanceof ol.expr.Call).to.be(true);
|
||||
expect(filters[3].getCallee().getName()).to.eql(
|
||||
expect(filters[3].getCallee().getName()).to.equal(
|
||||
ol.expr.functions.IEQ);
|
||||
expect(filters[3].getArgs()).to.eql(['cat', 'dog']);
|
||||
expect(filters[3].getArgs()).to.eql([new ol.expr.Identifier('cat'),
|
||||
new ol.expr.Literal('dog')]);
|
||||
expect(filters[4] instanceof ol.expr.Comparison).to.be(true);
|
||||
expect(filters[4].getOperator()).to.eql(ol.expr.ComparisonOp.EQ);
|
||||
expect(filters[4].getLeft()).to.eql('cat');
|
||||
expect(filters[4].getRight()).to.eql('dog');
|
||||
expect(filters[4].getOperator()).to.equal(ol.expr.ComparisonOp.EQ);
|
||||
expect(filters[4].getLeft().getName()).to.equal('cat');
|
||||
expect(filters[4].getRight().getValue()).to.equal('dog');
|
||||
done();
|
||||
});
|
||||
});
|
||||
@@ -109,7 +115,7 @@ describe('ol.parser.ogc.Filter_v1_1_0', function() {
|
||||
c = cases[i];
|
||||
filter = parser.read(c.str);
|
||||
var matchCase = (filter instanceof ol.expr.Call) ? false : true;
|
||||
expect(matchCase).to.eql(c.exp);
|
||||
expect(matchCase).to.equal(c.exp);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -149,8 +155,10 @@ describe('ol.parser.ogc.Filter_v1_1_0', function() {
|
||||
var filter = new ol.expr.Call(new ol.expr.Identifier(
|
||||
ol.expr.functions.INTERSECTS),
|
||||
[new ol.expr.Call(new ol.expr.Identifier('querySingle'),
|
||||
['sf:restricted', 'the_geom',
|
||||
'cat=3']), undefined, 'the_geom']);
|
||||
[new ol.expr.Literal('sf:restricted'),
|
||||
new ol.expr.Literal('the_geom'),
|
||||
new ol.expr.Literal('cat=3')]), new ol.expr.Literal(null),
|
||||
new ol.expr.Identifier('the_geom')]);
|
||||
var output = parser.write(filter);
|
||||
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
||||
done();
|
||||
@@ -162,8 +170,9 @@ describe('ol.parser.ogc.Filter_v1_1_0', function() {
|
||||
afterLoadXml(url, function(xml) {
|
||||
var filter = new ol.expr.Logical(ol.expr.LogicalOp.AND,
|
||||
new ol.expr.Call(new ol.expr.Identifier(ol.expr.functions.INEQ),
|
||||
['FOO', new ol.expr.Call(new ol.expr.Identifier('customFunction'),
|
||||
['param1', 'param2'])]));
|
||||
[new ol.expr.Identifier('FOO'), new ol.expr.Call(
|
||||
new ol.expr.Identifier('customFunction'),
|
||||
[new ol.expr.Literal('param1'), new ol.expr.Literal('param2')])]));
|
||||
var output = parser.write(filter);
|
||||
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
||||
done();
|
||||
@@ -177,8 +186,11 @@ describe('ol.parser.ogc.Filter_v1_1_0', function() {
|
||||
ol.expr.functions.DWITHIN),
|
||||
[new ol.expr.Call(new ol.expr.Identifier('collectGeometries'),
|
||||
[new ol.expr.Call(new ol.expr.Identifier('queryCollection'),
|
||||
['sf:roads', 'the_geom', 'INCLUDE'])]), 200, 'meters',
|
||||
undefined, 'the_geom']);
|
||||
[new ol.expr.Literal('sf:roads'),
|
||||
new ol.expr.Literal('the_geom'),
|
||||
new ol.expr.Literal('INCLUDE')])]), new ol.expr.Literal(200),
|
||||
new ol.expr.Literal('meters'),
|
||||
new ol.expr.Literal(null), new ol.expr.Identifier('the_geom')]);
|
||||
var output = parser.write(filter);
|
||||
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
||||
done();
|
||||
@@ -190,7 +202,9 @@ describe('ol.parser.ogc.Filter_v1_1_0', function() {
|
||||
afterLoadXml(url, function(xml) {
|
||||
var filter = new ol.expr.Call(
|
||||
new ol.expr.Identifier(ol.expr.functions.LIKE),
|
||||
['person', '*me*', '*', '.', '!', false]);
|
||||
[new ol.expr.Identifier('person'), new ol.expr.Literal('*me*'),
|
||||
new ol.expr.Literal('*'), new ol.expr.Literal('.'),
|
||||
new ol.expr.Literal('!'), new ol.expr.Literal(false)]);
|
||||
var output = parser.write(filter);
|
||||
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
||||
done();
|
||||
@@ -202,11 +216,11 @@ describe('ol.parser.ogc.Filter_v1_1_0', function() {
|
||||
afterLoadXml(url, function(xml) {
|
||||
var writer = parser.writers['http://www.opengis.net/ogc']['SortBy'];
|
||||
var output = writer.call(parser, [{
|
||||
'property': 'Title',
|
||||
'order': 'ASC'
|
||||
'property': new ol.expr.Identifier('Title'),
|
||||
'order': new ol.expr.Literal('ASC')
|
||||
},{
|
||||
'property': 'Relevance',
|
||||
'order': 'DESC'
|
||||
'property': new ol.expr.Identifier('Relevance'),
|
||||
'order': new ol.expr.Literal('DESC')
|
||||
}]);
|
||||
expect(output).to.xmleql(xml);
|
||||
done();
|
||||
@@ -223,6 +237,7 @@ goog.require('ol.expr.Call');
|
||||
goog.require('ol.expr.Comparison');
|
||||
goog.require('ol.expr.ComparisonOp');
|
||||
goog.require('ol.expr.Identifier');
|
||||
goog.require('ol.expr.Literal');
|
||||
goog.require('ol.expr.Logical');
|
||||
goog.require('ol.expr.LogicalOp');
|
||||
goog.require('ol.expr.Not');
|
||||
|
||||
Reference in New Issue
Block a user