/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.dynamic.data.mapping.expression;
import com.liferay.dynamic.data.mapping.expression.internal.DDMExpressionFactoryImpl;
import java.util.List;
import java.util.Map;
import org.junit.Assert;
import org.junit.Test;
/**
* @author Miguel Angelo Caldas Gallindo
*/
public class VariableDependenciesTest {
@Test
public void testVariableDependenciesMap() throws Exception {
DDMExpression<Number> ddmExpression =
_ddmExpressionFactory.createNumberDDMExpression(
"var1 + var2 + var3");
ddmExpression.setLongVariableValue("var1", 5L);
ddmExpression.setExpressionStringVariableValue("var2", "var1 + 3");
ddmExpression.setExpressionStringVariableValue("var3", "var2 + var1");
Map<String, VariableDependencies> variableDependenciesMap =
ddmExpression.getVariableDependenciesMap();
VariableDependencies var1VariableDependencies =
variableDependenciesMap.get("var1");
Assert.assertTrue(
hasAffectedVariableName(var1VariableDependencies, "var2"));
Assert.assertTrue(
hasAffectedVariableName(var1VariableDependencies, "var3"));
List<String> var1RequiredVariableNames =
var1VariableDependencies.getRequiredVariableNames();
Assert.assertTrue(var1RequiredVariableNames.isEmpty());
VariableDependencies var2VariableDependencies =
variableDependenciesMap.get("var2");
Assert.assertTrue(
hasRequiredVariableName(var2VariableDependencies, "var1"));
Assert.assertTrue(
hasAffectedVariableName(var2VariableDependencies, "var3"));
VariableDependencies var3VariableDependencies =
variableDependenciesMap.get("var3");
List<String> var3AffectedVariableNames =
var3VariableDependencies.getAffectedVariableNames();
Assert.assertTrue(var3AffectedVariableNames.isEmpty());
Assert.assertTrue(
hasRequiredVariableName(var3VariableDependencies, "var1"));
Assert.assertTrue(
hasRequiredVariableName(var3VariableDependencies, "var2"));
}
protected boolean hasAffectedVariableName(
VariableDependencies variableDependencies, String variableName) {
List<String> affectedVariableNames =
variableDependencies.getAffectedVariableNames();
return affectedVariableNames.contains(variableName);
}
protected boolean hasRequiredVariableName(
VariableDependencies variableDependencies, String variableName) {
List<String> requiredVariableNames =
variableDependencies.getRequiredVariableNames();
return requiredVariableNames.contains(variableName);
}
private final DDMExpressionFactory _ddmExpressionFactory =
new DDMExpressionFactoryImpl();
}