summaryrefslogtreecommitdiff
path: root/platform/node/test/expression.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'platform/node/test/expression.test.js')
-rw-r--r--platform/node/test/expression.test.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/platform/node/test/expression.test.js b/platform/node/test/expression.test.js
new file mode 100644
index 0000000000..c243ba1e0e
--- /dev/null
+++ b/platform/node/test/expression.test.js
@@ -0,0 +1,52 @@
+'use strict';
+
+var suite = require('../../../mapbox-gl-js/test/integration').expression;
+var mbgl = require('../index');
+
+var tests;
+
+if (process.argv[1] === __filename && process.argv.length > 2) {
+ tests = process.argv.slice(2);
+}
+
+suite.run('native', {tests: tests}, (fixture) => {
+ const compileResult = {};
+ const testResult = {
+ compileResult
+ };
+
+ try {
+ const expression = new mbgl.Expression(fixture.expression);
+ compileResult.result = 'success';
+ compileResult.isFeatureConstant = expression.isFeatureConstant();
+ compileResult.isZoomConstant = expression.isZoomConstant();
+ compileResult.type = expression.getType();
+
+ if (fixture.evaluate) {
+ const evaluateResults = [];
+ for (const input of fixture.evaluate) {
+ const zoom = typeof input[0].zoom === 'number' ?
+ input[0].zoom : -1;
+
+ const feature = Object.assign({
+ type: 'Feature',
+ properties: {},
+ geometry: { type: 'Unknown', coordinates: [] }
+ }, input[1])
+
+ const output = expression.evaluate(zoom, feature);
+ evaluateResults.push(output);
+ }
+
+ if (evaluateResults.length) {
+ testResult.evaluateResults = evaluateResults;
+ }
+ }
+ } catch (e) {
+ compileResult.result = 'error';
+ compileResult.errors = [e.message];
+ }
+
+ return testResult;
+});
+