Correcting or and adding not
Previously, OR filters always returned true (fixes #500).
This commit is contained in:
97
test/spec/ol/filter/logicalfilter.test.js
Normal file
97
test/spec/ol/filter/logicalfilter.test.js
Normal file
@@ -0,0 +1,97 @@
|
||||
goog.provide('ol.test.filter.Logical');
|
||||
|
||||
|
||||
describe('ol.filter.Logical', function() {
|
||||
|
||||
var OR = ol.filter.LogicalOperator.OR;
|
||||
var AND = ol.filter.LogicalOperator.AND;
|
||||
var NOT = ol.filter.LogicalOperator.NOT;
|
||||
var include = new ol.filter.Filter(function() {return true});
|
||||
var exclude = new ol.filter.Filter(function() {return false});
|
||||
|
||||
var apple = new ol.Feature({});
|
||||
var orange = new ol.Feature({});
|
||||
var duck = new ol.Feature({});
|
||||
|
||||
var isApple = new ol.filter.Filter(function(feature) {
|
||||
return feature === apple;
|
||||
});
|
||||
var isOrange = new ol.filter.Filter(function(feature) {
|
||||
return feature === orange;
|
||||
});
|
||||
var isDuck = new ol.filter.Filter(function(feature) {
|
||||
return feature === duck;
|
||||
});
|
||||
|
||||
describe('constructor', function() {
|
||||
it('creates a new filter', function() {
|
||||
var filter = new ol.filter.Logical([include, exclude], OR);
|
||||
expect(filter).to.be.a(ol.filter.Logical);
|
||||
});
|
||||
});
|
||||
|
||||
describe('#operator', function() {
|
||||
it('can be OR', function() {
|
||||
var filter = new ol.filter.Logical([include, exclude], OR);
|
||||
expect(filter.operator).to.be(OR);
|
||||
});
|
||||
|
||||
it('can be AND', function() {
|
||||
var filter = new ol.filter.Logical([include, exclude], AND);
|
||||
expect(filter.operator).to.be(AND);
|
||||
});
|
||||
|
||||
it('can be NOT', function() {
|
||||
var filter = new ol.filter.Logical([include], NOT);
|
||||
expect(filter.operator).to.be(NOT);
|
||||
});
|
||||
});
|
||||
|
||||
describe('#applies', function() {
|
||||
|
||||
it('works for OR', function() {
|
||||
var isFruit = new ol.filter.Logical([isApple, isOrange], OR);
|
||||
|
||||
expect(isApple.applies(apple)).to.be(true);
|
||||
expect(isOrange.applies(apple)).to.be(false);
|
||||
expect(isFruit.applies(apple)).to.be(true);
|
||||
|
||||
expect(isApple.applies(duck)).to.be(false);
|
||||
expect(isOrange.applies(duck)).to.be(false);
|
||||
expect(isFruit.applies(duck)).to.be(false);
|
||||
});
|
||||
|
||||
it('works for AND', function() {
|
||||
expect(include.applies(apple)).to.be(true);
|
||||
expect(isApple.applies(apple)).to.be(true);
|
||||
expect(isDuck.applies(apple)).to.be(false);
|
||||
|
||||
var pass = new ol.filter.Logical([include, isApple], AND);
|
||||
expect(pass.applies(apple)).to.be(true);
|
||||
|
||||
var fail = new ol.filter.Logical([isApple, isDuck], AND);
|
||||
expect(fail.applies(apple)).to.be(false);
|
||||
});
|
||||
|
||||
it('works for NOT', function() {
|
||||
expect(isApple.applies(apple)).to.be(true);
|
||||
expect(isDuck.applies(apple)).to.be(false);
|
||||
expect(isDuck.applies(duck)).to.be(true);
|
||||
expect(isDuck.applies(apple)).to.be(false);
|
||||
|
||||
var notApple = new ol.filter.Logical([isApple], NOT);
|
||||
expect(notApple.applies(apple)).to.be(false);
|
||||
expect(notApple.applies(duck)).to.be(true);
|
||||
|
||||
var notDuck = new ol.filter.Logical([isDuck], NOT);
|
||||
expect(notDuck.applies(apple)).to.be(true);
|
||||
expect(notDuck.applies(duck)).to.be(false);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
goog.require('ol.Feature');
|
||||
goog.require('ol.filter.Filter');
|
||||
goog.require('ol.filter.Logical');
|
||||
goog.require('ol.filter.LogicalOperator');
|
||||
Reference in New Issue
Block a user