~mortenoh/+junk/dhis2-detailed-import-export

« back to all changes in this revision

Viewing changes to gis/dhis-gis-geostat/mfbase/openlayers/tests/Format/SLD/v1_0_0.html

  • Committer: larshelge at gmail
  • Date: 2009-03-03 16:46:36 UTC
  • Revision ID: larshelge@gmail.com-20090303164636-2sjlrquo7ib1gf7r
Initial check-in

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<html> 
 
2
<head> 
 
3
    <script src="../../../lib/OpenLayers.js"></script>
 
4
    <script type="text/javascript">
 
5
    
 
6
    var sld =
 
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">' +
 
14
            '<NamedLayer>' + 
 
15
                '<Name>AAA161</Name>' + 
 
16
                '<UserStyle>' + 
 
17
                    '<FeatureTypeStyle>' + 
 
18
                        '<Rule>' + 
 
19
                            '<Name>stortsteen</Name>' + 
 
20
                            '<ogc:Filter>' +
 
21
                                '<ogc:PropertyIsEqualTo>' +
 
22
                                    '<ogc:PropertyName>CTE</ogc:PropertyName>' +
 
23
                                    '<ogc:Literal>V0305</ogc:Literal>' +
 
24
                                '</ogc:PropertyIsEqualTo>' +
 
25
                            '</ogc:Filter>' + 
 
26
                            '<MaxScaleDenominator>50000</MaxScaleDenominator>' + 
 
27
                            '<PolygonSymbolizer>' + 
 
28
                                '<Fill>' + 
 
29
                                    '<CssParameter name="fill">#ffffff</CssParameter>' + 
 
30
                                '</Fill>' + 
 
31
                                '<Stroke>' + 
 
32
                                    '<CssParameter name="stroke">#000000</CssParameter>' + 
 
33
                                '</Stroke>' + 
 
34
                            '</PolygonSymbolizer>' + 
 
35
                        '</Rule>' + 
 
36
                        '<Rule>' + 
 
37
                            '<Name>betonbekleding</Name>' + 
 
38
                            '<ogc:Filter>' +
 
39
                                '<ogc:PropertyIsLessThan>' +
 
40
                                    '<ogc:PropertyName>CTE</ogc:PropertyName>' +
 
41
                                    '<ogc:Literal>1000</ogc:Literal>' +
 
42
                                '</ogc:PropertyIsLessThan>' +
 
43
                            '</ogc:Filter>' + 
 
44
                            '<MaxScaleDenominator>50000</MaxScaleDenominator>' + 
 
45
                            '<PolygonSymbolizer>' + 
 
46
                                '<Fill>' + 
 
47
                                    '<CssParameter name="fill">#ffff00</CssParameter>' + 
 
48
                                '</Fill>' + 
 
49
                                '<Stroke>' + 
 
50
                                    '<CssParameter name="stroke">#0000ff</CssParameter>' + 
 
51
                                '</Stroke>' + 
 
52
                            '</PolygonSymbolizer>' + 
 
53
                        '</Rule>' + 
 
54
                    '</FeatureTypeStyle>' + 
 
55
                '</UserStyle>' + 
 
56
            '</NamedLayer>' + 
 
57
            '<NamedLayer>' + 
 
58
                '<Name>Second Layer</Name>' + 
 
59
                '<UserStyle>' + 
 
60
                    '<FeatureTypeStyle>' + 
 
61
                        '<Rule>' + 
 
62
                            '<Name>first rule second layer</Name>' + 
 
63
                            '<ogc:Filter>' +
 
64
                                '<ogc:Or>' +
 
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>' +
 
78
                                    '<ogc:Not>' +
 
79
                                        '<ogc:PropertyIsLessThanOrEqualTo>' +
 
80
                                            '<ogc:PropertyName>FOO</ogc:PropertyName>' +
 
81
                                            '<ogc:Literal>5000</ogc:Literal>' +
 
