Parse literal nodes in expressions in addition to text nodes

This commit is contained in:
Tim Schaub
2013-08-15 14:32:47 -04:00
parent a12d41b1bc
commit 183b51a1c0
2 changed files with 27 additions and 16 deletions

View File

@@ -39,7 +39,7 @@ ol.parser.ogc.Filter_v1 = function() {
if (obj.property) {
expressions.push(obj.property);
} else if (goog.isDef(obj.value)) {
return obj.value;
expressions.push(obj.value);
}
break;
case 3: // text node

View File

@@ -235,21 +235,32 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
});
describe('_expression reader', function() {
it('handles combined propertyname and literal',
function() {
var xml = '<ogc:UpperBoundary xmlns:ogc="' +
'http://www.opengis.net/ogc">10</ogc:UpperBoundary>';
var reader = parser.readers['http://www.opengis.net/ogc'][
'_expression'];
var expr = reader.call(parser, goog.dom.xml.loadXml(
xml).documentElement);
expect(expr).to.be.a(ol.expr.Literal);
expect(expr.getValue()).to.equal(10);
xml = '<ogc:UpperBoundary xmlns:ogc="http://www.opengis.net/ogc">' +
'foo<ogc:PropertyName>x</ogc:PropertyName>bar</ogc:UpperBoundary>';
expr = reader.call(parser, goog.dom.xml.loadXml(xml).documentElement);
expect(expr.evaluate({x: 4})).to.eql('foo4bar');
});
it('handles combined propertyname and text', function() {
var xml = '<ogc:UpperBoundary xmlns:ogc="' +
'http://www.opengis.net/ogc">10</ogc:UpperBoundary>';
var reader = parser.readers['http://www.opengis.net/ogc'][
'_expression'];
var expr = reader.call(parser, goog.dom.xml.loadXml(
xml).documentElement);
expect(expr).to.be.a(ol.expr.Literal);
expect(expr.getValue()).to.equal(10);
xml = '<ogc:UpperBoundary xmlns:ogc="http://www.opengis.net/ogc">' +
'foo<ogc:PropertyName>x</ogc:PropertyName>bar</ogc:UpperBoundary>';
expr = reader.call(parser, goog.dom.xml.loadXml(xml).documentElement);
expect(expr.evaluate({x: 4})).to.eql('foo4bar');
});
it('handles combined propertyname and literal', function() {
var reader = parser.readers['http://www.opengis.net/ogc'][
'_expression'];
var xml = '<ogc:UpperBoundary xmlns:ogc="http://www.opengis.net/ogc">' +
'<ogc:Literal>bar</ogc:Literal>' +
'<ogc:PropertyName>x</ogc:PropertyName>' +
'<ogc:Literal>foo</ogc:Literal></ogc:UpperBoundary>';
var expr = reader.call(parser, goog.dom.xml.loadXml(xml).documentElement);
expect(expr.evaluate({x: 42})).to.eql('bar42foo');
});
});
});