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
+1 -1
View File
@@ -39,7 +39,7 @@ ol.parser.ogc.Filter_v1 = function() {
if (obj.property) { if (obj.property) {
expressions.push(obj.property); expressions.push(obj.property);
} else if (goog.isDef(obj.value)) { } else if (goog.isDef(obj.value)) {
return obj.value; expressions.push(obj.value);
} }
break; break;
case 3: // text node case 3: // text node
+26 -15
View File
@@ -235,21 +235,32 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
}); });
describe('_expression reader', function() { describe('_expression reader', function() {
it('handles combined propertyname and literal', it('handles combined propertyname and text', function() {
function() { var xml = '<ogc:UpperBoundary xmlns:ogc="' +
var xml = '<ogc:UpperBoundary xmlns:ogc="' + 'http://www.opengis.net/ogc">10</ogc:UpperBoundary>';
'http://www.opengis.net/ogc">10</ogc:UpperBoundary>'; var reader = parser.readers['http://www.opengis.net/ogc'][
var reader = parser.readers['http://www.opengis.net/ogc'][ '_expression'];
'_expression']; var expr = reader.call(parser, goog.dom.xml.loadXml(
var expr = reader.call(parser, goog.dom.xml.loadXml( xml).documentElement);
xml).documentElement); expect(expr).to.be.a(ol.expr.Literal);
expect(expr).to.be.a(ol.expr.Literal); expect(expr.getValue()).to.equal(10);
expect(expr.getValue()).to.equal(10); xml = '<ogc:UpperBoundary xmlns:ogc="http://www.opengis.net/ogc">' +
xml = '<ogc:UpperBoundary xmlns:ogc="http://www.opengis.net/ogc">' + 'foo<ogc:PropertyName>x</ogc:PropertyName>bar</ogc:UpperBoundary>';
'foo<ogc:PropertyName>x</ogc:PropertyName>bar</ogc:UpperBoundary>'; expr = reader.call(parser, goog.dom.xml.loadXml(xml).documentElement);
expr = reader.call(parser, goog.dom.xml.loadXml(xml).documentElement); expect(expr.evaluate({x: 4})).to.eql('foo4bar');
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');
});
}); });
}); });