diff options
author | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2019-11-12 14:33:09 +0200 |
---|---|---|
committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2019-11-12 16:41:56 +0200 |
commit | 85c93e7e8348226425e6229bfcf963899d14a4f0 (patch) | |
tree | f71016517e2c991e277c16b1ec7c1c40ff028eed | |
parent | ee38730eedbdae682ed1a8407392026c7eac2ee6 (diff) | |
download | qtlocation-mapboxgl-85c93e7e8348226425e6229bfcf963899d14a4f0.tar.gz |
[android] Update unit tests that use resolvedImage type
7 files changed, 54 insertions, 7 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/expressions/Expression.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/expressions/Expression.java index 34b3308809..ba1d9337a3 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/expressions/Expression.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/expressions/Expression.java @@ -4888,4 +4888,47 @@ public class Expression { } return objects; } + + /** + * Returns image expression for use in '*-pattern' and 'icon-image' layer properties. Compared to + * string literals that can be used to represent an image, image expression allows to determine an + * image's availability at runtime, thus, can be used in conditional <a href="https://docs.mapbox.com/mapbox-gl-js/style-spec/#expressions-coalesce">coalesce operator</a>. + * + * <p> + * Example usage: + * </p> + * <pre> + * {@code + * SymbolLayer symbolLayer = new SymbolLayer("layer-id", "source-id"); + * symbolLayer.setProperties( + * iconImage(image(get("key-to-feature"))) + * ); + * } + * </pre> + * + * <p> + * Example usage with coalesce operator: + * </p> + * <pre> + * {@code + * SymbolLayer symbolLayer = new SymbolLayer("layer-id", "source-id"); + * symbolLayer.setProperties( + * iconImage( + * coalesce( + * image(literal("maki-11")), + * image(literal("bicycle-15")), + * image(literal("default-icon")) + * ) + * ) + * ); + * } + * </pre> + * + * @param input expression input + * @return expression + * @see <a href="https://docs.mapbox.com/mapbox-gl-js/style-spec/#expressions-types-image">Image expression</a> + */ + public static Expression image(@NonNull Expression input) { + return new Expression("image", input); + } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/FillExtrusionLayerTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/FillExtrusionLayerTest.java index cdfd030f9b..4b936a4c92 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/FillExtrusionLayerTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/FillExtrusionLayerTest.java @@ -244,7 +244,7 @@ public class FillExtrusionLayerTest extends BaseLayerTest { assertNull(layer.getFillExtrusionPattern().getExpression()); // Set and Get - Expression expression = string(Expression.get("undefined")); + Expression expression = image(string(Expression.get("undefined"))); layer.setProperties(fillExtrusionPattern(expression)); assertEquals(layer.getFillExtrusionPattern().getExpression(), expression); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/FillLayerTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/FillLayerTest.java index f6e3cc8548..4e9dddc0a6 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/FillLayerTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/FillLayerTest.java @@ -319,7 +319,7 @@ public class FillLayerTest extends BaseLayerTest { assertNull(layer.getFillPattern().getExpression()); // Set and Get - Expression expression = string(Expression.get("undefined")); + Expression expression = image(string(Expression.get("undefined"))); layer.setProperties(fillPattern(expression)); assertEquals(layer.getFillPattern().getExpression(), expression); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/LineLayerTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/LineLayerTest.java index 5e00890f7f..4c8e70d3d1 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/LineLayerTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/LineLayerTest.java @@ -486,7 +486,7 @@ public class LineLayerTest extends BaseLayerTest { assertNull(layer.getLinePattern().getExpression()); // Set and Get - Expression expression = string(Expression.get("undefined")); + Expression expression = image(string(Expression.get("undefined"))); layer.setProperties(linePattern(expression)); assertEquals(layer.getLinePattern().getExpression(), expression); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/SymbolLayerTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/SymbolLayerTest.java index c65e37019b..02205b3c9e 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/SymbolLayerTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/SymbolLayerTest.java @@ -296,7 +296,7 @@ public class SymbolLayerTest extends BaseLayerTest { assertEquals(layer.getIconImage().getValue(), propertyValue); layer.setProperties(iconImage("{token}")); - assertEquals(layer.getIconImage().getExpression(), Expression.toString(Expression.get("token"))); + assertEquals(layer.getIconImage().getExpression(), image(Expression.toString(Expression.get("token")))); } @Test @@ -307,7 +307,7 @@ public class SymbolLayerTest extends BaseLayerTest { assertNull(layer.getIconImage().getExpression()); // Set and Get - Expression expression = string(Expression.get("undefined")); + Expression expression = image(string(Expression.get("undefined"))); layer.setProperties(iconImage(expression)); assertEquals(layer.getIconImage().getExpression(), expression); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/layer.junit.ejs b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/layer.junit.ejs index 1104cbed9d..141114c1a0 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/layer.junit.ejs +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/layer.junit.ejs @@ -151,6 +151,8 @@ public class <%- camelize(type) %>LayerTest extends BaseLayerTest { layer.setProperties(<%- camelizeWithLeadingLowercase(property.name) %>("{token}")); <% if (property.type === 'formatted') { -%> assertEquals(layer.get<%- camelize(property.name) %>().getExpression(), <%- defaultExpressionJava(property) %>(Expression.formatEntry(Expression.toString(Expression.get("token"))))); +<% } else if (property.type === 'resolvedImage') {-%> + assertEquals(layer.get<%- camelize(property.name) %>().getExpression(), <%- defaultExpressionJava(property) %>(Expression.toString(Expression.get("token")))); <% } else {-%> assertEquals(layer.get<%- camelize(property.name) %>().getExpression(), Expression.toString(Expression.get("token"))); <% } -%> @@ -169,6 +171,8 @@ public class <%- camelize(type) %>LayerTest extends BaseLayerTest { // Set and Get <% if (property.type === 'formatted') { -%> Expression expression = <%- defaultExpressionJava(property) %>(Expression.formatEntry(Expression.get("undefined"), FormatOption.formatFontScale(2.0), FormatOption.formatTextFont(new String[]{"Open Sans Regular", "Arial Unicode MS Regular"}))); +<% } else if (property.type === 'resolvedImage') { -%> + Expression expression = <%- defaultExpressionJava(property) %>(string(Expression.get("undefined"))); <% } else { -%> Expression expression = <%- defaultExpressionJava(property) %>(Expression.get("undefined")); <% } -%> diff --git a/platform/android/scripts/generate-style-code.js b/platform/android/scripts/generate-style-code.js index 9e07b36440..3265c161e4 100755 --- a/platform/android/scripts/generate-style-code.js +++ b/platform/android/scripts/generate-style-code.js @@ -179,9 +179,9 @@ global.defaultExpressionJava = function(property) { return 'number'; case 'formatted': return 'format'; + case 'resolvedImage': + return "image"; case 'string': - case 'image': - return "string"; case 'enum': return "string"; case 'color': |