/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.core.el.mvel.datatype; import org.junit.Test; public abstract class AbstractScopedVarAssignmentDataTypePropagatorTestCase extends AbstractVarAssignmentDataTypePropagatorTestCase { protected final String variableName; public AbstractScopedVarAssignmentDataTypePropagatorTestCase(EnricherDataTypePropagator dataTypePropagator, String variableName) { super(dataTypePropagator); this.variableName = variableName; } @Test public void propagatesVarDataTypeUsingMapSyntax() throws Exception { doAssignmentDataTypePropagationTest(createAssignmentExpression("['" + PROPERTY_NAME + "']")); } @Test public void propagatesVarDataTypeUsingDotSyntax() throws Exception { doAssignmentDataTypePropagationTest(createAssignmentExpression("." + PROPERTY_NAME + "")); } @Test public void propagatesVarDataTypeUsingEscapedDotSyntax() throws Exception { doAssignmentDataTypePropagationTest(createAssignmentExpression(".'" + PROPERTY_NAME + "'")); } @Test public void doesNotChangesVarDataTypeUsingRecursiveMapSyntax() throws Exception { doInnerAssignmentDataTypePropagationTest(createAssignmentExpression("['" + PROPERTY_NAME + "']['" + INNER_PROPERTY_NAME + "']")); } @Test public void doesNotChangesVarDataTypeUsingRecursiveDotSyntax() throws Exception { doInnerAssignmentDataTypePropagationTest(createAssignmentExpression("." + PROPERTY_NAME + "." + INNER_PROPERTY_NAME)); } @Test public void doesNotChangesVarDataTypeUsingRecursiveEscapedDotSyntax() throws Exception { doInnerAssignmentDataTypePropagationTest(createAssignmentExpression(".'" + PROPERTY_NAME + "'.'" + INNER_PROPERTY_NAME + "'")); } private String createAssignmentExpression(String accessorExpression) { return variableName + accessorExpression + " = 'unused'"; } }