File: Spatial.html

package info (click to toggle)
openlayers 2.13.1%2Bds2-4
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 67,180 kB
  • ctags: 11,977
  • sloc: xml: 7,435; python: 891; sh: 44; makefile: 23
file content (112 lines) | stat: -rw-r--r-- 3,574 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<html> 
<head> 
    <script src="../OLLoader.js"></script> 
    <script type="text/javascript">

    function test_constructor(t) { 
        t.plan(3); 
         
        var options = {'foo': 'bar'}; 
        var filter = new OpenLayers.Filter.Spatial(options); 
        t.ok(filter instanceof OpenLayers.Filter.Spatial, 
             "new OpenLayers.Filter.Spatial returns object" ); 
        t.eq(filter.foo, "bar", "constructor sets options correctly"); 
        t.eq(typeof filter.evaluate, "function", "filter has an evaluate function"); 
    }

    function test_destroy(t) {
        t.plan(1);
        
        var filter = new OpenLayers.Filter.Spatial();
        filter.destroy();
        t.eq(filter.symbolizer, null, "symbolizer hash nulled properly");
    }
    
    function test_evaluate(t) {
        t.plan(8);
        
        var filer, feature, res, geom, bounds;

        bounds = new OpenLayers.Bounds(0, 0, 10, 10);
        filter = new OpenLayers.Filter.Spatial({
            type: OpenLayers.Filter.Spatial.BBOX,
            value: bounds
        });

        var not = new OpenLayers.Filter.Logical({
            type: OpenLayers.Filter.Logical.NOT,
            filters: [filter]
        });

        feature = new OpenLayers.Feature.Vector(
            new OpenLayers.Geometry.Point(2, 2));
        res = filter.evaluate(feature);
        t.eq(res, true,
            "evaluates returns correct value when feature intersects bounds");
        t.eq(not.evaluate(feature), !res, "not bbox");
        
        feature = new OpenLayers.Feature.Vector(
            new OpenLayers.Geometry.Point(20, 20));
        res = filter.evaluate(feature);
        t.eq(res, false,
            "evaluates returns correct value when feature does not intersect bounds");
        t.eq(not.evaluate(feature), !res, "not outside bbox");

        geom = bounds.toGeometry();
        feature = new OpenLayers.Feature.Vector(
            new OpenLayers.Geometry.Point(2, 2));
        filter = new OpenLayers.Filter.Spatial({
            type: OpenLayers.Filter.Spatial.INTERSECTS,
            value: geom
        });
        res = filter.evaluate(feature);
        t.eq(res, true,
            "evaluates returns correct value when feature intersects bounds");
        not.filters = [filter];
        t.eq(not.evaluate(feature), !res, "not intersection");

        geom = bounds.toGeometry();
        feature = new OpenLayers.Feature.Vector(
            new OpenLayers.Geometry.Point(20, 20));
        filter = new OpenLayers.Filter.Spatial({
            type: OpenLayers.Filter.Spatial.INTERSECTS,
            value: geom
        });
        not.filters = [filter];
        res = filter.evaluate(feature);
        t.eq(res, false,
            "evaluates returns correct value when feature does not intersect bounds");
        t.eq(not.evaluate(feature), !res, "not non-intersection");


    }
    
    function test_clone(t) {
        
        t.plan(2);
        
        var bounds = new OpenLayers.Bounds(0, 0, 10, 10);
        var filter = new OpenLayers.Filter.Spatial({
            type: OpenLayers.Filter.Spatial.BBOX,
            value: bounds
        });
        
        var clone = filter.clone();
        
        // modify the original
        filter.value.bottom = -100;
        
        t.eq(clone.type, OpenLayers.Filter.Spatial.BBOX, "clone has proper type");
        t.eq(clone.value.toBBOX(), "0,0,10,10", "clone has proper value");
        
        filter.destroy();
        clone.destroy();

    }

    
    </script> 
</head> 
<body> 
</body> 
</html>