Add a separate test case for write
This commit is contained in:
committed by
Bart van den Eijnden
parent
91e834674c
commit
429a2e455b
@@ -1,6 +1,5 @@
|
||||
goog.provide('ol.parser.ogc.SLD');
|
||||
goog.require('ol.parser.ogc.SLD_v1_0_0');
|
||||
goog.require('ol.parser.ogc.SLD_v1_0_0_GeoServer');
|
||||
goog.require('ol.parser.ogc.Versioned');
|
||||
|
||||
|
||||
@@ -10,13 +9,6 @@ goog.require('ol.parser.ogc.Versioned');
|
||||
ol.ENABLE_SLD_1_0_0 = true;
|
||||
|
||||
|
||||
/**
|
||||
* @define {boolean} Whether to enable SLD version 1.0.0.
|
||||
* GeoServer profile.
|
||||
*/
|
||||
ol.ENABLE_SLD_1_0_0_GEOSERVER = true;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
@@ -30,9 +22,6 @@ ol.parser.ogc.SLD = function(opt_options) {
|
||||
if (ol.ENABLE_SLD_1_0_0) {
|
||||
this.parsers['v1_0_0'] = ol.parser.ogc.SLD_v1_0_0;
|
||||
}
|
||||
if (ol.ENABLE_SLD_1_0_0_GEOSERVER) {
|
||||
this.parsers['v1_0_0_GEOSERVER'] = ol.parser.ogc.SLD_v1_0_0_GeoServer;
|
||||
}
|
||||
goog.base(this, opt_options);
|
||||
};
|
||||
goog.inherits(ol.parser.ogc.SLD, ol.parser.ogc.Versioned);
|
||||
|
||||
@@ -84,7 +84,8 @@ ol.parser.ogc.SLD_v1 = function() {
|
||||
'TextSymbolizer': function(node, rule) {
|
||||
var config = {};
|
||||
this.readChildNodes(node, config);
|
||||
config.color = config.fill.fillColor;
|
||||
config.color = goog.isDef(config.fill) ? config.fill.fillColor :
|
||||
ol.parser.ogc.SLD_v1.defaults_.fontColor;
|
||||
delete config.fill;
|
||||
config.zIndex = this.featureTypeCounter;
|
||||
rule.symbolizers.push(
|
||||
@@ -639,7 +640,8 @@ ol.parser.ogc.SLD_v1.defaults_ = {
|
||||
haloColor: '#FFFFFF',
|
||||
haloOpacity: 1,
|
||||
haloRadius: 1,
|
||||
fillColor: '#808080'
|
||||
fillColor: '#808080',
|
||||
fontColor: '#000000'
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
goog.provide('ol.parser.ogc.SLD_v1_0_0_GeoServer');
|
||||
|
||||
goog.require('goog.functions');
|
||||
goog.require('goog.object');
|
||||
goog.require('ol.parser.ogc.SLD_v1_0_0');
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends {ol.parser.ogc.SLD_v1_0_0}
|
||||
*/
|
||||
ol.parser.ogc.SLD_v1_0_0_GeoServer = function() {
|
||||
goog.base(this);
|
||||
this.profile = 'GeoServer';
|
||||
goog.object.extend(this.readers['http://www.opengis.net/sld'], {
|
||||
'Priority': function(node, obj) {
|
||||
var ogcreaders = this.readers['http://www.opengis.net/ogc'];
|
||||
var value = ogcreaders._expression.call(this, node);
|
||||
if (value) {
|
||||
obj.priority = value;
|
||||
}
|
||||
},
|
||||
'VendorOption': function(node, obj) {
|
||||
if (!goog.isDef(obj.vendorOptions)) {
|
||||
obj.vendorOptions = {};
|
||||
}
|
||||
obj.vendorOptions[node.getAttribute('name')] =
|
||||
this.getChildValue(node);
|
||||
},
|
||||
'TextSymbolizer': goog.functions.sequence(
|
||||
this.readers['http://www.opengis.net/sld']['TextSymbolizer'],
|
||||
function(node, rule) {
|
||||
var symbolizer = rule.symbolizers[rule.symbolizers.length - 1];
|
||||
if (!goog.isDef(symbolizer.graphic)) {
|
||||
symbolizer.graphic = false;
|
||||
}
|
||||
}
|
||||
)
|
||||
});
|
||||
};
|
||||
goog.inherits(ol.parser.ogc.SLD_v1_0_0_GeoServer,
|
||||
ol.parser.ogc.SLD_v1_0_0);
|
||||
@@ -4,12 +4,13 @@ goog.provide('ol.test.parser.ogc.SLD_v1_0_0');
|
||||
describe('ol.parser.ogc.SLD_v1_0_0', function() {
|
||||
|
||||
var parser = new ol.parser.ogc.SLD();
|
||||
var obj;
|
||||
|
||||
describe('reading and writing', function() {
|
||||
it('Handles reading', function(done) {
|
||||
var url = 'spec/ol/parser/ogc/xml/sld_v1_0_0.xml';
|
||||
afterLoadXml(url, function(xml) {
|
||||
var obj = parser.read(xml);
|
||||
obj = parser.read(xml);
|
||||
expect(obj.version).to.equal('1.0.0');
|
||||
var style = obj.namedLayers['AAA161'].userStyles[0];
|
||||
expect(style).to.be.a(ol.style.Style);
|
||||
@@ -50,13 +51,23 @@ describe('ol.parser.ogc.SLD_v1_0_0', function() {
|
||||
'#000000');
|
||||
expect(first.getSymbolizers()[2].getFontFamily().getValue()).to.equal(
|
||||
'Arial');
|
||||
// TODO add tests for haloRadius and haloColor
|
||||
expect(first.getSymbolizers()[2].getStroke()).to.be.a(ol.style.Stroke);
|
||||
expect(first.getSymbolizers()[2].getStroke().getColor().getValue())
|
||||
.to.equal('#ffffff');
|
||||
expect(first.getSymbolizers()[2].getStroke().getWidth().getValue())
|
||||
.to.equal(6);
|
||||
var second = style.rules_[1];
|
||||
expect(second.filter_).to.be.a(ol.expr.Comparison);
|
||||
expect(second.getSymbolizers().length).to.equal(2);
|
||||
expect(second.getSymbolizers()[0]).to.be.a(ol.style.Fill);
|
||||
expect(second.getSymbolizers()[1]).to.be.a(ol.style.Stroke);
|
||||
window.console.log(parser.write(obj));
|
||||
done();
|
||||
});
|
||||
});
|
||||
it('Handles write', function(done) {
|
||||
var url = 'spec/ol/parser/ogc/xml/sld_v1_0_0_write.xml';
|
||||
afterLoadXml(url, function(xml) {
|
||||
expect(goog.dom.xml.loadXml(parser.write(obj))).to.xmleql(xml);
|
||||
done();
|
||||
});
|
||||
});
|
||||
@@ -64,7 +75,7 @@ describe('ol.parser.ogc.SLD_v1_0_0', function() {
|
||||
|
||||
});
|
||||
|
||||
goog.require('goog.net.XhrIo');
|
||||
goog.require('goog.dom.xml');
|
||||
goog.require('ol.parser.ogc.SLD_v1_0_0');
|
||||
goog.require('ol.parser.ogc.SLD');
|
||||
goog.require('ol.expr.Call');
|
||||
|
||||
133
test/spec/ol/parser/ogc/xml/sld_v1_0_0_write.xml
Normal file
133
test/spec/ol/parser/ogc/xml/sld_v1_0_0_write.xml
Normal file
@@ -0,0 +1,133 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<sld:StyledLayerDescriptor xmlns:sld="http://www.opengis.net/sld" version="1.0.0"
|
||||
xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<sld:NamedLayer>
|
||||
<sld:Name>AAA161</sld:Name>
|
||||
<sld:UserStyle>
|
||||
<sld:FeatureTypeStyle>
|
||||
<sld:Rule>
|
||||
<sld:Name>stortsteen</sld:Name>
|
||||
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
|
||||
<ogc:PropertyIsEqualTo>
|
||||
<ogc:PropertyName>CTE</ogc:PropertyName>
|
||||
<ogc:Literal>V0305</ogc:Literal>
|
||||
</ogc:PropertyIsEqualTo>
|
||||
</ogc:Filter>
|
||||
<sld:MaxScaleDenominator>49999.99999999999</sld:MaxScaleDenominator>
|
||||
<sld:PolygonSymbolizer>
|
||||
<sld:Fill>
|
||||
<sld:CssParameter name="fill">#ffffff</sld:CssParameter>
|
||||
<sld:CssParameter name="fill-opacity">1</sld:CssParameter>
|
||||
</sld:Fill>
|
||||
</sld:PolygonSymbolizer>
|
||||
<sld:LineSymbolizer>
|
||||
<sld:Stroke>
|
||||
<sld:CssParameter name="stroke">#000000</sld:CssParameter>
|
||||
<sld:CssParameter name="stroke-opacity">1</sld:CssParameter>
|
||||
<sld:CssParameter name="stroke-width">1</sld:CssParameter>
|
||||
</sld:Stroke>
|
||||
</sld:LineSymbolizer>
|
||||
<sld:TextSymbolizer>
|
||||
<sld:Label><ogc:Literal xmlns:ogc="http://www.opengis.net/ogc"
|
||||
>A</ogc:Literal><ogc:PropertyName
|
||||
xmlns:ogc="http://www.opengis.net/ogc"
|
||||
>FOO</ogc:PropertyName><ogc:Literal
|
||||
xmlns:ogc="http://www.opengis.net/ogc"
|
||||
>label</ogc:Literal></sld:Label>
|
||||
<sld:Font>
|
||||
<sld:CssParameter name="font-family">Arial</sld:CssParameter>
|
||||
<sld:CssParameter name="font-size">14</sld:CssParameter>
|
||||
</sld:Font>
|
||||
<sld:Halo>
|
||||
<sld:Radius>3</sld:Radius>
|
||||
<sld:Fill>
|
||||
<sld:CssParameter name="fill">#ffffff</sld:CssParameter>
|
||||
<sld:CssParameter name="fill-opacity">1</sld:CssParameter>
|
||||
</sld:Fill>
|
||||
</sld:Halo>
|
||||
<sld:Fill>
|
||||
<sld:CssParameter name="fill">#000000</sld:CssParameter>
|
||||
<sld:CssParameter name="fill-opacity">1</sld:CssParameter>
|
||||
</sld:Fill>
|
||||
</sld:TextSymbolizer>
|
||||
</sld:Rule>
|
||||
<sld:Rule>
|
||||
<sld:Name>betonbekleding</sld:Name>
|
||||
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
|
||||
<ogc:PropertyIsLessThan>
|
||||
<ogc:PropertyName>CTE</ogc:PropertyName>
|
||||
<ogc:Literal>1000</ogc:Literal>
|
||||
</ogc:PropertyIsLessThan>
|
||||
</ogc:Filter>
|
||||
<sld:MaxScaleDenominator>49999.99999999999</sld:MaxScaleDenominator>
|
||||
<sld:PolygonSymbolizer>
|
||||
<sld:Fill>
|
||||
<sld:CssParameter name="fill">#ffff00</sld:CssParameter>
|
||||
<sld:CssParameter name="fill-opacity">1</sld:CssParameter>
|
||||
</sld:Fill>
|
||||
</sld:PolygonSymbolizer>
|
||||
<sld:LineSymbolizer>
|
||||
<sld:Stroke>
|
||||
<sld:CssParameter name="stroke">#0000ff</sld:CssParameter>
|
||||
<sld:CssParameter name="stroke-opacity">1</sld:CssParameter>
|
||||
<sld:CssParameter name="stroke-width">1</sld:CssParameter>
|
||||
</sld:Stroke>
|
||||
</sld:LineSymbolizer>
|
||||
</sld:Rule>
|
||||
</sld:FeatureTypeStyle>
|
||||
</sld:UserStyle>
|
||||
</sld:NamedLayer>
|
||||
<sld:NamedLayer>
|
||||
<sld:Name>Second Layer</sld:Name>
|
||||
<sld:UserStyle>
|
||||
<sld:FeatureTypeStyle>
|
||||
<sld:Rule>
|
||||
<sld:Name>first rule second layer</sld:Name>
|
||||
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
|
||||
<ogc:Or>
|
||||
<ogc:Not>
|
||||
<ogc:PropertyIsLessThanOrEqualTo>
|
||||
<ogc:PropertyName>FOO</ogc:PropertyName>
|
||||
<ogc:Literal>5000</ogc:Literal>
|
||||
</ogc:PropertyIsLessThanOrEqualTo>
|
||||
</ogc:Not>
|
||||
<ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
|
||||
<ogc:PropertyName>cat</ogc:PropertyName>
|
||||
<ogc:Literal>*dog.food!*good</ogc:Literal>
|
||||
</ogc:PropertyIsLike>
|
||||
<ogc:PropertyIsBetween>
|
||||
<ogc:PropertyName>number</ogc:PropertyName>
|
||||
<ogc:LowerBoundary>
|
||||
<ogc:Literal>1064866676</ogc:Literal>
|
||||
</ogc:LowerBoundary>
|
||||
<ogc:UpperBoundary>
|
||||
<ogc:Literal>1065512599</ogc:Literal>
|
||||
</ogc:UpperBoundary>
|
||||
</ogc:PropertyIsBetween>
|
||||
</ogc:Or>
|
||||
</ogc:Filter>
|
||||
<sld:MaxScaleDenominator>10000</sld:MaxScaleDenominator>
|
||||
<sld:PointSymbolizer>
|
||||
<sld:Graphic>
|
||||
<sld:Mark>
|
||||
<sld:WellKnownName>star</sld:WellKnownName>
|
||||
<sld:Fill>
|
||||
<sld:CssParameter name="fill">lime</sld:CssParameter>
|
||||
<sld:CssParameter name="fill-opacity">1</sld:CssParameter>
|
||||
</sld:Fill>
|
||||
<sld:Stroke>
|
||||
<sld:CssParameter name="stroke">olive</sld:CssParameter>
|
||||
<sld:CssParameter name="stroke-opacity">1</sld:CssParameter>
|
||||
<sld:CssParameter name="stroke-width">2</sld:CssParameter>
|
||||
</sld:Stroke>
|
||||
</sld:Mark>
|
||||
<sld:Size><ogc:PropertyName xmlns:ogc="http://www.opengis.net/ogc"
|
||||
>SIZE</ogc:PropertyName></sld:Size>
|
||||
</sld:Graphic>
|
||||
</sld:PointSymbolizer>
|
||||
</sld:Rule>
|
||||
</sld:FeatureTypeStyle>
|
||||
</sld:UserStyle>
|
||||
</sld:NamedLayer>
|
||||
</sld:StyledLayerDescriptor>
|
||||
Reference in New Issue
Block a user