3
<script src="../../../lib/OpenLayers.js"></script>
4
<script type="text/javascript">
7
'<StyledLayerDescriptor version="1.0.0" ' +
8
'xmlns="http://www.opengis.net/sld" ' +
9
'xmlns:gml="http://www.opengis.net/gml" ' +
10
'xmlns:ogc="http://www.opengis.net/ogc" ' +
11
'xmlns:xlink="http://www.w3.org/1999/xlink" ' +
12
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
13
'xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">' +
15
'<Name>AAA161</Name>' +
17
'<FeatureTypeStyle>' +
19
'<Name>stortsteen</Name>' +
21
'<ogc:PropertyIsEqualTo>' +
22
'<ogc:PropertyName>CTE</ogc:PropertyName>' +
23
'<ogc:Literal>V0305</ogc:Literal>' +
24
'</ogc:PropertyIsEqualTo>' +
26
'<MaxScaleDenominator>50000</MaxScaleDenominator>' +
27
'<PolygonSymbolizer>' +
29
'<CssParameter name="fill">#ffffff</CssParameter>' +
32
'<CssParameter name="stroke">#000000</CssParameter>' +
34
'</PolygonSymbolizer>' +
37
'<Name>betonbekleding</Name>' +
39
'<ogc:PropertyIsLessThan>' +
40
'<ogc:PropertyName>CTE</ogc:PropertyName>' +
41
'<ogc:Literal>1000</ogc:Literal>' +
42
'</ogc:PropertyIsLessThan>' +
44
'<MaxScaleDenominator>50000</MaxScaleDenominator>' +
45
'<PolygonSymbolizer>' +
47
'<CssParameter name="fill">#ffff00</CssParameter>' +
50
'<CssParameter name="stroke">#0000ff</CssParameter>' +
52
'</PolygonSymbolizer>' +
54
'</FeatureTypeStyle>' +
58
'<Name>Second Layer</Name>' +
60
'<FeatureTypeStyle>' +
62
'<Name>first rule second layer</Name>' +
65
'<ogc:PropertyIsBetween>' +
66
'<ogc:PropertyName>number</ogc:PropertyName>' +
67
'<ogc:LowerBoundary>' +
68
'<ogc:Literal>1064866676</ogc:Literal>' +
69
'</ogc:LowerBoundary>' +
70
'<ogc:UpperBoundary>' +
71
'<ogc:Literal>1065512599</ogc:Literal>' +
72
'</ogc:UpperBoundary>' +
73
'</ogc:PropertyIsBetween>' +
74
'<ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">' +
75
'<ogc:PropertyName>cat</ogc:PropertyName>' +
76
'<ogc:Literal>*dog.food!*good</ogc:Literal>' +
77
'</ogc:PropertyIsLike>' +
79
'<ogc:PropertyIsLessThanOrEqualTo>' +
80
'<ogc:PropertyName>FOO</ogc:PropertyName>' +
81
'<ogc:Literal>5000</ogc:Literal>' +
82
'</ogc:PropertyIsLessThanOrEqualTo>' +
86
'<MaxScaleDenominator>10000</MaxScaleDenominator>' +
90
'<WellKnownName>star</WellKnownName>' +
92
'<CssParameter name="fill">lime</CssParameter>' +
95
'<CssParameter name="stroke">olive</CssParameter>' +
96
'<CssParameter name="stroke-width">2</CssParameter>' +
100
'</PointSymbolizer>' +
102
'</FeatureTypeStyle>' +
105
'</StyledLayerDescriptor>';
107
function test_read(t) {
110
var parser = new OpenLayers.Format.SLD.v1_0_0();
111
var xml = new OpenLayers.Format.XML();
112
var obj = parser.read(xml.read(sld));
114
// test the named layer count
116
for(var key in obj.namedLayers) {
119
t.eq(count, 2, "correct number of named layers");
121
var layer, style, rule;
123
// check the first named layer
124
layer = obj.namedLayers["AAA161"];
125
t.ok(layer, "first named layer exists");
126
t.ok(layer.userStyles instanceof Array, "(AAA161) layer has array of user styles");
127
t.eq(layer.userStyles.length, 1, "(AAA161) first layer has a single user style");
129
// check the first user style
130
style = layer.userStyles[0];
131
t.ok(style instanceof OpenLayers.Style, "(AAA161,0) user style is instance of OpenLayers.Style");
132
t.eq(style.rules.length, 2, "(AAA161,0) user style has 2 rules");
134
// check the first rule
135
// etc. I'm convinced read works, really wanted to test write (since examples don't test that)
136
// I'll add more tests here later.
140
function test_write(t) {
143
// read first - testing that write produces the SLD aboce
144
var parser = new OpenLayers.Format.SLD.v1_0_0();
145
var xml = new OpenLayers.Format.XML();
146
var obj = parser.read(xml.read(sld));
148
var node = parser.write(obj);
149
t.xml_eq(node, sld, "SLD correctly written");
153
function test_writeTextSymbolizer(t) {
155
var parser = new OpenLayers.Format.SLD.v1_0_0();
158
"label": "This is the ${city} in ${state}.",
159
"fontFamily": "Arial",
164
var node = parser.writers["sld"]["TextSymbolizer"].apply(
165
parser, [symbolizer["Text"]]
169
'<TextSymbolizer xmlns="http://www.opengis.net/sld">' +
172
'<ogc:PropertyName xmlns:ogc="http://www.opengis.net/ogc">city</ogc:PropertyName>' +
174
'<ogc:PropertyName xmlns:ogc="http://www.opengis.net/ogc">state</ogc:PropertyName>' +
178
'<CssParameter name="font-family">Arial</CssParameter>' +
179
'<CssParameter name="font-size">10</CssParameter>' +
182
'<CssParameter name="fill">blue</CssParameter>' +
186
t.xml_eq(node, expected, "TextSymbolizer correctly written");