diff --git a/source/android/adaptivecards/src/androidTest/java/io/adaptivecards/objectmodel/FeatureRegistrationRenderTest.java b/source/android/adaptivecards/src/androidTest/java/io/adaptivecards/objectmodel/FeatureRegistrationRenderTest.java new file mode 100644 index 0000000000..3f2b4f9cc3 --- /dev/null +++ b/source/android/adaptivecards/src/androidTest/java/io/adaptivecards/objectmodel/FeatureRegistrationRenderTest.java @@ -0,0 +1,64 @@ +package io.adaptivecards.objectmodel; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.test.mock.MockContext; +import android.widget.LinearLayout; + +import junit.framework.Assert; + +import org.junit.Test; + +import io.adaptivecards.renderer.AdaptiveCardRenderer; +import io.adaptivecards.renderer.RenderedAdaptiveCard; +import io.adaptivecards.renderer.registration.CardRendererRegistration; + +public class FeatureRegistrationRenderTest +{ + + static { + System.loadLibrary("adaptivecards-native-lib"); + } + + @Test + public void TestDefaultRendering() throws Exception + { + final String cardJson = + "{\"$schema\": \"http://adaptivecards.io/schemas/adaptive-card.json\"," + + "\"type\": \"AdaptiveCard\"," + + "\"version\": \"1.0\"," + + "\"body\": [{\"type\": \"TextBlock\",\"text\": \"This is some text\"}]" + + "}"; + + HostConfig hostConfig = new HostConfig(); + + ParseContext parseContext = new ParseContext(); + ParseResult parseResult = AdaptiveCard.DeserializeFromString(cardJson, AdaptiveCardRenderer.VERSION, parseContext); + Context context = InstrumentationRegistry.getTargetContext(); + AdaptiveCardRenderer.getInstance().render(context, null, parseResult.GetAdaptiveCard(), null, hostConfig); + } + + @Test + public void TestFeatureRegistrationRendering() throws Exception + { + final String cardJson = + "{\"$schema\": \"http://adaptivecards.io/schemas/adaptive-card.json\"," + + "\"type\": \"AdaptiveCard\"," + + "\"version\": \"1.0\"," + + "\"body\": [{\"type\": \"TextBlock\",\"text\": \"This is some text\"}]" + + "}"; + + HostConfig hostConfig = new HostConfig(); + + ParseContext parseContext = new ParseContext(); + ParseResult parseResult = AdaptiveCard.DeserializeFromString(cardJson, AdaptiveCardRenderer.VERSION, parseContext); + Context context = InstrumentationRegistry.getTargetContext(); + + FeatureRegistration featureRegistration = new FeatureRegistration(); + featureRegistration.AddFeature("featureName", "1.0"); + CardRendererRegistration.getInstance().registerFeatureRegistration(featureRegistration); + + AdaptiveCardRenderer.getInstance().render(context, null, parseResult.GetAdaptiveCard(), null, hostConfig); + } + +} diff --git a/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/ActionLayoutRenderer.java b/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/ActionLayoutRenderer.java index 38f0e25d45..75e63895d3 100644 --- a/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/ActionLayoutRenderer.java +++ b/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/ActionLayoutRenderer.java @@ -182,7 +182,7 @@ else if ((fallbackActionElement = BaseActionElement.dynamic_cast(fallbackElement throw new AdaptiveFallbackException(fallbackElement); } - if (!fallbackElement.MeetsRequirements(featureRegistration)) + if ((featureRegistration != null) && (!fallbackElement.MeetsRequirements(featureRegistration))) { throw new AdaptiveFallbackException(fallbackElement, featureRegistration); } diff --git a/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/registration/CardRendererRegistration.java b/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/registration/CardRendererRegistration.java index 38652934ca..b4a61d8db4 100644 --- a/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/registration/CardRendererRegistration.java +++ b/source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/registration/CardRendererRegistration.java @@ -361,7 +361,7 @@ else if ((fallbackCardElement = BaseCardElement.dynamic_cast(fallbackElement)) = throw new AdaptiveFallbackException(fallbackCardElement); } - if (!fallbackElement.MeetsRequirements(featureRegistration)) + if ((featureRegistration != null) && (!fallbackElement.MeetsRequirements(featureRegistration))) { throw new AdaptiveFallbackException(fallbackCardElement, featureRegistration); }