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>
|