82
                                        '</ogc:PropertyIsLessThanOrEqualTo>' +
 
83
                                    '</ogc:Not>' +
 
84
                                '</ogc:Or>' +
 
85
                            '</ogc:Filter>' + 
 
86
                            '<MaxScaleDenominator>10000</MaxScaleDenominator>' + 
 
87
                            '<PointSymbolizer>' +
 
88
                                '<Graphic>' +
 
89
                                    '<Mark>' +
 
90
                                        '<WellKnownName>star</WellKnownName>' +
 
91
                                        '<Fill>' + 
 
92
                                            '<CssParameter name="fill">lime</CssParameter>' + 
 
93
                                        '</Fill>' + 
 
94
                                        '<Stroke>' + 
 
95
                                            '<CssParameter name="stroke">olive</CssParameter>' + 
 
96
                                            '<CssParameter name="stroke-width">2</CssParameter>' +
 
97
                                        '</Stroke>' + 
 
98
                                    '</Mark>' + 
 
99
                                '</Graphic>' +
 
100
                            '</PointSymbolizer>' +
 
101
                        '</Rule>' + 
 
102
                    '</FeatureTypeStyle>' + 
 
103
                '</UserStyle>' + 
 
104
            '</NamedLayer>' +
 
105
        '</StyledLayerDescriptor>';
 
106
 
 
107
    function test_read(t) {
 
108
        t.plan(6);
 
109
        
 
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));
 
113
        
 
114
        // test the named layer count
 
115
        var count = 0;
 
116
        for(var key in obj.namedLayers) {
 
117
            ++count;
 
118
        }        
 
119
        t.eq(count, 2, "correct number of named layers");
 
120
        
 
121
        var layer, style, rule;
 
122
        
 
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");
 
128
        
 
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");
 
133
        
 
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.        
 
137
 
 
138
    }
 
139
    
 
140
    function test_write(t) {
 
141
        t.plan(1);
 
142
 
 
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));
 
147
        
 
148
        var node = parser.write(obj);
 
149
        t.xml_eq(node, sld, "SLD correctly written");
 
150
        
 
151
    }
 
152
    
 
153
    function test_writeTextSymbolizer(t) {
 
154
        t.plan(1);
 
155
        var parser = new OpenLayers.Format.SLD.v1_0_0();
 
156
        var symbolizer = {
 
157
            "Text": {
 
158
                "label": "This is the ${city} in ${state}.",
 
159
                "fontFamily": "Arial",
 
160
                "fontSize": 10,
 
161
                "fillColor": "blue"
 
162
            }
 
163
        };
 
164
        var node = parser.writers["sld"]["TextSymbolizer"].apply(
 
165
            parser, [symbolizer["Text"]]
 
166
        );
 
167
        
 
168
        var expected =
 
169
            '<TextSymbolizer xmlns="http://www.opengis.net/sld">' +
 
170
                '<Label>' +
 
171
                    'This is the ' +
 
172
                    '<ogc:PropertyName xmlns:ogc="http://www.opengis.net/ogc">city</ogc:PropertyName>' +
 
173
                    ' in ' +
 
174
                    '<ogc:PropertyName xmlns:ogc="http://www.opengis.net/ogc">state</ogc:PropertyName>' +
 
175
                    '.' +
 
176
                '</Label>' +
 
177
                '<Font>' +
 
178
                    '<CssParameter name="font-family">Arial</CssParameter>' +
 
179
                    '<CssParameter name="font-size">10</CssParameter>' +
 
180
                '</Font>' +
 
181
                '<Fill>' +
 
182
                    '<CssParameter name="fill">blue</CssParameter>' +
 
183
                '</Fill>' + 
 
184
            '</TextSymbolizer>';
 
185
        
 
186
        t.xml_eq(node, expected, "TextSymbolizer correctly written");
 
187
        
 
188
    }
 
189
 
 
190
    </script> 
 
191
</head> 
 
192
<body>
 
193
</body> 
 
194
</html>