From 452b92f021276e38beef3446717ad7cfc9e5940f Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Tue, 10 Oct 2017 13:33:37 -0700 Subject: [PATCH] Add tests for any/all in filters --- src/style-spec/feature_filter/index.js | 2 +- test/unit/style-spec/feature_filter.test.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/style-spec/feature_filter/index.js b/src/style-spec/feature_filter/index.js index 6b8e66ccf47..d762373ca96 100644 --- a/src/style-spec/feature_filter/index.js +++ b/src/style-spec/feature_filter/index.js @@ -33,7 +33,7 @@ function isExpressionFilter(filter) { case 'any': case 'all': for (const f of filter.slice(1)) { - if (!isExpressionFilter(f)) { + if (!isExpressionFilter(f) && typeof f !== 'boolean') { return false; } } diff --git a/test/unit/style-spec/feature_filter.test.js b/test/unit/style-spec/feature_filter.test.js index 716439b0c62..90535437101 100644 --- a/test/unit/style-spec/feature_filter.test.js +++ b/test/unit/style-spec/feature_filter.test.js @@ -25,6 +25,18 @@ test('expression, compare two properties', (t) => { t.end(); }); +test('expression, any/all', (t) => { + t.equal(filter(['all'])(), true); + t.equal(filter(['all', true])(), true); + t.equal(filter(['all', true, false])(), false); + t.equal(filter(['all', true, true])(), true); + t.equal(filter(['any'])(), false); + t.equal(filter(['any', true])(), true); + t.equal(filter(['any', true, false])(), true); + t.equal(filter(['any', false, false])(), false); + t.end(); +}); + test('expression, type error', (t) => { t.throws(() => { filter(['==', ['number', ['get', 'x']], ['string', ['get', 'y']]]);