summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/ExpressionTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/ExpressionTest.java')
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/ExpressionTest.java786
1 files changed, 0 insertions, 786 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/ExpressionTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/ExpressionTest.java
deleted file mode 100644
index 95bd651cff..0000000000
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/ExpressionTest.java
+++ /dev/null
@@ -1,786 +0,0 @@
-package com.mapbox.mapboxsdk.testapp.style;
-
-import android.graphics.Color;
-import android.support.test.runner.AndroidJUnit4;
-
-import com.mapbox.geojson.Feature;
-import com.mapbox.geojson.Point;
-import com.mapbox.mapboxsdk.geometry.LatLng;
-import com.mapbox.mapboxsdk.style.expressions.Expression;
-import com.mapbox.mapboxsdk.style.layers.CircleLayer;
-import com.mapbox.mapboxsdk.style.layers.FillLayer;
-import com.mapbox.mapboxsdk.style.layers.Layer;
-import com.mapbox.mapboxsdk.style.layers.SymbolLayer;
-import com.mapbox.mapboxsdk.style.sources.GeoJsonSource;
-import com.mapbox.mapboxsdk.style.sources.Source;
-import com.mapbox.mapboxsdk.style.types.Formatted;
-import com.mapbox.mapboxsdk.style.types.FormattedSection;
-import com.mapbox.mapboxsdk.testapp.R;
-import com.mapbox.mapboxsdk.testapp.activity.EspressoTest;
-import com.mapbox.mapboxsdk.testapp.utils.ResourceUtils;
-import com.mapbox.mapboxsdk.testapp.utils.TestingAsyncUtils;
-import com.mapbox.mapboxsdk.utils.ColorUtils;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.io.IOException;
-import java.util.HashMap;
-
-import timber.log.Timber;
-
-import static com.mapbox.mapboxsdk.style.expressions.Expression.FormatOption.formatFontScale;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.FormatOption.formatTextColor;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.FormatOption.formatTextFont;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.NumberFormatOption.currency;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.NumberFormatOption.locale;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.NumberFormatOption.maxFractionDigits;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.NumberFormatOption.minFractionDigits;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.collator;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.color;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.eq;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.exponential;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.format;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.formatEntry;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.get;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.interpolate;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.literal;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.match;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.number;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.numberFormat;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.rgb;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.rgba;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.step;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.stop;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.string;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.switchCase;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.toColor;
-import static com.mapbox.mapboxsdk.style.expressions.Expression.zoom;
-import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.circleColor;
-import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.fillAntialias;
-import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.fillColor;
-import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.fillOutlineColor;
-import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.textColor;
-import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.textField;
-import static com.mapbox.mapboxsdk.testapp.action.MapboxMapAction.invoke;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
-@RunWith(AndroidJUnit4.class)
-public class ExpressionTest extends EspressoTest {
-
- private FillLayer layer;
-
- @Test
- public void testConstantExpressionConversion() {
- validateTestSetup();
- setupStyle();
- Timber.i("camera function");
-
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- // create color expression
- Expression inputExpression = rgba(255.0f, 0.0f, 0.0f, 1.0f);
-
- // set color expression
- layer.setProperties(
- fillColor(inputExpression)
- );
-
- // get color value
- int color = layer.getFillColor().getColorInt();
-
- // compare
- assertEquals("input expression should match", Color.RED, color);
- });
- }
-
- @Test
- public void testGetExpressionWrapping() {
- validateTestSetup();
- setupStyle();
- Timber.i("camera function");
-
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- // create get expression
- Expression inputExpression = get("fill");
-
- // set get expression
- layer.setProperties(
- fillColor(inputExpression)
- );
-
- // get actual expression
- Expression actualExpression = layer.getFillColor().getExpression();
-
- // create wrapped expected expression
- Expression expectedExpression = toColor(get("fill"));
-
- // compare
- assertEquals("input expression should match", expectedExpression, actualExpression);
- });
- }
-
- @Test
- public void testCameraFunction() {
- validateTestSetup();
- setupStyle();
- Timber.i("camera function");
-
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- // create camera function expression
- Expression inputExpression = interpolate(
- exponential(0.5f), zoom(),
- stop(1.0f, rgba(255.0f, 0.0f, 0.0f, 1.0f)),
- stop(5.0f, rgba(0.0f, 0.0f, 255.0f, 1.0f)),
- stop(10.0f, rgba(0.0f, 255.0f, 0.0f, 1.0f))
- );
-
- // set camera function expression
- layer.setProperties(
- fillColor(inputExpression)
- );
-
- // get camera function expression
- Expression outputExpression = layer.getFillColor().getExpression();
-
- // compare
- assertEquals("input expression should match", inputExpression, outputExpression);
- });
- }
-
- @Test
- public void testSourceFunction() {
- validateTestSetup();
- setupStyle();
- Timber.i("camera function");
-
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- // create camera function expression
- Expression inputExpression = toColor(get("fill"));
-
- // set camera function expression
- layer.setProperties(
- fillColor(inputExpression)
- );
-
- // get camera function expression
- Expression outputExpression = layer.getFillColor().getExpression();
-
- // compare
- assertEquals("input expression should match", inputExpression, outputExpression);
- });
- }
-
- @Test
- public void testCompositeFunction() {
- validateTestSetup();
- setupStyle();
- Timber.i("camera function");
-
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- // create camera function expression
- Expression inputExpression = step(zoom(),
- rgba(255.0f, 255.0f, 255.0f, 1.0f),
- stop(7.0f, match(
- string(get("name")),
- literal("Westerpark"), rgba(255.0f, 0.0f, 0.0f, 1.0f),
- rgba(255.0f, 255.0f, 255.0f, 1.0f)
- )),
- stop(8.0f, match(
- string(get("name")),
- literal("Westerpark"), rgba(0.0f, 0.0f, 255.0f, 1.0f),
- rgba(255.0f, 255.0f, 255.0f, 1.0f)
- ))
- );
-
- // set camera function expression
- layer.setProperties(
- fillColor(inputExpression)
- );
-
- // get camera function expression
- Expression outputExpression = layer.getFillColor().getExpression();
-
- // compare
- assertEquals("input expression should match", inputExpression, outputExpression);
- });
- }
-
- @Test
- public void testLiteralProperty() {
- validateTestSetup();
- setupStyle();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- layer.setProperties(
- fillColor(literal("#4286f4"))
- );
- });
- }
-
- @Test
- public void testLiteralMatchExpression() {
- validateTestSetup();
- setupStyle();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- Expression expression = match(literal("something"), literal(0f),
- stop("1", get("1")),
- stop("2", get("2")),
- stop("3", get("3")),
- stop("4", get("4"))
- );
-
- layer.setProperties(
- fillColor(expression)
- );
- expression.toArray();
- });
- }
-
- @Test
- public void testCollatorExpression() {
- validateTestSetup();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- LatLng latLng = new LatLng(51, 17);
-
- Expression expression1 = eq(literal("Łukasz"), literal("lukasz"), collator(true, true));
- Expression expression2 = eq(literal("Łukasz"), literal("lukasz"), collator(literal(false), eq(literal(1),
- literal(1)), literal("en")));
- Expression expression3 = eq(literal("Łukasz"), literal("lukasz"), collator(literal(false), eq(literal(2),
- literal(1))));
-
- mapboxMap.getStyle()
- .addSource(new GeoJsonSource("source", Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude())));
- Layer layer = new CircleLayer("layer", "source")
- .withProperties(circleColor(
- switchCase(
- expression1, literal(ColorUtils.colorToRgbaString(Color.GREEN)),
- literal(ColorUtils.colorToRgbaString(Color.RED))
- )
- ));
- mapboxMap.getStyle().addLayer(layer);
- TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView);
- assertFalse(mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer")
- .isEmpty());
-
- layer.setProperties(circleColor(
- switchCase(
- expression2, literal(ColorUtils.colorToRgbaString(Color.GREEN)),
- literal(ColorUtils.colorToRgbaString(Color.RED))
- )
- ));
- TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView);
- assertFalse(mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer")
- .isEmpty());
-
- layer.setProperties(circleColor(
- switchCase(
- expression3, literal(ColorUtils.colorToRgbaString(Color.GREEN)),
- literal(ColorUtils.colorToRgbaString(Color.RED))
- )
- ));
- TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView);
- assertFalse(mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer")
- .isEmpty());
- });
- }
-
- @Test
- public void testConstFormatExpression() {
- validateTestSetup();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- LatLng latLng = new LatLng(51, 17);
- mapboxMap.getStyle()
- .addSource(new GeoJsonSource("source", Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude())));
- SymbolLayer layer = new SymbolLayer("layer", "source");
- mapboxMap.getStyle().addLayer(layer);
-
- Expression expression = format(
- formatEntry("test")
- );
- layer.setProperties(textField(expression));
- TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView);
-
- assertFalse(mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer")
- .isEmpty());
- assertNull(layer.getTextField().getExpression());
- assertEquals(new Formatted(new FormattedSection("test")), layer.getTextField().getValue());
- });
- }
-
- @Test
- public void testConstFormatExpressionFontScaleParam() {
- validateTestSetup();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- LatLng latLng = new LatLng(51, 17);
- mapboxMap.getStyle()
- .addSource(new GeoJsonSource("source", Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude())));
- SymbolLayer layer = new SymbolLayer("layer", "source");
- mapboxMap.getStyle().addLayer(layer);
-
- Expression expression = format(
- formatEntry("test", formatFontScale(1.75))
- );
- layer.setProperties(textField(expression));
- TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView);
-
- assertFalse(mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer")
- .isEmpty());
- assertNull(layer.getTextField().getExpression());
- assertEquals(new Formatted(new FormattedSection("test", 1.75)), layer.getTextField().getValue());
- });
- }
-
- @Test
- public void testConstFormatExpressionTextFontParam() {
- validateTestSetup();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- LatLng latLng = new LatLng(51, 17);
- mapboxMap.getStyle()
- .addSource(new GeoJsonSource("source", Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude())));
- SymbolLayer layer = new SymbolLayer("layer", "source");
- mapboxMap.getStyle().addLayer(layer);
-
- Expression expression = format(
- formatEntry(
- literal("test"),
- formatTextFont(new String[] {"DIN Offc Pro Regular", "Arial Unicode MS Regular"})
- )
- );
- layer.setProperties(textField(expression));
- TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView);
-
- assertFalse(
- mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer").isEmpty()
- );
- assertNull(layer.getTextField().getExpression());
- assertEquals(new Formatted(
- new FormattedSection("test",
- new String[] {"DIN Offc Pro Regular", "Arial Unicode MS Regular"})
- ), layer.getTextField().getValue());
- });
- }
-
- @Test
- public void testConstFormatExpressionTextColorParam() {
- validateTestSetup();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- LatLng latLng = new LatLng(51, 17);
- mapboxMap.getStyle()
- .addSource(new GeoJsonSource("source", Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude())));
- SymbolLayer layer = new SymbolLayer("layer", "source");
- mapboxMap.getStyle().addLayer(layer);
-
- Expression expression = format(
- formatEntry(
- literal("test"),
- formatTextColor(literal("yellow"))
- )
- );
- layer.setProperties(textField(expression));
- TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView);
-
- assertFalse(
- mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer").isEmpty()
- );
- assertNull(layer.getTextField().getExpression());
- assertEquals(new Formatted(
- new FormattedSection("test", null, null, "rgba(255,255,0,1)")
- ), layer.getTextField().getValue());
- });
- }
-
- @Test
- public void testConstFormatExpressionAllParams() {
- validateTestSetup();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- LatLng latLng = new LatLng(51, 17);
- mapboxMap.getStyle()
- .addSource(new GeoJsonSource("source", Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude())));
- SymbolLayer layer = new SymbolLayer("layer", "source");
- mapboxMap.getStyle().addLayer(layer);
-
- Expression expression = format(
- formatEntry(
- "test",
- formatFontScale(0.5),
- formatTextFont(new String[] {"DIN Offc Pro Regular", "Arial Unicode MS Regular"}),
- formatTextColor(rgb(126, 0, 0))
- )
- );
- layer.setProperties(textField(expression));
- TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView);
-
- assertFalse(
- mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer").isEmpty()
- );
- assertNull(layer.getTextField().getExpression());
- assertEquals(new Formatted(
- new FormattedSection("test",
- 0.5,
- new String[] {"DIN Offc Pro Regular", "Arial Unicode MS Regular"},
- "rgba(126,0,0,1)")
- ), layer.getTextField().getValue());
- });
- }
-
- @Test
- public void testConstFormatExpressionMultipleInputs() {
- validateTestSetup();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- LatLng latLng = new LatLng(51, 17);
- mapboxMap.getStyle()
- .addSource(new GeoJsonSource("source", Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude())));
- SymbolLayer layer = new SymbolLayer("layer", "source");
- mapboxMap.getStyle().addLayer(layer);
-
- Expression expression = format(
- formatEntry(
- "test",
- formatFontScale(1.5),
- formatTextFont(new String[] {"DIN Offc Pro Regular", "Arial Unicode MS Regular"})
- ),
- formatEntry("\ntest2", formatFontScale(2), formatTextColor(Color.BLUE)),
- formatEntry("\ntest3", formatFontScale(2.5), formatTextColor(toColor(literal("rgba(0, 128, 255, 0.5)"))))
- );
- layer.setProperties(textField(expression));
- TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView);
-
- assertFalse(
- mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer").isEmpty()
- );
- assertNull(layer.getTextField().getExpression());
- assertEquals(new Formatted(
- new FormattedSection("test", 1.5,
- new String[] {"DIN Offc Pro Regular", "Arial Unicode MS Regular"}),
- new FormattedSection("\ntest2", 2.0, null, "rgba(0,0,255,1)"),
- new FormattedSection("\ntest3", 2.5, null, "rgba(0,128,255,0.5)")
- ), layer.getTextField().getValue());
- });
- }
-
- @Test
- public void testVariableFormatExpression() {
- validateTestSetup();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- LatLng latLng = new LatLng(51, 17);
- Feature feature = Feature.fromGeometry(Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude()));
- feature.addStringProperty("test_property", "test");
- feature.addNumberProperty("test_property_number", 1.5);
- feature.addStringProperty("test_property_color", "green");
- mapboxMap.getStyle().addSource(new GeoJsonSource("source", feature));
- SymbolLayer layer = new SymbolLayer("layer", "source");
- mapboxMap.getStyle().addLayer(layer);
-
- Expression expression = format(
- formatEntry(
- get("test_property"),
- Expression.FormatOption.formatFontScale(number(get("test_property_number"))),
- formatTextFont(new String[] {"Arial Unicode MS Regular", "DIN Offc Pro Regular"}),
- formatTextColor(toColor(get("test_property_color")))
- )
- );
- layer.setProperties(textField(expression));
- TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView);
-
- assertFalse(mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer")
- .isEmpty());
- assertEquals(expression, layer.getTextField().getExpression());
- assertNull(layer.getTextField().getValue());
- });
- }
-
- @Test
- public void testVariableFormatExpressionMultipleInputs() {
- validateTestSetup();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- LatLng latLng = new LatLng(51, 17);
- Feature feature = Feature.fromGeometry(Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude()));
- feature.addStringProperty("test_property", "test");
- feature.addNumberProperty("test_property_number", 1.5);
- feature.addStringProperty("test_property_color", "rgba(0, 255, 0, 1)");
- mapboxMap.getStyle().addSource(new GeoJsonSource("source", feature));
- SymbolLayer layer = new SymbolLayer("layer", "source");
- mapboxMap.getStyle().addLayer(layer);
-
- Expression expression = format(
- formatEntry(
- get("test_property"),
- formatFontScale(1.25),
- formatTextFont(new String[] {"Arial Unicode MS Regular", "DIN Offc Pro Regular"}),
- formatTextColor(toColor(get("test_property_color")))
- ),
- formatEntry("\ntest2", formatFontScale(2))
- );
- layer.setProperties(textField(expression), textColor("rgba(128, 0, 0, 1)"));
- TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView);
-
- assertFalse(mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer")
- .isEmpty());
- assertEquals(expression, layer.getTextField().getExpression());
- assertNull(layer.getTextField().getValue());
- });
- }
-
- @Test
- public void testFormatExpressionPlainTextCoercion() {
- validateTestSetup();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- LatLng latLng = new LatLng(51, 17);
- mapboxMap.getStyle()
- .addSource(new GeoJsonSource("source", Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude())));
- SymbolLayer layer = new SymbolLayer("layer", "source");
- mapboxMap.getStyle().addLayer(layer);
-
- layer.setProperties(textField("test"));
- TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView);
-
- assertFalse(mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer")
- .isEmpty());
- assertNull(layer.getTextField().getExpression());
- assertEquals(new Formatted(
- new FormattedSection("test")), layer.getTextField().getValue());
- });
- }
-
- @Test
- public void testTextFieldFormattedArgument() {
- validateTestSetup();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- LatLng latLng = new LatLng(51, 17);
- mapboxMap.getStyle()
- .addSource(new GeoJsonSource("source", Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude())));
- SymbolLayer layer = new SymbolLayer("layer", "source");
- mapboxMap.getStyle().addLayer(layer);
-
- Formatted formatted = new Formatted(
- new FormattedSection("test", 1.5),
- new FormattedSection("\ntest", 0.5, new String[] {"Arial Unicode MS Regular", "DIN Offc Pro Regular"}),
- new FormattedSection("test", null, null, "rgba(0,255,0,1)")
- );
- layer.setProperties(textField(formatted), textColor("rgba(128,0,0,1)"));
- TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView);
-
- assertFalse(mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer")
- .isEmpty());
- assertNull(layer.getTextField().getExpression());
- assertEquals(formatted, layer.getTextField().getValue());
- });
- }
-
- @Test
- public void testNumberFormatCurrencyExpression() {
- validateTestSetup();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- LatLng latLng = new LatLng(51, 17);
- mapboxMap.getStyle()
- .addSource(new GeoJsonSource("source", Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude())));
- SymbolLayer layer = new SymbolLayer("layer", "source");
- mapboxMap.getStyle().addLayer(layer);
-
- layer.setProperties(
- textField(
- numberFormat(12.345, locale("en-US"), currency("USD"))
- )
- );
- TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView);
-
- assertFalse(mapboxMap.queryRenderedFeatures(
- mapboxMap.getProjection().toScreenLocation(latLng), "layer").isEmpty()
- );
- assertNull(layer.getTextField().getExpression());
- assertEquals("$12.35", layer.getTextField().getValue().getFormattedSections()[0].getText());
- });
- }
-
- @Test
- public void testNumberFormatMaxExpression() {
- validateTestSetup();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- LatLng latLng = new LatLng(51, 17);
- mapboxMap.getStyle()
- .addSource(new GeoJsonSource("source", Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude())));
- SymbolLayer layer = new SymbolLayer("layer", "source");
- mapboxMap.getStyle().addLayer(layer);
-
- layer.setProperties(
- textField(
- numberFormat(12.34567890, maxFractionDigits(5), minFractionDigits(0))
- )
- );
- TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView);
-
- assertFalse(mapboxMap.queryRenderedFeatures(
- mapboxMap.getProjection().toScreenLocation(latLng), "layer").isEmpty()
- );
- assertNull(layer.getTextField().getExpression());
- assertEquals("12.34568", layer.getTextField().getValue().getFormattedSections()[0].getText());
- });
- }
-
- @Test
- public void testNumberFormatMinExpression() {
- validateTestSetup();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- LatLng latLng = new LatLng(51, 17);
- mapboxMap.getStyle()
- .addSource(new GeoJsonSource("source", Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude())));
- SymbolLayer layer = new SymbolLayer("layer", "source");
- mapboxMap.getStyle().addLayer(layer);
-
- layer.setProperties(
- textField(
- numberFormat(12.0000001, maxFractionDigits(5), minFractionDigits(0))
- )
- );
- TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView);
-
- assertFalse(mapboxMap.queryRenderedFeatures(
- mapboxMap.getProjection().toScreenLocation(latLng), "layer").isEmpty()
- );
- assertNull(layer.getTextField().getExpression());
- assertEquals("12", layer.getTextField().getValue().getFormattedSections()[0].getText());
- });
- }
-
- @Test
- public void testNumberFormatLocaleExpression() {
- validateTestSetup();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- LatLng latLng = new LatLng(51, 17);
- mapboxMap.getStyle()
- .addSource(new GeoJsonSource("source", Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude())));
- SymbolLayer layer = new SymbolLayer("layer", "source");
- mapboxMap.getStyle().addLayer(layer);
-
- layer.setProperties(
- textField(
- numberFormat(12.0000001, locale("nl-BE"), maxFractionDigits(5), minFractionDigits(1))
- )
- );
- TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView);
-
- assertFalse(mapboxMap.queryRenderedFeatures(
- mapboxMap.getProjection().toScreenLocation(latLng), "layer").isEmpty()
- );
- assertNull(layer.getTextField().getExpression());
- assertEquals("12,0", layer.getTextField().getValue().getFormattedSections()[0].getText());
- });
- }
-
- @Test
- public void testNumberFormatNonConstantExpression() {
- validateTestSetup();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- LatLng latLng = new LatLng(51, 17);
- Feature feature = Feature.fromGeometry(Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude()));
- feature.addNumberProperty("number_value", 12.345678);
- feature.addStringProperty("locale_value", "nl-BE");
- feature.addNumberProperty("max_value", 5);
- feature.addNumberProperty("min_value", 1);
-
-
- mapboxMap.getStyle().addSource(new GeoJsonSource("source", feature));
- SymbolLayer layer = new SymbolLayer("layer", "source");
- mapboxMap.getStyle().addLayer(layer);
-
- Expression numberFormatExpression = numberFormat(
- number(number(get("number_value"))),
- locale(string(get("locale_value"))),
- maxFractionDigits(number(get("max_value"))),
- minFractionDigits(number(get("min_value")))
- );
-
- layer.setProperties(textField(numberFormatExpression));
- TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView);
-
- assertFalse(mapboxMap.queryRenderedFeatures(
- mapboxMap.getProjection().toScreenLocation(latLng), "layer").isEmpty()
- );
-
- assertNotNull(layer.getTextField().getExpression());
-
- // Expressions evaluated to string are wrapped by a format expression, take array index 1 to get original
- Object[] returnExpression = (Object[]) layer.getTextField().getExpression().toArray()[1];
- Object[] setExpression = numberFormatExpression.toArray();
- assertEquals("Number format should match",returnExpression[0], setExpression[0]);
- assertArrayEquals("Get value expression should match",
- (Object[]) returnExpression[1],
- (Object[]) setExpression[1]
- );
-
- // number format objects
- HashMap<String, Object> returnMap = (HashMap<String, Object>) returnExpression[2];
- HashMap<String, Object> setMap = (HashMap<String, Object>) returnExpression[2];
-
- assertArrayEquals("Number format min fraction digits should match ",
- (Object[]) returnMap.get("min-fraction-digits"),
- (Object[]) setMap.get("min-fraction-digits")
- );
-
- assertArrayEquals("Number format max fraction digits should match ",
- (Object[]) returnMap.get("max-fraction-digits"),
- (Object[]) setMap.get("max-fraction-digits")
- );
-
- assertArrayEquals("Number format min fraction digits should match ",
- (Object[]) returnMap.get("locale"),
- (Object[]) setMap.get("locale")
- );
- });
-
- }
-
- /**
- * Regression test for #15532
- */
- @Test
- public void testDoubleConversion() {
- validateTestSetup();
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- LatLng latLng = new LatLng(51, 17);
- mapboxMap.getStyle().addSource(
- new GeoJsonSource("source", Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude()))
- );
-
- CircleLayer layer = new CircleLayer("layer", "source");
- mapboxMap.getStyle().addLayer(layer);
-
- Expression input = interpolate(
- exponential(0.5f), zoom(),
- stop(-0.1, color(Color.RED)),
- stop(0, color(Color.BLUE))
- );
-
- layer.setProperties(circleColor(input));
-
- Expression output = layer.getCircleColor().getExpression();
- assertArrayEquals("Expression should match", input.toArray(), output.toArray());
- });
- }
-
- private void setupStyle() {
- invoke(mapboxMap, (uiController, mapboxMap) -> {
- // Add a source
- Source source;
- try {
- source = new GeoJsonSource("amsterdam-parks-source",
- ResourceUtils.readRawResource(rule.getActivity(), R.raw.amsterdam));
- mapboxMap.getStyle().addSource(source);
- } catch (IOException ioException) {
- return;
- }
-
- // Add a fill layer
- mapboxMap.getStyle().addLayer(layer = new FillLayer("amsterdam-parks-layer", source.getId())
- .withProperties(
- fillColor(rgba(0.0f, 0.0f, 0.0f, 0.5f)),
- fillOutlineColor(rgb(0, 0, 255)),
- fillAntialias(true)
- )
- );
- });
- }
-}