package org.smoothbuild.lang.function.base;
import static java.util.Arrays.asList;
import static org.smoothbuild.lang.function.base.Parameter.optionalParameter;
import static org.smoothbuild.lang.function.base.Parameter.requiredParameter;
import static org.smoothbuild.lang.type.Types.STRING;
import static org.testory.Testory.given;
import static org.testory.Testory.thenReturned;
import static org.testory.Testory.when;
import java.util.List;
import org.junit.Test;
import com.google.common.collect.ImmutableMap;
public class ParametersTest {
List<Parameter> parameters;
Parameter parameter1;
Parameter parameter2;
Parameter parameter3;
// filterRequiredParams()
@Test
public void filter_required_params_converts_empty_list_to_empty_list() throws Exception {
given(parameters = asList());
when(Parameters.filterRequiredParameters(parameters));
thenReturned(asList());
}
@Test
public void filter_required_params_omits_optional_param() throws Exception {
given(parameter1 = optionalParameter(STRING, "name"));
given(parameters = asList(parameter1));
when(Parameters.filterRequiredParameters(parameters));
thenReturned(asList());
}
@Test
public void filter_required_params_keeps_required_param() throws Exception {
given(parameter1 = requiredParameter(STRING, "name"));
given(parameters = asList(parameter1));
when(Parameters.filterRequiredParameters(parameters));
thenReturned(asList(parameter1));
}
@Test
public void filter_required_params_keeps_only_required_params() throws Exception {
given(parameter1 = requiredParameter(STRING, "name"));
given(parameter2 = optionalParameter(STRING, "name"));
given(parameter3 = requiredParameter(STRING, "name"));
given(parameters = asList(parameter1, parameter2, parameter3));
when(Parameters.filterRequiredParameters(parameters));
thenReturned(asList(parameter1, parameter3));
}
// filterRequiredParams()
@Test
public void filter_optional_params_converts_empty_list_to_empty_list() throws Exception {
given(parameters = asList());
when(Parameters.filterOptionalParameters(parameters));
thenReturned(asList());
}
@Test
public void filter_optional_params_omits_required_param() throws Exception {
given(parameter1 = requiredParameter(STRING, "name"));
given(parameters = asList(parameter1));
when(Parameters.filterOptionalParameters(parameters));
thenReturned(asList());
}
@Test
public void filter_optional_params_keeps_optional_param() throws Exception {
given(parameter1 = optionalParameter(STRING, "name"));
given(parameters = asList(parameter1));
when(Parameters.filterOptionalParameters(parameters));
thenReturned(asList(parameter1));
}
@Test
public void filter_optional_params_keeps_only_optional_params() throws Exception {
given(parameter1 = optionalParameter(STRING, "name"));
given(parameter2 = requiredParameter(STRING, "name"));
given(parameter3 = optionalParameter(STRING, "name"));
given(parameters = asList(parameter1, parameter2, parameter3));
when(Parameters.filterOptionalParameters(parameters));
thenReturned(asList(parameter1, parameter3));
}
// paramsToNames()
@Test
public void params_to_names() throws Exception {
given(parameter1 = optionalParameter(STRING, "name1"));
given(parameter2 = requiredParameter(STRING, "name2"));
given(parameter3 = optionalParameter(STRING, "name3"));
given(parameters = asList(parameter1, parameter2, parameter3));
when(Parameters.parametersToNames(parameters));
thenReturned(asList("name1", "name2", "name3"));
}
// paramsToMap()
@Test
public void params_to_map() throws Exception {
given(parameter1 = requiredParameter(STRING, "alpha"));
given(parameter2 = optionalParameter(STRING, "beta"));
given(parameter3 = optionalParameter(STRING, "gamma"));
given(parameters = asList(parameter1, parameter2, parameter3));
when(Parameters.parametersToMap(parameters));
thenReturned(ImmutableMap.of(parameter1.name(), parameter1, parameter2.name(), parameter2,
parameter3.name(), parameter3));
}
// sortedParams()
@Test
public void sorted_params_for_empty_list_returns_empty_list() throws Exception {
given(parameters = asList());
when(Parameters.sortedParameters(parameters));
thenReturned(asList());
}
@Test
public void sorted_params() throws Exception {
given(parameter1 = optionalParameter(STRING, "gamma"));
given(parameter2 = requiredParameter(STRING, "alpha"));
given(parameter3 = optionalParameter(STRING, "beta"));
given(parameters = asList(parameter1, parameter2, parameter3));
when(Parameters.sortedParameters(parameters));
thenReturned(asList(parameter2, parameter3, parameter1));
}
}